406 lines
12 KiB
Python
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")
|