gcp-hockey-results/routes/_convenor.py
2020-12-11 10:31:57 +08:00

219 lines
11 KiB
Python

import pymysql
import os
from flask import render_template, request
from flask_basicauth import BasicAuth
from app import app
from dbWrite import sql_read, sql_write, sql_read_static, sql_write_static
from forms import addPlayerForm, addTeamForm, addClubForm, playerDbCreateForm, squadListForm
from tables import clubList, convenorSquadListTable, convenorFixtureList
from . import routes
from logging import error, info
import json
BASIC_AUTH_USERNAME = 'admin'
BASIC_AUTH_PASSWORD = '7GcGJTRs1DoCCNYCTGK2yeXmTGxtxonQ'
basic_auth = BasicAuth(app)
@routes.route('/convenor/clubList')
def convenorListClub():
clubTeam_lookup = "SELECT club, team, league from _clubTeams ORDER BY club, team"
rows = sql_read(clubTeam_lookup)
table = clubList(rows)
table.border = True
table.classes = ['table-striped', 'table-condensed', 'table-hover']
return render_template('_convenorClubList.html', table=table)
@routes.route('/convenor/clubAdd')
def convenorAddClub():
form = addClubForm()
return render_template('_convenorClubAdd.html', form = form)
@routes.route('/convenor/clubAddResult', methods=['POST'])
def convenorAddClubResult():
try:
_club = request.form['clubName']
club_lookup = "SELECT club FROM _clubTeams WHERE club='" + _club + "' GROUP BY club"
club_create = "INSERT INTO _clubTeams (club, team) VALUES ('" + _club + "', 'A')"
# validate that this data has been entered
if _club and request.method == 'POST':
clubExist = sql_read(club_lookup)
if clubExist:
return 'Club already exists - try adding a team instead'
else:
sql_write(club_create)
return render_template('_convenorClubAddResults.html', data=_club)
except Exception as e:
print(e)
@routes.route('/convenor/teamAdd')
def convenorAddTeam():
clubs_query = "SELECT club FROM _clubTeams GROUP BY club ORDER BY club"
clubs = sql_read(clubs_query)
form = addTeamForm()
return render_template('_convenorTeamAdd.html', data=clubs, form=form)
@routes.route('/convenor/teamAddResult', methods=['POST'])
def convenorAddTeamResult():
try:
_club = request.form['clubName']
_team = request.form['teamName']
clubTeam_lookup = "SELECT club, team FROM _clubTeams WHERE club='" + _club + "' AND team='" + _team + "'"
clubTeam_create = "INSERT INTO _clubTeams (club, team) VALUES ('" + _club + "', '" + _team + "')"
if _club and _team and request.method == 'POST':
teamExist = sql_read(clubTeam_lookup)
if teamExist:
return 'Team already exists in the database'
else:
sql_write(clubTeam_create)
return render_template('_convenorTeamAddResults.html', club=_club, team=_team)
except Exception as e:
print(e)
@routes.route('/convenor/playerDbCreate')
def playerDbCreate():
club_lookup = "SELECT club FROM _clubTeams GROUP BY club ORDER BY club"
clubs = sql_read(club_lookup)
form = playerDbCreateForm()
return render_template('_convenorPlayerDbCreate.html', data=clubs, form=form)
@routes.route('/convenor/playerDbCreateResults', methods=['POST'])
def playerDbCreateResults():
try:
_club = request.form['clubName']
# _year = request.form['year']
_year = "2018"
playerTable_create = "CREATE TABLE IF NOT EXISTS _" + _club + "_players (playerTeam varchar(6) NOT NULL, playerForenames varchar(50) NOT NULL, playerSurname varchar(30) NOT NULL, playerNickName varchar(30), playerChineseName varchar(10) CHARACTER SET utf8, playerEmail varchar(255) NOT NULL, playerDob DATE NOT NULL, playerHkid varchar(20) NOT NULL, playerNumber smallint NOT NULL, playerTelNumber varchar(30) NOT NULL, PRIMARY KEY (playerNumber))"
if _club and request.method == 'POST':
sql_write(playerTable_create)
return render_template('_convenorPlayerDbCreateResults.html', club=_club, year=_year)
except Exception as e:
print(e)
@routes.route('/convenor/playerAdd')
def convenorAddPlayer():
clubLogo_lookup = "SELECT hockeyClub, logoURL FROM mensHockeyClubs ORDER BY hockeyClub"
clubs = sql_read_static(clubLogo_lookup)
form = addPlayerForm()
form.playerClub.choices = [(club['hockeyClub'], club['hockeyClub']) for club in clubs]
clubLogo = clubs[0]['logoURL']
return render_template('_convenorPlayerAdd.html', form=form, clubLogo=clubLogo)
@routes.route('/convenor/playerAddResult', methods=['POST'])
def convenorAddPlayerResult():
try:
# _year = request.form['year']
_year = "2018"
_club = request.form['playerClub']
_team = request.form['playerTeam']
_playerForename = request.form['playerForenames']
_surname = request.form['playerSurnames']
_playerSurname = _surname.replace("'", "\\'")
_playerNickname = request.form['playerNickname']
_playerChineseName = request.form['playerChineseName']
_playerChineseName_enc = _playerChineseName.encode("utf-8")
_playerEmail = request.form['playerEmailAddress']
_playerDob = request.form['playerDob']
_playerHkid = request.form['playerHkid']
_playerNumber = request.form['playerNumber']
_playerTelNumber = request.form['playerTelNumber']
playerRecord_create = "INSERT INTO _" + _club + "_players (playerTeam, playerForenames, playerSurname, playerNickname, playerEmail, playerDob, playerHkid, playerNumber, playerTelNumber) VALUES ('" + _team + "', '" + _playerForename + "', '" + _playerSurname + "', '" + _playerNickname + "', '" + _playerEmail + "', '" + _playerDob + "', '" + _playerHkid + "', '" + _playerNumber + "', '" + _playerTelNumber + "')"
if _team and _playerSurname and _playerHkid and _playerNumber and request.method == 'POST':
sql_write(playerRecord_create)
return render_template('_convenorPlayerAddResults.html', club=_club, firstname=_playerForename, nickname=_playerNickname, surname=_surname, shirt=_playerNumber)
except Exception as e:
print(e)
@routes.route('/convenor/squadList')
def convenorSquadList():
team_lookup = "SELECT team FROM _clubTeams WHERE club='HKFC' ORDER BY team"
teams = sql_read(team_lookup)
form = squadListForm()
return render_template('_convenorSquadList.html', data=teams, form=form)
@routes.route('/convenor/squadListResults', methods=['POST'])
def convenorSquadListResults():
try:
_team = request.form['teamName']
teamPlayer_lookup = "SELECT playerForenames, playerSurname, playerNickname, playerChineseName, playerEmail, playerDob, playerHkid, playerNumber, playerTelNumber FROM _HKFC_players WHERE (playerTeam='" + _team + "') ORDER BY playerNumber"
# validate that this data has been entered
if _team and request.method == 'POST':
rows = sql_read(sql)
table = convenorSquadListTable(rows)
table.border = True
table.classes = ['table-striped', 'table-condensed', 'table-hover']
return render_template('_convenorSquadListResults.html', table=table, _team=_team)
else:
return 'Invalid search data entered'
except Exception as e:
print(e)
@routes.route('/convenor/editPlayer', methods=['POST'])
def convenorEditPlayer():
_playerNumber = request.args['playerNumber']
player_lookup = "SELECT playerTeam, playerForenames, playerSurname, playerNickname, playerChineseName, playerEmail, playerDob, playerHkid, playerNumber, playerTelNumber FROM _HKFC_players WHERE playerNumber='" + _playerNumber + "'"
clubLogo_lookup = "SELECT hockeyClub, logoURL FROM mensHockeyClubs ORDER BY hockeyClub"
playerData = sql_read(player_lookup)
clubs = sql_read_static(clubLogo_lookup)
form = addPlayerForm()
form.playerClub.choices = [(club['hockeyClub'], club['hockeyClub']) for club in clubs]
form.playerForenames.data = playerData[0]['playerForenames']
form.playerSurnames.data = playerData[0]['playerSurname']
form.playerNickname.data = playerData[0]['playerNickname']
form.playerChineseName.data = playerData[0]['playerChineseName']
form.playerEmailAddress.data = playerData[0]['playerEmail']
form.playerDob.data = playerData[0]['playerDob']
form.playerHkid.data = playerData[0]['playerHkid']
form.playerNumber.data = playerData[0]['playerNumber']
form.playerTelNumber.data = playerData[0]['playerTelNumber']
return render_template('_convenorPlayerEdit.html', data=playerData, form=form)
@routes.route('/convenor/deletePlayer', methods=['POST'])
def convenorDeletePlayer():
_playerNumber = request.args['playerNumber']
player_delete = "DELETE FROM _HKFC_players WHERE playerNumber=" + _playerNumber + ""
sql_write(player_delete)
return render_template('_hkfcPlayerDeleted.html', number=_playerNumber)
@routes.route('/convenor/editPlayerResult', methods=['POST'])
def convenorEditPlayerResult():
try:
_club = request.form['playerClub']
_team = request.form['playerTeam']
_playerForename = request.form['playerForenames']
_surname = request.form['playerSurnames']
_playerSurname = _surname.replace("'", "\\'")
_playerNickname = request.form['playerNickname']
_playerChineseName = request.form['playerChineseName']
_playerChineseName_enc = _playerChineseName.encode("utf-8")
_playerEmail = request.form['playerEmailAddress']
_playerDob = request.form['playerDob']
_playerHkid = request.form['playerHkid']
_playerNumber = request.form['playerNumber']
_playerTelNumber = request.form['playerTelNumber']
player_update = "UPDATE _" + _club + "_players SET playerTeam='" + _team + "', playerForenames='" + _playerForename + "', playerSurname='" + _playerSurname + "', playerNickname='" + _playerNickname + "', playerEmail='" + _playerEmail + "', playerTelNumber='" + _playerTelNumber + "' WHERE playerHkid='" + _playerHkid + "'"
if _team and _playerSurname and _playerHkid and _playerNumber and request.method == 'POST':
sql_write(player_update)
return render_template('_convenorEditPlayerResults.html', club=_club, firstname=_playerForename, nickname=_playerNickname, surname=_playerSurname, shirt=_playerNumber)
except Exception as e:
print(e)
@routes.route('/convenor/fixtureList')
def convenorFixturesList():
fixtures_lookup = "SELECT date, division, homeTeam, awayTeam, venue, time, umpire1, umpire2 FROM hockeyFixtures"
rows = sql_read(fixtures_lookup)
table = convenorFixtureList(rows)
table.border = True
table.classes = ['table-striped', 'table-condensed', 'table-hover']
return render_template('_convenorFixtureList.html', table=table)