gcp-hockey-results/routes/_convenor.py
Jonathan Ervine 32d3e3f3dd Dev commit
2020-11-19 09:35:55 +08:00

241 lines
11 KiB
Python

#import MySQLdb
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
import json
BASIC_AUTH_USERNAME = 'admin'
BASIC_AUTH_PASSWORD = '7GcGJTRs1DoCCNYCTGK2yeXmTGxtxonQ'
basic_auth = BasicAuth(app)
@routes.route('/convenor/clubList')
@basic_auth.required
def convenorListClub():
sql = "SELECT club, team, league from _clubTeams ORDER BY club, team"
rows = sql_read(sql)
print(rows)
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')
@basic_auth.required
def convenorAddClub():
form = addClubForm()
return render_template('_convenorClubAdd.html', form = form)
@routes.route('/convenor/clubAddResult', methods=['POST'])
@basic_auth.required
def convenorAddClubResult():
try:
_club = request.form['clubName']
# validate that this data has been entered
if _club and request.method == 'POST':
sql = "SELECT club FROM _clubTeams WHERE club='" + _club + "' GROUP BY club"
clubExist = sql_read(sql)
if clubExist:
return 'Club already exists - try adding a team instead'
else:
sql2 = "INSERT INTO _clubTeams (club, team) VALUES ('" + _club + "', 'A')"
sql_write(sql2)
return render_template('_convenorClubAddResults.html', data=_club)
except Exception as e:
print(e)
@routes.route('/convenor/teamAdd')
@basic_auth.required
def convenorAddTeam():
sql = "SELECT club FROM _clubTeams GROUP BY club ORDER BY club"
clubs = sql_read(sql)
form = addTeamForm()
return render_template('_convenorTeamAdd.html', data=clubs, form=form)
@routes.route('/convenor/teamAddResult', methods=['POST'])
@basic_auth.required
def convenorAddTeamResult():
try:
_club = request.form['clubName']
_team = request.form['teamName']
if _club and _team and request.method == 'POST':
sql = "SELECT club, team FROM _clubTeams WHERE club='" + _club + "' AND team='" + _team + "'"
teamExist = sql_read(sql)
if teamExist:
return 'Team already exists in the database'
else:
sql2 = "INSERT INTO _clubTeams (club, team) VALUES ('" + _club + "', '" + _team + "')"
sql_write(sql2)
return render_template('_convenorTeamAddResults.html', club=_club, team=_team)
except Exception as e:
print(e)
@routes.route('/convenor/playerDbCreate')
@basic_auth.required
def playerDbCreate():
sql = "SELECT club FROM _clubTeams GROUP BY club ORDER BY club"
clubs = sql_read(sql)
form = playerDbCreateForm()
return render_template('_convenorPlayerDbCreate.html', data=clubs, form=form)
@routes.route('/convenor/playerDbCreateResults', methods=['POST'])
@basic_auth.required
def playerDbCreateResults():
try:
_club = request.form['clubName']
# _year = request.form['year']
_year = "2018"
if _club and request.method == 'POST':
sql = "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))"
sql_write(sql)
return render_template('_convenorPlayerDbCreateResults.html', club=_club, year=_year)
except Exception as e:
print(e)
@routes.route('/convenor/playerAdd')
@basic_auth.required
def convenorAddPlayer():
sql = "SELECT hockeyClub, logoURL FROM mensHockeyClubs ORDER BY hockeyClub"
clubs = sql_read_static(sql)
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'])
@basic_auth.required
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']
if _team and _playerSurname and _playerHkid and _playerNumber and request.method == 'POST':
sql = "INSERT INTO _" + _club + "_players (playerTeam, playerForenames, playerSurname, playerNickname, playerChineseName, playerEmail, playerDob, playerHkid, playerNumber, playerTelNumber) VALUES ('" + _team + "', '" + _playerForename + "', '" + _playerSurname + "', '" + _playerNickname + "', '" + _playerChineseName_enc + "', '" + _playerEmail + "', '" + _playerDob + "', '" + _playerHkid + "', '" + _playerNumber + "', '" + _playerTelNumber + "')"
print(_team)
print(sql)
sql_write(sql)
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')
@basic_auth.required
def convenorSquadList():
sql = "SELECT team FROM _clubTeams WHERE club='HKFC' ORDER BY team"
teams = sql_read(sql)
form = squadListForm()
return render_template('_convenorSquadList.html', data=teams, form=form)
@routes.route('/convenor/squadListResults', methods=['POST'])
@basic_auth.required
def convenorSquadListResults():
try:
_team = request.form['teamName']
# validate that this data has been entered
if _team and request.method == 'POST':
sql = "SELECT playerForenames, playerSurname, playerNickname, playerChineseName, playerEmail, playerDob, playerHkid, playerNumber, playerTelNumber FROM _HKFC_players WHERE (playerTeam='" + _team + "') ORDER BY playerNumber"
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'])
@basic_auth.required
def convenorEditPlayer():
_playerNumber = request.args['playerNumber']
sql = "SELECT playerTeam, playerForenames, playerSurname, playerNickname, playerChineseName, playerEmail, playerDob, playerHkid, playerNumber, playerTelNumber FROM _HKFC_players WHERE playerNumber='" + _playerNumber + "'"
sql2 = "SELECT hockeyClub, logoURL FROM mensHockeyClubs ORDER BY hockeyClub"
playerData = sql_read(sql)
print(playerData)
clubs = sql_read_static(sql2)
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'])
@basic_auth.required
def convenorDeletePlayer():
_playerNumber = request.args['playerNumber']
sql = "DELETE FROM _HKFC_players WHERE playerNumber=" + _playerNumber + ""
sql_write(sql)
return render_template('_hkfcPlayerDeleted.html', number=_playerNumber)
@routes.route('/convenor/editPlayerResult', methods=['POST'])
@basic_auth.required
def convenorEditPlayerResult():
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']
if _team and _playerSurname and _playerHkid and _playerNumber and request.method == 'POST':
sql = "UPDATE _" + _club + "_players SET playerTeam='" + _team + "', playerForenames='" + _playerForename + "', playerSurname='" + _playerSurname + "', playerNickname='" + _playerNickname + "', playerChineseName='" + _playerChineseName_enc + "', playerEmail='" + _playerEmail + "', playerDob='" + _playerDob + "', playerHkid='" + _playerHkid + "', playerTelNumber='" + _playerTelNumber + "' WHERE playerNumber='" + _playerNumber + "'"
sql_write(sql)
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')
@basic_auth.required
def convenorFixturesList():
sql = "SELECT date, division, homeTeam, awayTeam, venue, time, umpire1, umpire2 FROM hockeyFixtures"
rows = sql_read(sql)
table = convenorFixtureList(rows)
table.border = True
table.classes = ['table-striped', 'table-condensed', 'table-hover']
return render_template('_convenorFixtureList.html', table=table)