59 lines
1.8 KiB
Python
59 lines
1.8 KiB
Python
import bcrypt
|
|
|
|
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:int): username and password info
|
|
user_info (dict of str:int): name and dob 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 str: user existance, login info (username, password), user info (name, dob)
|
|
"""
|
|
|
|
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):
|
|
pass
|
|
|
|
def finish_event(db, event):
|
|
pass
|
|
|
|
def create_tournament(db, events):
|
|
pass |