Files
allfence/allfence.py
2025-11-27 22:24:02 -08:00

66 lines
2.1 KiB
Python

import bcrypt
import datetime
def create_user(db, login_info, user_info):
"""
Creates a new user in the database
Args:
db (psycopg2.connection): connection to postgres database
login_info (dict of str:str): username and password info
user_info (dict of str:value): name (str) and dob (datetime.date) info
Returns:
bool, str: status, message
"""
username, password = login_info["username"], login_info["password"]
password_hash = bcrypt.hashpw(password.encode(), bcrypt.gensalt()).decode()
name, dob = user_info["name"], user_info["dob"]
with db:
with db.cursor() as curs:
curs.execute("SELECT * FROM Users WHERE username = %s", (username,))
conflicts = curs.fetchall()
if conflicts:
return False, "Duplicate username"
curs.execute("INSERT INTO Users (username, password_hash, name, dob) VALUES (%s, %s, %s, %s)", (username, password_hash, name, dob))
db.commit()
return True, "Success"
def get_user_details(db, user_id):
"""
Gets the details of a user based on their id
Args:
db (psycopg2.connection): connection to postgres database
id (int): user id
Returns:
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.cursor() as curs:
curs.execute("SELECT * FROM Users WHERE id = %s", (user_id,))
user = curs.fetchall()
if not user:
return False, {}, {}
user = user[0]
return True, {"username": user[1], "password_hash": user[2]}, {"name": user[3], "dob": user[4]}
def create_event(db, name, timestamp):
"""
with db:
with db.cursor() as curs:
curs.execute("INSERT INTO Events (name, datetime, users, results) VALUES (%s, %s, %s, %s)", (username, password_hash, name, dob))
db.commit()
return True, "Success"
"""
def finish_event(db, event):
pass
def create_tournament(db, events):
pass