Compare commits

..

2 Commits

Author SHA1 Message Date
4584b1f58f add event creation 2025-11-27 22:49:42 -08:00
cc62093cdb better typing 2025-11-27 22:24:02 -08:00
2 changed files with 61 additions and 16 deletions

View File

@@ -1,4 +1,5 @@
import bcrypt import bcrypt
import datetime
def create_user(db, login_info, user_info): def create_user(db, login_info, user_info):
@@ -7,11 +8,11 @@ def create_user(db, login_info, user_info):
Args: Args:
db (psycopg2.connection): connection to postgres database db (psycopg2.connection): connection to postgres database
login_info (dict of str:int): username and password info login_info (dict of str:str): username and password info
user_info (dict of str:int): name and dob info user_info (dict of str:value): name (str) and dob (datetime.date) info
Returns: Returns:
bool, str: status, message int: 0 if the username is non-unique, user id otherwise
""" """
username, password = login_info["username"], login_info["password"] username, password = login_info["username"], login_info["password"]
@@ -22,10 +23,32 @@ def create_user(db, login_info, user_info):
curs.execute("SELECT * FROM Users WHERE username = %s", (username,)) curs.execute("SELECT * FROM Users WHERE username = %s", (username,))
conflicts = curs.fetchall() conflicts = curs.fetchall()
if conflicts: if conflicts:
return False, "Duplicate username" return 0
curs.execute("INSERT INTO Users (username, password_hash, name, dob) VALUES (%s, %s, %s, %s)", (username, password_hash, name, dob)) curs.execute("INSERT INTO Users (username, password_hash, name, dob) VALUES (%s, %s, %s, %s) RETURNING id", (username, password_hash, name, dob))
user_id = curs.fetchone()[0]
db.commit() db.commit()
return True, "Success" return user_id
def get_user_from_username(db, username):
"""
Get a user id based on their username
Args:
db (psycopg2.connection): connection to postgres database
username (str): the username used to query
Returns:
int: 0 if the username is not in the system, user id otherwise
"""
with db:
with db.cursor() as curs:
curs.execute("SELECT * FROM Users WHERE username = %s", (username,))
users = curs.fetchall()
if not users:
return 0
return users[0][0]
def get_user_details(db, user_id): def get_user_details(db, user_id):
@@ -37,7 +60,7 @@ def get_user_details(db, user_id):
id (int): user id id (int): user id
Returns: Returns:
bool, dict of str to str, dict of str to str: user existance, login info (username, password), user info (name, dob) bool, dict of str to str, dict of str to value: user existance, login info (username, password), user info (name (str), dob (datetime.date))
""" """
with db: with db:
@@ -49,11 +72,30 @@ def get_user_details(db, user_id):
user = user[0] user = user[0]
return True, {"username": user[1], "password_hash": user[2]}, {"name": user[3], "dob": user[4]} return True, {"username": user[1], "password_hash": user[2]}, {"name": user[3], "dob": user[4]}
def create_event(db): def create_event(db, name, time, max_age):
"""
Creates a new event in the database
Args:
db (psycopg2.connection): connection to postgres database
name (str): event name
time (date.datetime): event time
max_age (int): how old a fencer is allowed to be at the time of the event starting
Returns:
int: id of the event created
"""
with db:
with db.cursor() as curs:
curs.execute("INSERT INTO Events (name, datetime, max_age, completed, registration, results) VALUES (%s, %s, %s, False, '', '') RETURNING id", (name, time, max_age))
event_id = curs.fetchone()[0]
db.commit()
return event_id
def create_tournament(db, events):
pass pass
def finish_event(db, event): def finish_event(db, event):
pass
def create_tournament(db, events):
pass pass

13
app.py
View File

@@ -1,4 +1,5 @@
import allfence as af import allfence as af
import datetime
from flask import Flask from flask import Flask
import psycopg2 as sql import psycopg2 as sql
from textwrap import dedent from textwrap import dedent
@@ -20,20 +21,22 @@ with db_connection.cursor() as cursor:
username varchar(255), username varchar(255),
password_hash varchar(255), password_hash varchar(255),
name varchar(255), name varchar(255),
dob varchar(255) dob date
); );
CREATE TABLE IF NOT EXISTS Events ( CREATE TABLE IF NOT EXISTS Events (
id SERIAL PRIMARY KEY, id SERIAL PRIMARY KEY,
name varchar(255), name varchar(255),
datetime varchar(255), datetime datetime,
users varchar(255), max_age int,
completed boolean,
registration varchar(255),
results varchar(255) results varchar(255)
); );
CREATE TABLE IF NOT EXISTS Tournaments ( CREATE TABLE IF NOT EXISTS Tournaments (
id SERIAL PRIMARY KEY, id SERIAL PRIMARY KEY,
name varchar(255), name varchar(255),
start_date varchar(255), start_date date,
end_date varchar(255), end_date date,
events varchar(255) events varchar(255)
); );
""")) """))