From 85ec0e1a4ed018cb52ffcb9616a8a066f2681a64 Mon Sep 17 00:00:00 2001 From: kosh Date: Sun, 1 Sep 2024 13:35:29 +0530 Subject: [PATCH] Implement max 4 team-members --- backend/data/sqlite-database.db | Bin 32768 -> 32768 bytes backend/src/rest_api.py | 5 ++++- backend/src/utils/team.py | 11 +++++++++++ backend/src/utils/user.py | 2 ++ 4 files changed, 17 insertions(+), 1 deletion(-) diff --git a/backend/data/sqlite-database.db b/backend/data/sqlite-database.db index 927ee539ae7aedef7ba3d9b81b8ffee653250083..42aca8a2153eac6229bb181eeb0e4b72c7539c32 100644 GIT binary patch delta 418 zcmZo@U}|V!njkHh%)r3F0mLw%K2gV*F?nOc5`H#D{&WWZ^v!|_vHSszVvK?ejV$Jj zlER|0in7csqMVE>MoB7$Mk*n}X`z{pW_cm0mZrt}#wmqit~n*C`iX)1RgoTH#rlABvPZtnh-?qNogx66BQYjFW>W#oU(!2f)+V8UH~RS9Nu&g}f+jLf`@ z)bx~8hxFXU%pASs{9In3LMHy#4E(S8zX6rr=a=VXVispCNlnZx*5Y7h7UwK2PAw{i znD>K${|8XfJAQt4W)@ECS*I94+O_yhCbI|FO7N}aTf{e=uZORZuZ%C7FM%(V&x_BV z&t$WpzzyDdPAwJ&agL1CoSb}4O$1W|!Bj^u)euZo1XBgUR7NnB5KKh`Qvt!02QgW} LHgDb$=b;Dyh~H&M delta 536 zcmZo@U}|V!njkG0!oa}50mLw%I#I`%F=S)H5`HdbJ|71DbiSK>KAQyv?D(P@xtIkR z8d($>C51(06=j)OL^(NCjFMCgjZ~ssD=dSYi^3BFvWzPtEgaKagIxUl%>r{A{qnNX zgEK9Yjk5FneDg|+bCWY1gPgO?OTC!plxFK$r&zr6i!&OznLzd^ zW3wmB(A=}wElSVVr=mP4I3=>Q%G1<8-yk_O(BDtL!YMr<&@A02snpOoz)wFrqo5); z+@lgkzzftN$G2lLdw?x4eoOc^?}+nI1OPX4j&T40 diff --git a/backend/src/rest_api.py b/backend/src/rest_api.py index af631cb..546c49d 100644 --- a/backend/src/rest_api.py +++ b/backend/src/rest_api.py @@ -61,7 +61,8 @@ def register_leader() -> flask.Response: 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) @@ -125,6 +126,8 @@ def register() -> flask.Response: )) 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": diff --git a/backend/src/utils/team.py b/backend/src/utils/team.py index d344b4b..d592da3 100644 --- a/backend/src/utils/team.py +++ b/backend/src/utils/team.py @@ -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 diff --git a/backend/src/utils/user.py b/backend/src/utils/user.py index 85abe89..70f1f89 100644 --- a/backend/src/utils/user.py +++ b/backend/src/utils/user.py @@ -1,6 +1,7 @@ import bcrypt from dataclasses import dataclass import sqlite3 +import utils @dataclass @@ -66,6 +67,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(