Implement max 4 team-members

This commit is contained in:
Koshin S Hegde 2024-09-01 13:35:29 +05:30
parent b2ce867b7d
commit 85ec0e1a4e
4 changed files with 17 additions and 1 deletions

Binary file not shown.

View File

@ -61,7 +61,8 @@ def register_leader() -> flask.Response:
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)
@ -125,6 +126,8 @@ def register() -> flask.Response:
)) ))
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
@ -66,6 +67,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(