219 lines
11 KiB
Python
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)
|