diff --git a/app.py b/app.py
index 5c910b1..88af264 100644
--- a/app.py
+++ b/app.py
@@ -3,13 +3,10 @@ import random
import string
from flask import Flask
from flask_bootstrap import Bootstrap
-from flask_login import LoginManager, UserMixin, login_user, login_required, logout_user, current_user, user_loader
app = Flask(__name__)
app.secret_key = "4pFwRNNXs+xQSOEaHrq4iSBwl+mq1UTdRuxqhM+RQpo="
Bootstrap(app)
-login_manager = LoginManager()
-login_manager.init_app(app)
def randomUrlSuffix(stringLength=6):
lettersAndDigits = string.ascii_letters + string.digits
diff --git a/app.yaml b/app.yaml
new file mode 100644
index 0000000..bc5b86d
--- /dev/null
+++ b/app.yaml
@@ -0,0 +1,35 @@
+runtime: python27
+api_version: 1
+threadsafe: true
+
+handlers:
+- url: /static
+ static_dir: static
+- url: /.*
+ script: main.app
+ secure: always
+
+
+libraries:
+- name: ssl
+ version: "latest"
+- name: MySQLdb
+ version: "1.2.5"
+- name: flask
+ version: latest
+
+
+env_variables:
+ CLOUDSQL_CONNECTION_NAME: hk-hockey:asia-east2:hk-hockey-sql
+ CLOUDSQL_USER: root
+ CLOUDSQL_WRITE_USER: hockeyWrite
+ CLOUDSQL_READ_USER: hockeyRead
+ CLOUDSQL_PASSWORD: P8P1YopMlwg8TxhE
+ CLOUDSQL_WRITE_PASSWORD: 1URYcxXXlQ6xOWgj
+ CLOUDSQL_READ_PASSWORD: o4GWrbbkBKy3oR6u
+ CLOUDSQL_DATABASE: 2020_hockeyResults
+ CLOUDSQL_DATABASE_STATIC: hockeyResults
+ CLOUDSQL_CHARSET: utf8
+ BASIC_AUTH_USERNAME: admin
+ BASIC_AUTH_PASSWORD: hATnNYriYN5ZrHvXcaImtXJ8SGMonNym
+
diff --git a/dbWrite.py b/dbWrite.py
index 0473fde..5151bc4 100644
--- a/dbWrite.py
+++ b/dbWrite.py
@@ -12,7 +12,8 @@ CLOUDSQL_READ_USER = "hockeyRead"
CLOUDSQL_PASSWORD = "P8P1YopMlwg8TxhE"
CLOUDSQL_WRITE_PASSWORD = "1URYcxXXlQ6xOWgj"
CLOUDSQL_READ_PASSWORD = "o4GWrbbkBKy3oR6u"
-CLOUDSQL_DATABASE = "2019_hockeyResults"
+CLOUDSQL_DATABASE = "20209_hockeyResults"
+LOCAL_DATABASE = "hockeyResults2020"
CLOUDSQL_DATABASE_STATIC = "hockeyResults"
CLOUDSQL_CHARSET = "utf8"
@@ -36,7 +37,7 @@ def write_cloudsql():
#
else:
# db = MySQLdb.connect(host='db.ipa.champion', user=CLOUDSQL_WRITE_USER, passwd=CLOUDSQL_WRITE_PASSWORD, db=CLOUDSQL_DATABASE, charset=CLOUDSQL_CHARSET)
- db = pymysql.connect(host='db.ipa.champion', user=CLOUDSQL_WRITE_USER, passwd=CLOUDSQL_WRITE_PASSWORD, db=CLOUDSQL_DATABASE, charset=CLOUDSQL_CHARSET)
+ db = pymysql.connect(host='db.ipa.champion', user=CLOUDSQL_WRITE_USER, passwd=CLOUDSQL_WRITE_PASSWORD, db=LOCAL_DATABASE, charset=CLOUDSQL_CHARSET)
return db
def write_cloudsql_static():
@@ -80,7 +81,7 @@ def read_cloudsql():
#
else:
# db = MySQLdb.connect(host='db.ipa.champion', user=CLOUDSQL_READ_USER, passwd=CLOUDSQL_READ_PASSWORD, db=CLOUDSQL_DATABASE, charset=CLOUDSQL_CHARSET)
- db = pymysql.connect(host='db.ipa.champion', user=CLOUDSQL_READ_USER, passwd=CLOUDSQL_READ_PASSWORD, db=CLOUDSQL_DATABASE, charset=CLOUDSQL_CHARSET)
+ db = pymysql.connect(host='db.ipa.champion', user=CLOUDSQL_READ_USER, passwd=CLOUDSQL_READ_PASSWORD, db=LOCAL_DATABASE, charset=CLOUDSQL_CHARSET)
return db
def read_cloudsql_static():
diff --git a/forms.py b/forms.py
index 41f5ca2..19e3529 100644
--- a/forms.py
+++ b/forms.py
@@ -54,7 +54,7 @@ class playerDbCreateForm(FlaskForm):
class searchForm(FlaskForm):
seasonStart = datetime.strptime('2018-09-01', '%Y-%m-%d')
- season = SelectField('Season data to search', choices=[('2019', '2019/20'), ('2018', '2018/19'), ('2017', '2017/18'), ('2016', '2016/17'), ('2015', '2015/16'), ('2014', '2014/15'), ('2013', '2013/14')])
+ season = SelectField('Season data to search', choices=[('2020', '2020/21'), ('2019', '2019/20'), ('2018', '2018/19'), ('2017', '2017/18'), ('2016', '2016/17'), ('2015', '2015/16'), ('2014', '2014/15'), ('2013', '2013/14')])
clubName = SelectField("Club to search", choices=[], coerce=str)
teamName = SelectField("Select a Team", choices=[])
startDate = DateField('DatePicker', format='%Y-%m-%d', default=seasonStart)
@@ -62,19 +62,19 @@ class searchForm(FlaskForm):
submitButton = SubmitField("Submit")
class playerRecordsForm(FlaskForm):
- season = SelectField('Season data to search', choices=[('2019', '2019/20'), ('2018', '2018/19'), ('2017', '2017/18'), ('2016', '2016/17'), ('2015', '2015/16'), ('2014', '2014/15'), ('2013', '2013/14')])
+ season = SelectField('Season data to search', choices=[('2020', '2020/21'), ('2019', '2019/20'), ('2018', '2018/19'), ('2017', '2017/18'), ('2016', '2016/17'), ('2015', '2015/16'), ('2014', '2014/15'), ('2013', '2013/14')])
clubName = SelectField("Club to search", choices=[], coerce=str)
teamName = SelectField("Select a Team", choices=[])
submitButton = SubmitField("Submit")
class teamRecordsForm(FlaskForm):
- season = SelectField('Season data to search', choices=[('2019', '2019/20'), ('2018', '2018/19'), ('2017', '2017/18'), ('2016', '2016/17'), ('2015', '2015/16'), ('2014', '2014/15'), ('2013', '2013/14')])
+ season = SelectField('Season data to search', choices=[('2020', '2020/21'), ('2019', '2019/20'), ('2018', '2018/19'), ('2017', '2017/18'), ('2016', '2016/17'), ('2015', '2015/16'), ('2014', '2014/15'), ('2013', '2013/14')])
clubName = SelectField("Club to search", choices=[], coerce=str)
teamName = SelectField("Select a Team", choices=[])
submitButton = SubmitField("Submit")
class clubPlayingRecordsForm(FlaskForm):
- season = SelectField('Season data to search', choices=[('2019', '2019/20'), ('2018', '2018/19'), ('2017', '2017/18'), ('2016', '2016/17'), ('2015', '2015/16'), ('2014', '2014/15'), ('2013', '2013/14')])
+ season = SelectField('Season data to search', choices=[('2020', '2020/21'), ('2019', '2019/20'), ('2018', '2018/19'), ('2017', '2017/18'), ('2016', '2016/17'), ('2015', '2015/16'), ('2014', '2014/15'), ('2013', '2013/14')])
clubName = SelectField("Club to search", choices=[], coerce=str)
submitButton = SubmitField("Submit")
diff --git a/main.py b/main.py
index 4c7757e..9949b36 100644
--- a/main.py
+++ b/main.py
@@ -10,7 +10,6 @@ from app import app
from flask import Flask, flash, render_template, request, redirect, url_for
from flask_wtf import FlaskForm
from flask_bootstrap import Bootstrap
-from flask_login import LoginManager, UserMixin, login_user, login_required, logout_user, current_user
from wtforms import StringField, PasswordField, BooleanField
from wtforms.fields.html5 import DateField
from wtforms.validators import InputRequired, Email, Length
@@ -20,35 +19,6 @@ from routes import *
app.register_blueprint(routes)
-login_manager = LoginManager()
-
-class User(UserMixin):
- # proxy for a database of users
- user_database = {"JohnDoe": ("JohnDoe", "John"), "JaneDoe": ("JaneDoe", "Jane")}
-
- def __init__(self, username, password):
- self.id = username
- self.password = password
-
- @classmethod
- def get(cls,id):
- return cls.user_database.get(id)
-
-@login_manager.request_loader
-def load_user(request):
- token = request.headers.get('Authorization')
- if token is None:
- token = request.args.get('token')
-
- if token is not None:
- username,password = token.split(":") # naive token
- user_entry = User.get(username)
- if (user_entry is not None):
- user = User(user_entry[0],user_entry[1])
- if (user.password == password):
- return user
- return None
-
@app.route('/hkfc-d/vote-chart', methods=['GET', 'POST'])
def hkfc_d_vote_chart():
diff --git a/requirements.txt b/requirements.txt
index 7f266fe..60c8dce 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,5 +1,6 @@
Flask
Werkzeug
+email-validator
flask_table
flask-mysql
flask_login
diff --git a/routes/__init__.py b/routes/__init__.py
index 8ed905c..8b3c96b 100644
--- a/routes/__init__.py
+++ b/routes/__init__.py
@@ -2,7 +2,6 @@ from flask import Blueprint
routes = Blueprint('routes', __name__)
from .dashboard import *
-from ._search import *
from ._matches import *
from ._hkfcD_motm import *
from ._convenor import *
diff --git a/routes/_convenor.py b/routes/_convenor.py
index 8d9f03b..4ee6ce6 100644
--- a/routes/_convenor.py
+++ b/routes/_convenor.py
@@ -1,4 +1,3 @@
-#import MySQLdb
import pymysql
import os
from flask import render_template, request
@@ -8,11 +7,11 @@ 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 = 'letmein'
+BASIC_AUTH_PASSWORD = '7GcGJTRs1DoCCNYCTGK2yeXmTGxtxonQ'
basic_auth = BasicAuth(app)
@@ -134,9 +133,7 @@ def convenorAddPlayerResult():
_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 = "INSERT INTO _" + _club + "_players (playerTeam, playerForenames, playerSurname, playerNickname, playerEmail, playerDob, playerHkid, playerNumber, playerTelNumber) VALUES ('" + _team + "', '" + _playerForename + "', '" + _playerSurname + "', '" + _playerNickname + "', '" + _playerEmail + "', '" + _playerDob + "', '" + _playerHkid + "', '" + _playerNumber + "', '" + _playerTelNumber + "')"
sql_write(sql)
return render_template('_convenorPlayerAddResults.html', club=_club, firstname=_playerForename, nickname=_playerNickname, surname=_surname, shirt=_playerNumber)
except Exception as e:
@@ -206,8 +203,6 @@ def convenorDeletePlayer():
@basic_auth.required
def convenorEditPlayerResult():
try:
-# _year = request.form['year']
- _year = "2018"
_club = request.form['playerClub']
_team = request.form['playerTeam']
_playerForename = request.form['playerForenames']
@@ -222,7 +217,7 @@ def convenorEditPlayerResult():
_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 = "UPDATE _" + _club + "_players SET playerTeam='" + _team + "', playerForenames='" + _playerForename + "', playerSurname='" + _playerSurname + "', playerNickname='" + _playerNickname + "', playerEmail='" + _playerEmail + "', playerTelNumber='" + _playerTelNumber + "' WHERE playerHkid='" + _playerHkid + "'"
sql_write(sql)
return render_template('_convenorEditPlayerResults.html', club=_club, firstname=_playerForename, nickname=_playerNickname, surname=_playerSurname, shirt=_playerNumber)
except Exception as e:
diff --git a/routes/_hkfcD_motm.py b/routes/_hkfcD_motm.py
index 88658b8..b4bba3e 100644
--- a/routes/_hkfcD_motm.py
+++ b/routes/_hkfcD_motm.py
@@ -31,7 +31,7 @@ def hkfcD_motm_vote(randomUrlSuffix):
currMotM = nextInfo[0]['currMotM']
currDotD = nextInfo[0]['currDotD']
oppo = nextTeam
- sql3 = "SELECT 2019_hockeyResults.hockeyFixtures.date, hockeyResults.hkfcDAdminSettings.nextFixture FROM 2019_hockeyResults.hockeyFixtures INNER JOIN hockeyResults.hkfcDAdminSettings ON 2019_hockeyResults.hockeyFixtures.fixtureNumber = hockeyResults.hkfcDAdminSettings.nextFixture"
+ sql3 = "SELECT hockeyResults2020.hockeyFixtures.date, hockeyResults.hkfcDAdminSettings.nextFixture FROM hockeyResults2020.hockeyFixtures INNER JOIN hockeyResults.hkfcDAdminSettings ON hockeyResults2020.hockeyFixtures.fixtureNumber = hockeyResults.hkfcDAdminSettings.nextFixture"
nextMatchDate = sql_read(sql3)
nextDate = nextMatchDate[0]['date']
formatDate = datetime.strftime(nextDate, '%A, %d %B %Y')
@@ -60,8 +60,10 @@ def hkfcD_motm_vote(randomUrlSuffix):
@routes.route('/hkfc-d/comments', methods=['GET', 'POST'])
def hkfcd_match_comments():
sql = "SELECT nextClub, nextTeam, nextDate, oppoLogo, hkfcLogo FROM hkfcDAdminSettings"
- row = sql_read(sql)
- _oppo = row[0]['nextClub'] + " " + row[0]['nextTeam']
+ row = sql_read_static(sql)
+# nextTeam already seems to include all the team+club details
+# _oppo = row[0]['nextClub'] + " " + row[0]['nextTeam']
+ _oppo = row[0]['nextClub']
commentDate = row[0]['nextDate'].strftime('%Y-%m-%d')
_matchDate = row[0]['nextDate'].strftime('%Y_%m_%d')
hkfcLogo = row[0]['hkfcLogo']
@@ -137,7 +139,7 @@ def hkfcDMotmAdmin():
print(urlSuffix)
sql3 = "UPDATE hkfcDAdminSettings SET motmUrlSuffix='" + urlSuffix + "' WHERE userid='admin'"
sql_write_static(sql3)
- flash('MotM URL https://hk-hockey.appspot.com/hkfc-d/motm/'+urlSuffix)
+ flash('MotM URL https://hockey.ervine.cloud/hkfc-d/motm/'+urlSuffix)
elif form.activateButton.data:
sql4 = "ALTER TABLE _hkfc_d_motm ADD COLUMN motm_" + _nextFixture + " smallint DEFAULT 0, ADD COLUMN dotd_" + _nextFixture + " smallint DEFAULT 0, ADD COLUMN assists_" + _nextFixture + " smallint DEFAULT 0, ADD COLUMN goals_" + _nextFixture + " smallint DEFAULT 0 "
sql_write(sql4)
diff --git a/routes/_search.py b/routes/_search.py
index f521c69..995b5b0 100644
--- a/routes/_search.py
+++ b/routes/_search.py
@@ -13,8 +13,8 @@ from datetime import date
def search():
sql = "SELECT hockeyClub FROM mensHockeyClubs ORDER BY hockeyClub"
sql2 = "SELECT nextClub, oppoLogo FROM hkfcDAdminSettings"
- clubs = sql_read(sql)
- settings = sql_read(sql2)
+ clubs = sql_read_static(sql)
+ settings = sql_read_static(sql2)
form = searchForm()
form.clubName.choices = [(name['hockeyClub'], name['hockeyClub']) for name in clubs]
clubLogo = settings[0]['oppoLogo']
@@ -42,10 +42,10 @@ def searchTeam():
@routes.route('/playerRecords')
def playerRecords():
- sql = "SELECT hockeyClub FROM mensHockeyClubs ORDER BY hockeyClub"
+ sql = "SELECT hockeyClub FROM mensHockeyClubs ORDER BY hockeyClub"`
sql2 = "SELECT nextClub, oppoLogo FROM hkfcDAdminSettings"
- clubs = sql_read(sql)
- settings = sql_read(sql2)
+ clubs = sql_read_static(sql)
+ settings = sql_read_static(sql2)
form = playerRecordsForm()
form.clubName.choices = [(name['hockeyClub'], name['hockeyClub']) for name in clubs]
clubLogo = settings[0]['oppoLogo']
@@ -60,12 +60,12 @@ def playerRecordSearchResults():
_team = request.form['teamName']
lookup_table = _club.lower() + _team
if _club and _team and request.method == 'POST':
- sql = "SELECT * FROM _" + lookup_table + " ORDER BY playerNumber"
- sql2 = "SHOW COLUMNS FROM _" + lookup_table + ""
- sql3 = "SELECT matchNumber, matchHomeClub, matchHomeTeam, matchAwayClub, matchAwayTeam FROM _mensResults WHERE (matchHomeClub='" + _club + "' AND matchHomeTeam='" + _team + "') OR (matchAwayClub='" + _club + "' AND matchAwayTeam='" + _team + "')"
- rows = sql_read(sql)
- columns = sql_read(sql2)
- matches = sql_read(sql3)
+ sql = "SELECT * FROM _" + _season + "_" + lookup_table + " ORDER BY playerNumber"
+ sql2 = "SHOW COLUMNS FROM _" + _season + "_" + lookup_table + ""
+ sql3 = "SELECT matchNumber, matchHomeClub, matchHomeTeam, matchAwayClub, matchAwayTeam FROM _" + _season + "_mensResults WHERE (matchHomeClub='" + _club + "' AND matchHomeTeam='" + _team + "') OR (matchAwayClub='" + _club + "' AND matchAwayTeam='" + _team + "')"
+ rows = sql_read_static(sql)
+ columns = sql_read_static(sql2)
+ matches = sql_read_static(sql3)
for match in matches:
matchNumbersList.append(str(match['matchNumber']))
if match['matchHomeClub'] == _club:
@@ -81,8 +81,8 @@ def playerRecordSearchResults():
def teamRecords():
sql = "SELECT hockeyClub FROM mensHockeyClubs ORDER BY hockeyClub"
sql2 = "SELECT nextClub, oppoLogo FROM hkfcDAdminSettings"
- clubs = sql_read(sql)
- settings = sql_read(sql2)
+ clubs = sql_read_static(sql)
+ settings = sql_read_static(sql2)
form = teamRecordsForm()
form.clubName.choices = [(name['hockeyClub'], name['hockeyClub']) for name in clubs]
clubLogo = settings[0]['oppoLogo']
@@ -95,9 +95,9 @@ def teamRecordResults():
_team = request.form['teamName']
lookup_table = _club.lower() + _team
if _club and _team and request.method == 'POST':
- sql = "SELECT * FROM _record_" + lookup_table + " ORDER BY opposition"
+ sql = "SELECT * FROM _" + _season + "_record_" + lookup_table + " ORDER BY opposition"
print(sql)
- rows = sql_read(sql)
+ rows = sql_read_static(sql)
table = teamResults(rows)
table.border = True
table.classes = ['table-striped', 'table-condensed', 'table-hover']
@@ -110,8 +110,8 @@ def teamRecordResults():
def clubPlayingRecords():
sql = "SELECT hockeyClub FROM mensHockeyClubs ORDER BY hockeyClub"
sql2 = "SELECT nextClub, oppoLogo FROM hkfcDAdminSettings"
- clubs = sql_read(sql)
- settings = sql_read(sql2)
+ clubs = sql_read_static(sql)
+ settings = sql_read_static(sql2)
form = clubPlayingRecordsForm()
form.clubName.choices = [(name['hockeyClub'], name['hockeyClub']) for name in clubs]
clubLogo = settings[0]['oppoLogo']
@@ -122,10 +122,10 @@ def clubPlayingRecordRearchResults():
_season = request.form['season']
_club = request.form['clubName']
if _club and request.method == 'POST':
- sql = "SELECT * FROM _playerRecord_" + _club.lower() + " ORDER BY playerNumber"
- sql2 = "SHOW COLUMNS FROM __playerRecord_" + _club.lower() + ""
- rows = sql_read(sql)
- columns = sql_read(sql2)
+ sql = "SELECT * FROM _" + _season + "_playerRecord_" + _club.lower() + " ORDER BY playerNumber"
+ sql2 = "SHOW COLUMNS FROM _" + _season + "_playerRecord_" + _club.lower() + ""
+ rows = sql_read_static(sql)
+ columns = sql_read_static(sql2)
return render_template('_clubPlayingRecordResults.html', rows=rows, columns=columns)
else:
return 'Invalid search data entered'
@@ -135,8 +135,8 @@ def clubPlayingRecordRearchResults():
def playerCheck():
sql = "SELECT hockeyClub FROM mensHockeyClubs ORDER BY hockeyClub"
sql2 = "SELECT nextClub, oppoLogo FROM hkfcDAdminSettings"
- clubs = sql_read(sql)
- settings = sql_read(sql2)
+ clubs = sql_read_static(sql)
+ settings = sql_read_static(sql2)
form = clubPlayingRecordsForm()
form.clubName.choices = [(name['hockeyClub'], name['hockeyClub']) for name in clubs]
clubLogo = settings[0]['oppoLogo']
@@ -150,8 +150,8 @@ def playerCheckResults():
if _club and request.method == 'POST':
sql = "SELECT * FROM _playerRecord_" + _club.lower() + " ORDER BY playerNumber"
sql2 = "SHOW COLUMNS FROM _playerRecord_" + _club.lower() + ""
- rows = sql_read(sql)
- columns = sql_read(sql2)
+ rows = sql_read_static(sql)
+ columns = sql_read_static(sql2)
for row in rows:
has_played = 0
for column in columns:
diff --git a/templates/_clubPlayingRecordResults.html b/templates/_clubPlayingRecordResults.html
deleted file mode 100644
index 76bb70e..0000000
--- a/templates/_clubPlayingRecordResults.html
+++ /dev/null
@@ -1,41 +0,0 @@
-
- {% with messages = get_flashed_messages() %}
- {% if messages %}
-
- {% for message in messages %}
-
- {% endif %}
- {% endwith %}
-
| {{ column['Field'] }} | - {%- endfor %} - - - - {%- for row in rows %} -
|---|
| {{ row[column['Field']] }} | - {%- endfor %} -
- {{ form.csrf_token }} -
- {{ form.csrf_token }} -
- {% with messages = get_flashed_messages() %} - {% if messages %} -
| {{ column['Field'] }} | - {%- endfor %} - - - - {%- for row in rows %} -
|---|
| {{ row[column['Field']] }} | - {%- endfor %} -
- {% with messages = get_flashed_messages() %} - {% if messages %} -
Player Number |
- {% elif column['Field'] == "playerName" %}
- Player Name |
- {% elif column['Field'] == "appearances" %}
- Appearances |
- {% elif column['Field'] == "goals" %}
- Goals |
- {% elif column['Field'].startswith('22381goal') %}
- NBC A goals |
- {% else %}
- {%- for match in matchesList %}
- {% if column['Field'].startswith(match) %}
- {% if column['Field'].endswith('played') %}
- {{ matches[match] }} Played |
- {% elif column['Field'].endswith('goals') %}
- {{ matches[match] }} Goals |
- {% elif column['Field'].endswith('capt') %}
- {{ matches[match] }} Captain |
- {% endif %}
- {% endif %}
- {% endfor %}
- {% endif %}
- {%- endfor %}
-
-
-
- {%- for row in rows %}
-
|---|
| {{ row[column['Field']] }} | - {%- endfor %} -
- {{ form.csrf_token }} -
- {{ form.csrf_token }} -
- {% with messages = get_flashed_messages() %} - {% if messages %} -
- {% with messages = get_flashed_messages() %} - {% if messages %} -
- {{ form.csrf_token }} -