new file: appengine_config.py new file: dbWrite.py new file: forms.py new file: main.py new file: readSettings.py new file: requirements.txt new file: routes/__init__.py new file: routes/_convenor.py new file: routes/_hkfcD_motm.py new file: routes/_matches.py new file: routes/_search.py new file: routes/dashboard.py new file: static/css/bootstrap-theme.css new file: static/css/bootstrap-theme.css.map new file: static/css/bootstrap-theme.min.css new file: static/css/bootstrap-theme.min.css.map new file: static/css/bootstrap.css new file: static/css/bootstrap.css.map new file: static/css/bootstrap.min.css new file: static/css/bootstrap.min.css.map new file: static/css/dashboard.css new file: static/css/dashboard.css.orig new file: static/fonts/glyphicons-halflings-regular.eot new file: static/fonts/glyphicons-halflings-regular.svg new file: static/fonts/glyphicons-halflings-regular.ttf new file: static/fonts/glyphicons-halflings-regular.woff new file: static/fonts/glyphicons-halflings-regular.woff2 new file: static/js/bootstrap.js new file: static/js/bootstrap.min.js new file: static/js/dashboard.js new file: static/js/npm.js new file: tables.py new file: templates/_about.html new file: templates/_clubPlayingRecordResults.html new file: templates/_clubPlayingRecords.html new file: templates/_convenorClubAdd.html new file: templates/_convenorClubAddResults.html new file: templates/_convenorClubList.html new file: templates/_convenorEditPlayerResults.html new file: templates/_convenorEditSquadList.html new file: templates/_convenorEditSquadListTeamSelect.html new file: templates/_convenorFixtureList.html new file: templates/_convenorPlayerAdd.html new file: templates/_convenorPlayerAddResults.html new file: templates/_convenorPlayerDbCreate.html new file: templates/_convenorPlayerDbCreateResults.html new file: templates/_convenorPlayerEdit.html new file: templates/_convenorSquadList.html new file: templates/_convenorSquadListResults.html new file: templates/_convenorTeamAdd.html new file: templates/_convenorTeamAddResults.html new file: templates/_error.html new file: templates/_goalsAssistsAdmin.html new file: templates/_hkfcDAdminThanks.html new file: templates/_hkfcDGoalsThanks.html new file: templates/_hkfcDMatchComments.html new file: templates/_hkfcDMatchSquad.html new file: templates/_hkfcDMatchSquadReset.html new file: templates/_hkfcDMatchSquadSelected.html new file: templates/_hkfcDMotmAdmin.html new file: templates/_hkfcDMotmVote.html new file: templates/_hkfcDPlayerRemoved.html new file: templates/_hkfcDPotYChart.html new file: templates/_hkfcDVoteChart.html new file: templates/_hkfcDVoteThanks.html new file: templates/_hkfcPlayerDeleted.html new file: templates/_matchDetails.html new file: templates/_playerCheck.html new file: templates/_playerCheckResults.html new file: templates/_playerRecordResults.html new file: templates/_playerRecords.html new file: templates/_search.html new file: templates/_searchResults.html new file: templates/_teamRecordResults.html new file: templates/_teamRecords.html new file: templates/dashboard.html new file: templates/results.html new file: templates/search.html Initial commit
241 lines
11 KiB
Python
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 = 'letmein'
|
|
|
|
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)
|