#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)