Files
kontor/flask/kontor/tysc/views.py
T
2025-01-08 22:31:20 +01:00

406 lines
12 KiB
Python

"""
Define BLueprint and Views for TradeYourSportsCards
"""
from flask import Blueprint, url_for, render_template, redirect, flash
from flask_login import login_required
from bson import ObjectId
from pymongo.errors import PyMongoError
from .forms import SportForm, TeamForm, PlayerForm, PositionForm
from .forms import ManufacturerForm
from .models import Sport, Team, Player, Position
from .models import Manufacturer, CardSet, ParallelSet, InsertSet, Card
TYSC = Blueprint('tysc', __name__)
@TYSC.route('/sport')
@login_required
def list_sports():
"""
List sports.
:return:
"""
sports = Sport.objects.all()
return render_template('tysc/sports.html', sports=sports, title="Sports")
@TYSC.route('/sport/edit/<sport_id>', methods=['GET', 'POST'])
@login_required
def edit_sport(sport_id):
"""
Edit a sport
"""
sport = Sport.objects.get({'_id': ObjectId(sport_id)})
form = SportForm(obj=sport)
if form.validate_on_submit():
sport.name = form.name.data
sport.save()
flash('You have successfully edited the sport.')
return redirect(url_for('tysc.list_sports'))
form.name.data = sport.name
return render_template('simpleform.html', action="Edit",
form=form, sport=sport, title="Edit Sport")
@TYSC.route('/sport/add', methods=['GET', 'POST'])
@login_required
def add_sport():
"""
Add a sport
:return:
"""
form = SportForm()
if form.validate_on_submit():
sport = Sport()
sport.name = form.name.data
try:
sport.save()
flash('You have successfully added a new sport.')
except PyMongoError:
flash('Error: sport name already exists.')
return redirect(url_for('tysc.list_sports'))
return render_template('simpleform.html', action="Add",
form=form, title="Add Sport")
@TYSC.route('/sport/delete/<sport_id>', methods=['GET', 'POST'])
@login_required
def delete_sport(sport_id):
"""
Delete a sport
:param sport_id:
:return:
"""
sport = Sport.objects.raw({'_id': ObjectId(sport_id)})
if sport:
sport.delete()
flash('You have successfully deleted the sport.')
return redirect(url_for('tysc.list_sports'))
@TYSC.route('/team')
@login_required
def list_teams():
"""
List teams.
:return:
"""
teams = Team.objects.all()
return render_template('tysc/teams.html', teams=teams, title="Teams")
@TYSC.route('/team/edit/<team_id>', methods=['GET', 'POST'])
@login_required
def edit_team(team_id):
"""
Edit a team
"""
team = Team.objects.get({'_id': ObjectId(team_id)})
form = TeamForm(obj=team)
form.sport.choices = [(s.pk, s.name) for s in Sport.objects.all()]
if team.sport:
form.sport.default = team.sport.pk
form.sport.process_data(team.sport.pk)
if form.validate_on_submit():
team.name = form.name.data
team.shortname = form.shortname.data
team.sport = form.sport.data
team.save()
flash('You have successfully edited the team.')
return redirect(url_for('tysc.list_teams'))
form.name.data = team.name
return render_template('simpleform.html', action="Edit",
form=form, team=team, title="Edit Team")
@TYSC.route('/team/add', methods=['GET', 'POST'])
@login_required
def add_team():
"""
Add a team
:return:
"""
form = TeamForm()
form.sport.choices = [(s.pk, s.name) for s in Sport.objects.all()]
if form.validate_on_submit():
team = Team()
team.name = form.name.data
team.shortname = form.shortname.data
team.sport = form.sport.data
try:
team.save()
flash('You have successfully added a new team.')
except PyMongoError:
flash('Error: team name already exists.')
return redirect(url_for('tysc.list_teams'))
return render_template('simpleform.html', action="Add",
form=form, title="Add Team")
@TYSC.route('/team/delete/<team_id>', methods=['GET', 'POST'])
@login_required
def delete_team(team_id):
"""
Delete a team
:param team_id:
:return:
"""
team = Team.objects.raw({'_id': ObjectId(team_id)})
if team:
team.delete()
return redirect(url_for('tysc.list_teams'))
@TYSC.route('/position')
@login_required
def list_positions():
"""
List positions.
:return:
"""
positions = Position.objects.all()
return render_template('tysc/positions.html', positions=positions, title="Positions")
@TYSC.route('/position/edit/<position_id>', methods=['GET', 'POST'])
@login_required
def edit_position(position_id):
"""
Edit a position
"""
position = Position.objects.get({'_id': ObjectId(position_id)})
form = PositionForm(obj=position)
form.sport.choices = [(s.pk, s.name) for s in Sport.objects.all()]
if position.sport:
form.sport.default = position.sport.pk
form.sport.process_data(position.sport.pk)
if form.validate_on_submit():
position.name = form.name.data
position.description = form.description.data
position.sport = form.sport.data
position.save()
flash('You have successfully edited the position.')
return redirect(url_for('tysc.list_positions'))
form.name.data = position.name
form.description.data = position.description
return render_template('simpleform.html', action="Edit",
form=form, position=position, title="Edit position")
@TYSC.route('/position/add', methods=['GET', 'POST'])
@login_required
def add_position():
"""
Add a position
:return:
"""
form = PositionForm()
form.sport.choices = [(s.pk, s.name) for s in Sport.objects.all()]
if form.validate_on_submit():
position = Position()
position.name = form.name.data
position.description = form.description.data
position.sport = form.sport.data
try:
position.save()
flash('You have successfully added a new position.')
except PyMongoError:
flash('Error: team position already exists.')
return redirect(url_for('tysc.list_positions'))
return render_template('simpleform.html', action="Add",
form=form, title="Add Position")
@TYSC.route('/position/delete/<position_id>', methods=['GET', 'POST'])
@login_required
def delete_position(position_id):
"""
Delete a position
:param position_id:
:return:
"""
position = Position.objects.raw({'_id': ObjectId(position_id)})
if position:
position.delete()
return redirect(url_for('tysc.list_positions'))
@TYSC.route('/player')
@login_required
def list_players():
"""
List players.
:return:
"""
players = Player.objects.all()
return render_template('tysc/players.html', players=players, title="Players")
@TYSC.route('/player/edit/<player_id>', methods=['GET', 'POST'])
@login_required
def edit_player(player_id):
"""
Edit a player
"""
player = Player.objects.get({'_id': ObjectId(player_id)})
form = PlayerForm(obj=player)
if form.validate_on_submit():
player.first_name = form.first_name.data
player.last_name = form.last_name.data
player.save()
flash('You have successfully edited the player.')
return redirect(url_for('tysc.list_players'))
form.first_name.data = player.first_name
form.last_name.data = player.last_name
return render_template('simpleform.html', action="Edit",
form=form, player=player, title="Edit player")
@TYSC.route('/player/add', methods=['GET', 'POST'])
@login_required
def add_player():
"""
Add a player
:return:
"""
form = PlayerForm()
if form.validate_on_submit():
player = Player()
player.first_name = form.first_name.data
player.last_name = form.last_name.data
try:
player.save()
flash('You have successfully added a new player.')
except PyMongoError:
flash('Error: player name already exists.')
return redirect(url_for('tysc.list_players'))
return render_template('simpleform.html', action="Add",
form=form, title="Add player")
@TYSC.route('/player/delete/<player_id>', methods=['GET', 'POST'])
@login_required
def delete_player(player_id):
"""
Delete a player
:param player_id:
:return:
"""
player = Player.objects.raw({'_id': ObjectId(player_id)})
if player:
player.delete()
return redirect(url_for('tysc.list_players'))
@TYSC.route('/manufacturer')
@login_required
def list_manufacturers():
"""
List manufacturers.
:return:
"""
manufacturers = Manufacturer.objects.all()
return render_template('tysc/manufacturers.html',
manufacturers=manufacturers,
title="Manufacturers")
@TYSC.route('/manufacturer/edit/<manufacturer_id>', methods=['GET', 'POST'])
@login_required
def edit_manufacturer(manufacturer_id):
"""
Edit a manufacturer
"""
manufacturer = Manufacturer.objects.get({'_id': ObjectId(manufacturer_id)})
form = ManufacturerForm(obj=manufacturer)
if form.validate_on_submit():
manufacturer.name = form.name.data
manufacturer.save()
flash('You have successfully edited the manufacturer.')
return redirect(url_for('tysc.list_manufacturers'))
form.name.data = manufacturer.name
return render_template('simpleform.html', action="Edit",
form=form, manufacturer=manufacturer, title="Edit Manufacturer")
@TYSC.route('/manufacturer/add', methods=['GET', 'POST'])
@login_required
def add_manufacturer():
"""
Add a manufacturer
:return:
"""
form = ManufacturerForm()
if form.validate_on_submit():
manufacturer = Manufacturer()
manufacturer.name = form.name.data
try:
manufacturer.save()
flash('You have successfully added a new manufacturer.')
except PyMongoError:
flash('Error: manufacturer name already exists.')
return redirect(url_for('tysc.list_manufacturers'))
return render_template('simpleform.html', action="Add",
form=form, title="Add Manufacturer")
@TYSC.route('/manufacturer/delete/<manufacturer_id>', methods=['GET', 'POST'])
@login_required
def delete_manufacturer(manufacturer_id):
"""
Delete a manufacturer
:param manufacturer_id:
:return:
"""
manufacturer = Manufacturer.objects.raw({'_id': ObjectId(manufacturer_id)})
if manufacturer:
manufacturer.delete()
flash('You have successfully deleted the manufacturer.')
return redirect(url_for('tysc.list_manufacturers'))
@TYSC.route('/cardsets')
@login_required
def list_card_sets():
"""
List card sets.
:return:
"""
card_sets = CardSet.objects.all()
return render_template('tysc/cardsets.html', card_sets=card_sets, title="Card Sets")
@TYSC.route('/parallelsets')
@login_required
def list_parallel_sets():
"""
List card sets.
:return:
"""
parallel_sets = ParallelSet.objects.all()
return render_template('tysc/parallelsets.html',
parallel_sets=parallel_sets, title="Parallel Sets")
@TYSC.route('/insertsets')
@login_required
def list_insert_sets():
"""
List card sets.
:return:
"""
insert_sets = InsertSet.objects.all()
return render_template('tysc/insertsets.html', insert_sets=insert_sets, title="Inserts")
@TYSC.route('/cards')
@login_required
def list_cards():
"""
List card sets.
:return:
"""
cards = Card.objects.all()
return render_template('tysc/cards.html', cards=cards, title="Cards")