diff --git a/forms.py b/forms.py index 41f5ca2..d1602e5 100644 --- a/forms.py +++ b/forms.py @@ -1,5 +1,3 @@ -#import MySQLdb -import pymysql import os from app import app from flask_wtf import FlaskForm @@ -10,117 +8,10 @@ from wtforms import validators, ValidationError from wtforms.validators import InputRequired, Email, Length from readSettings import mySettings from flask_bootstrap import Bootstrap -from datetime import datetime -#from dbWrite import read_cloudsql, sql_read, sql_read_static -class LoginForm(FlaskForm): - username = StringField('username', validators=[InputRequired(), Length(min=4, max=15)]) - password = PasswordField('password', validators=[InputRequired(), Length(min=4, max=80)]) - remember = BooleanField('remember me') - -class RegisterForm(FlaskForm): - email = StringField('email', validators=[InputRequired(), Email(message='Invalid email'), Length(max=50)]) - username = StringField('username', validators=[InputRequired(), Length(min=4, max=15)]) - password = PasswordField('password', validators=[InputRequired(), Length(min=8, max=80)]) - -class addPlayerForm(FlaskForm): - playerClub = SelectField('Club:', choices=[]) - playerTeam = SelectField('Team:', choices=[]) - playerForenames = TextField('Forenames:') - playerSurnames = TextField('Surname:') - playerNickname = TextField('Nickname') - playerChineseName = TextField('Chinese Name:') - playerEmailAddress = TextField('Email Address:') - playerDob = DateField('Date of Birth:', default=datetime.today, format='%Y-%m-%d') - playerHkid = TextField('HKID Number:') - playerNumber = TextField('Shirt Number:') - playerTelNumber = TextField('Player Contact Number:') - submit = SubmitField('Submit') - -class addTeamForm(FlaskForm): - clubName = SelectField("Club of team entry to create", coerce=str) - teamName = TextField("Team table to create (e.g. A, B, C, etc.)", validators=[InputRequired(), Length(max=1)]) - submit = SubmitField("Submit") - -class addClubForm(FlaskForm): - clubName = TextField("Name of the Hockey Club to add") - submit = SubmitField("Submit") - -class playerDbCreateForm(FlaskForm): - clubName = SelectField("Name of the Hockey Club to create player database for") - year = SelectField("Season start year") - submit = SubmitField("Submit") - -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')]) - clubName = SelectField("Club to search", choices=[], coerce=str) - teamName = SelectField("Select a Team", choices=[]) - startDate = DateField('DatePicker', format='%Y-%m-%d', default=seasonStart) - endDate = DateField('DatePicker', format='%Y-%m-%d', default=datetime.today()) - 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')]) - 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')]) - 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')]) - clubName = SelectField("Club to search", choices=[], coerce=str) - submitButton = SubmitField("Submit") - -class motmForm(FlaskForm): - startDate = DateField('DatePicker', format='%d-%m-%Y') - endDate = DateField('DatePicker', format='%d-%m-%Y') - -class motmAdminForm(FlaskForm): - startDate = DateField('DatePicker', format='%d-%m-%Y') - endDate = DateField('DatePicker', format='%d-%m-%Y') - -class squadListForm(FlaskForm): - teamName = SelectField("HKFC team to display") - submit = SubmitField("Submit") - -class adminSettingsForm(FlaskForm): - nextOppoClub = SelectField('Next Opposition Club:', choices=[], default=mySettings('club')) - nextOppoTeam = SelectField("Next Opposition Team:", choices=[]) - nextMatchDate = DateField('DatePicker', format='%Y-%m-%d', default=mySettings('date')) - currMotM = SelectField('Current Man of the Match:', choices=[], default=mySettings('motm')) - currDotD = SelectField('Current Dick of the Day:', choices=[], default=mySettings('dotd')) - saveButton = SubmitField('Save Settings') - activateButton = SubmitField('Activate MotM Vote') - -class goalsAssistsForm(FlaskForm): - fixtureNumber = TextField('Fixture Number') - match = SelectField('Fixture') - homeTeam = TextField('Home Team') - awayTeam = TextField('Away Team') - playerNumber = TextField('Player Number') - playerName = TextField('Player Name') - assists = SelectField('Assists:', choices=[(0, '0'), (1, '1'), (2, '2'), (3, '3'), (4, '4')]) - goals = SelectField('Goals:', choices=[(0, '0'), (1, '1'), (2, '2'), (3, '3'), (4, '4')]) - submit = SubmitField('Submit') -# def __init__(self, *args, **kwargs): -# super(goalsAssistsForm, self).__init__(*args, **kwargs) -# read_only(self.homeTeam) -# read_only(self.awayTeam) - - -class adminSettingsForm2(FlaskForm): - nextMatch = SelectField('Fixture', choices=[], default=mySettings('match')) - nextOppoClub = TextField('Next Opposition Club:', default=mySettings('club')) - nextOppoTeam = TextField("Next Opposition Team:") - currMotM = SelectField('Current Man of the Match:', choices=[], default=mySettings('motm')) - currDotD = SelectField('Current Dick of the Day:', choices=[], default=mySettings('dotd')) - saveButton = SubmitField('Save Settings') - activateButton = SubmitField('Activate MotM Vote') +class deploySelectForm(FlaskForm): + namespace = SelectField('namespace', validators=[InputRequired(), Length(min=4, max=15)]) + deployment = SelectField('password', validators=[InputRequired(), Length(min=4, max=80)]) + version = SelectField('remember me') diff --git a/main.py b/main.py index 9949b36..df3976e 100644 --- a/main.py +++ b/main.py @@ -1,11 +1,7 @@ # encoding=utf-8 -import pymysql -#import MySQLdb import os import json -import hashlib, uuid - from app import app from flask import Flask, flash, render_template, request, redirect, url_for from flask_wtf import FlaskForm @@ -13,59 +9,34 @@ from flask_bootstrap import Bootstrap from wtforms import StringField, PasswordField, BooleanField from wtforms.fields.html5 import DateField from wtforms.validators import InputRequired, Email, Length -from forms import LoginForm, RegisterForm -from dbWrite import sql_write, sql_write_static, sql_read, sql_read_static from routes import * +from logging import error, info +from subprocess import STDOUT, CalledProcessError, check_output +from itertools import islice +import json -app.register_blueprint(routes) +def get_namespaces(): + command = "/usr/local/bin/kubectl get ns -ojson" + info(f"Running command: {command}") + try: + output = check_output(command.split(" "), stderr=STDOUT).decode("utf-8") + except CalledProcessError as err: + error(err.output.decode("utf-8")) + raise err + info(f"Output from command:\n{output}") + data = json.loads(output) + return data - -@app.route('/hkfc-d/vote-chart', methods=['GET', 'POST']) -def hkfc_d_vote_chart(): - form = LoginForm() +@app.route('/', methods=['GET', 'POST']) +def namespacesForm(): + form = deploySelectForm() + namespaces = get_namespaces() print('Here we are') if form.validate_on_submit(): - sql = "SELECT username FROM hockeyUsers WHERE (username= '" + form.username.data + "')" - print(sql) - rows = sql_read(sql) - print(rows) - return redirect(url_for('/hkfc-d/voting')) + return redirect(url_for('/')) # return '

Something went wrong there

' - return render_template('hkfc-d/login-vote.html', form=form) - -@app.route('/login', methods=['GET', 'POST']) -def login(): - form = LoginForm() - print('Here we are') - if form.validate_on_submit(): - sql = "SELECT username FROM hockeyUsers WHERE (username= '" + form.username.data + "')" - print(sql) - rows = sql_write(sql) - print(rows) - print(rows[0]) - return redirect(url_for('/hkfc-d/voting')) - else: - return 'Something went wrong' -# return '

Something went wrong there

' - return render_template('login.html', form=form) - -@app.route('/register', methods=['GET', 'POST']) -def register(): - form = RegisterForm() - if form.validate_on_submit(): - salt = uuid.uuid4().hex - hashed_password = hashlib.sha512(form.password.data + salt).hexdigest() - - sql = "INSERT INTO hockeyUsers (username, email, password) VALUES ('" + form.username.data + "', '" + form.email.data + "', '" + hashed_password + "')" - print(sql) - db = write_cloudsql() - cursor = db.cursor() - cursor.execute(sql) - db.commit() - return '

New user has been created!

' - - return render_template('register.html', form=form) + return render_template('index.html', namespaces=namespaces, form=form) if __name__ == "__main__": app.run(host='0.0.0.0', port=3000, debug=True) diff --git a/templates/_search.html b/templates/_search.html index 32f4e0c..4337423 100644 --- a/templates/_search.html +++ b/templates/_search.html @@ -1,24 +1,24 @@ - Team Season Results Search *TESTING* + Deployment Selection *TESTING* -

Search Parameters - select both a club and team

+

Select a namespace and a deployment

{{ form.csrf_token }}

-
+
- Season data to search: + Namespace: {{ form.season(class_="form-control") }}
@@ -26,39 +26,15 @@
- Club: + Deployment: {{ form.clubName(class_="form-control") }}
-
-
- Team: - {{ form.teamName(class_="form-control") }} -
-
-
-
-
-
- Start Date: - {{ form.startDate(class_="form-control") }} -
-
-
-
- End Date: - {{ form.endDate(class_="form-control") }} -
-
-

{{ form.submitButton(class_="btn btn-success") }} - Cancel + Cancel

-
- -