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,
mail=mail,
team_id=team_id,
team_leader=1,
**request_data,
))
user_id = utils.UserHandler.get_user_by_mail(mail).user_id
flask.session.pop("mail")
flask.session["user_id"] = user_id
except (TypeError, KeyError):
except (TypeError, KeyError) as e:
print(e)
return flask.Response("Something is missing", 422)
except sqlite3.IntegrityError:
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:
return flask.Response("Not logged in", 428)
try:
print(utils.UserHandler.get_user_by_id(user_id))
team_id = utils.UserHandler.get_user_by_id(user_id).team_id
utils.UserHandler.create_user(utils.User(
-1,
secrets.token_urlsafe(20),
team_id=team_id,
team_leader=0,
**flask.request.form,
))
except TypeError:
return flask.Response("Not all details provided", 422)
except AssertionError:
return flask.Response("Max 4 members", 400)
except sqlite3.IntegrityError as error:
error_message = str(error)
if error_message == "UNIQUE constraint failed: users.phone_number":

View File

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