Compare commits

...

2 Commits

Author SHA1 Message Date
f7d2285e74 Implement max 4 team-members not 5 members 2024-09-01 13:47:11 +05:30
85ec0e1a4e Implement max 4 team-members 2024-09-01 13:35:29 +05:30
4 changed files with 29 additions and 4 deletions

Binary file not shown.

View File

@ -56,12 +56,14 @@ def register_leader() -> flask.Response:
-1, -1,
mail=mail, mail=mail,
team_id=team_id, team_id=team_id,
team_leader=1,
**request_data, **request_data,
)) ))
user_id = utils.UserHandler.get_user_by_mail(mail).user_id user_id = utils.UserHandler.get_user_by_mail(mail).user_id
flask.session.pop("mail") flask.session.pop("mail")
flask.session["user_id"] = user_id flask.session["user_id"] = user_id
except (TypeError, KeyError): except (TypeError, KeyError) as e:
print(e)
return flask.Response("Something is missing", 422) return flask.Response("Something is missing", 422)
except sqlite3.IntegrityError: except sqlite3.IntegrityError:
return flask.Response("Mail already registered or phone number or pin code is not correct", 428) return flask.Response("Mail already registered or phone number or pin code is not correct", 428)
@ -116,15 +118,19 @@ def register() -> flask.Response:
except KeyError: except KeyError:
return flask.Response("Not logged in", 428) return flask.Response("Not logged in", 428)
try: try:
print(utils.UserHandler.get_user_by_id(user_id))
team_id = utils.UserHandler.get_user_by_id(user_id).team_id team_id = utils.UserHandler.get_user_by_id(user_id).team_id
utils.UserHandler.create_user(utils.User( utils.UserHandler.create_user(utils.User(
-1, -1,
secrets.token_urlsafe(20), secrets.token_urlsafe(20),
team_id=team_id, team_id=team_id,
team_leader=0,
**flask.request.form, **flask.request.form,
)) ))
except TypeError: except TypeError:
return flask.Response("Not all details provided", 422) return flask.Response("Not all details provided", 422)
except AssertionError:
return flask.Response("Max 4 members", 400)
except sqlite3.IntegrityError as error: except sqlite3.IntegrityError as error:
error_message = str(error) error_message = str(error)
if error_message == "UNIQUE constraint failed: users.phone_number": if error_message == "UNIQUE constraint failed: users.phone_number":

View File

@ -34,3 +34,14 @@ class TeamHandler:
) )
cls.__connection.commit() cls.__connection.commit()
return team.lastrowid if team.lastrowid else -1 return team.lastrowid if team.lastrowid else -1
@classmethod
def get_team_members(cls, team_id: int) -> list[int]:
users = cls.__cursor.execute(
f"""
SELECT user_id
FROM users WHERE team_id = ?;
""",
(team_id, )
).fetchall()
return users

View File

@ -1,6 +1,7 @@
import bcrypt import bcrypt
from dataclasses import dataclass from dataclasses import dataclass
import sqlite3 import sqlite3
import utils
@dataclass @dataclass
@ -19,6 +20,7 @@ class User:
phone_number: int phone_number: int
name: str name: str
team_id: int team_id: int
team_leader: int
def __init__( def __init__(
self, self,
@ -35,6 +37,7 @@ class User:
pin_code: int|str, pin_code: int|str,
phone_number: int|str, phone_number: int|str,
name: str, name: str,
team_leader: bool|int|str,
team_id: int|str, team_id: int|str,
) -> None: ) -> None:
self.user_id: int = int(user_id) self.user_id: int = int(user_id)
@ -51,6 +54,7 @@ class User:
self.phone_number: int = int(phone_number) self.phone_number: int = int(phone_number)
self.name = name self.name = name
self.team_id = int(team_id) self.team_id = int(team_id)
self.team_leader = int(team_leader)
def to_dict(self) -> dict: def to_dict(self) -> dict:
the_dict = vars(self) the_dict = vars(self)
@ -66,6 +70,7 @@ class UserHandler:
cls, cls,
user: User user: User
) -> None: ) -> None:
assert len(utils.TeamHandler.get_team_members(user.team_id)) < 4
salt = bcrypt.gensalt() salt = bcrypt.gensalt()
encrypted_password = bcrypt.hashpw(user.password.encode("utf-8"), salt) encrypted_password = bcrypt.hashpw(user.password.encode("utf-8"), salt)
cls.__cursor.execute( cls.__cursor.execute(
@ -86,7 +91,7 @@ class UserHandler:
team_id, team_id,
team_leader team_leader
) )
VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 1) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
""", """,
( (
encrypted_password, encrypted_password,
@ -102,6 +107,7 @@ class UserHandler:
user.phone_number, user.phone_number,
user.name, user.name,
user.team_id, user.team_id,
user.team_leader,
) )
) )
cls.__connection.commit() cls.__connection.commit()
@ -132,7 +138,8 @@ class UserHandler:
user[10], user[10],
user[11], user[11],
user[12], user[12],
user[13] user[13],
user[14],
) )
@classmethod @classmethod
@ -161,7 +168,8 @@ class UserHandler:
user[10], user[10],
user[11], user[11],
user[12], user[12],
user[13] user[13],
user[14],
) )
@classmethod @classmethod