Spaces:
Sleeping
Sleeping
feat:Added sub mentor
Browse files- src/auth/service.py +1 -1
- src/data_add/seed_from_excel.py +1 -0
- src/data_add/users.xlsx +0 -0
- src/profile/router.py +8 -6
- src/profile/service.py +29 -19
src/auth/service.py
CHANGED
|
@@ -121,7 +121,7 @@ async def verify_email(session: Session, token: str):
|
|
| 121 |
async def login_user(session: Session, email: str, password: str):
|
| 122 |
|
| 123 |
if not email.lower():
|
| 124 |
-
raise HTTPException(status_code=400, detail="Enter you're
|
| 125 |
|
| 126 |
users = await session.exec(select(Users).where(Users.email_id == email))
|
| 127 |
user = users.first()
|
|
|
|
| 121 |
async def login_user(session: Session, email: str, password: str):
|
| 122 |
|
| 123 |
if not email.lower():
|
| 124 |
+
raise HTTPException(status_code=400, detail="Enter you're valid email ID")
|
| 125 |
|
| 126 |
users = await session.exec(select(Users).where(Users.email_id == email))
|
| 127 |
user = users.first()
|
src/data_add/seed_from_excel.py
CHANGED
|
@@ -229,6 +229,7 @@ async def run_all_seeds():
|
|
| 229 |
"Digital Marketing",
|
| 230 |
"Bevolve",
|
| 231 |
"Bridge",
|
|
|
|
| 232 |
"HR",
|
| 233 |
]:
|
| 234 |
await get_or_create(session, Teams, t)
|
|
|
|
| 229 |
"Digital Marketing",
|
| 230 |
"Bevolve",
|
| 231 |
"Bridge",
|
| 232 |
+
"Quilt",
|
| 233 |
"HR",
|
| 234 |
]:
|
| 235 |
await get_or_create(session, Teams, t)
|
src/data_add/users.xlsx
CHANGED
|
Binary files a/src/data_add/users.xlsx and b/src/data_add/users.xlsx differ
|
|
|
src/profile/router.py
CHANGED
|
@@ -584,12 +584,14 @@ async def cancel_leave(
|
|
| 584 |
|
| 585 |
# Notify Team Lead
|
| 586 |
lead_tokens = await get_user_device_tokens(session, leave.lead_id)
|
| 587 |
-
|
| 588 |
-
lead_tokens,
|
| 589 |
-
|
| 590 |
-
|
| 591 |
-
|
| 592 |
-
|
|
|
|
|
|
|
| 593 |
|
| 594 |
return {
|
| 595 |
"code": 200,
|
|
|
|
| 584 |
|
| 585 |
# Notify Team Lead
|
| 586 |
lead_tokens = await get_user_device_tokens(session, leave.lead_id)
|
| 587 |
+
if leave.lead_id:
|
| 588 |
+
lead_tokens = await get_user_device_tokens(session, leave.lead_id)
|
| 589 |
+
await send_fcm(
|
| 590 |
+
lead_tokens,
|
| 591 |
+
"Leave Cancelled",
|
| 592 |
+
f"User {user.user_name} cancelled their approved leave.",
|
| 593 |
+
{"type": "leave_cancel", "leave_id": str(leave.id)},
|
| 594 |
+
)
|
| 595 |
|
| 596 |
return {
|
| 597 |
"code": 200,
|
src/profile/service.py
CHANGED
|
@@ -47,15 +47,23 @@ async def _get_team_roles(session: AsyncSession, user_id: uuid.UUID):
|
|
| 47 |
mentor_role = (
|
| 48 |
await session.exec(select(Roles).where(Roles.name == "Mentor"))
|
| 49 |
).first()
|
| 50 |
-
|
| 51 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 52 |
|
| 53 |
# 3) Get Team Lead role
|
| 54 |
lead_role = (
|
| 55 |
await session.exec(select(Roles).where(Roles.name == "Team Lead"))
|
| 56 |
).first()
|
| 57 |
-
if not lead_role:
|
| 58 |
-
raise ValueError("Team Lead role not found")
|
| 59 |
|
| 60 |
# 4) Find mentor in same team
|
| 61 |
mentor_users = (
|
|
@@ -63,25 +71,24 @@ async def _get_team_roles(session: AsyncSession, user_id: uuid.UUID):
|
|
| 63 |
select(Users)
|
| 64 |
.join(UserTeamsRole, UserTeamsRole.user_id == Users.id)
|
| 65 |
.where(UserTeamsRole.team_id == user_team.team_id)
|
| 66 |
-
.where(UserTeamsRole.role_id
|
| 67 |
)
|
| 68 |
).all()
|
| 69 |
|
| 70 |
if not mentor_users:
|
| 71 |
-
raise ValueError("Mentor
|
| 72 |
|
| 73 |
# 5) Find team lead in same team
|
| 74 |
-
lead_users =
|
| 75 |
-
|
| 76 |
-
|
| 77 |
-
.
|
| 78 |
-
|
| 79 |
-
|
| 80 |
-
|
| 81 |
-
|
| 82 |
-
|
| 83 |
-
|
| 84 |
-
raise ValueError("Team Lead not found in user's team")
|
| 85 |
|
| 86 |
return mentor_users, lead_users
|
| 87 |
|
|
@@ -110,6 +117,9 @@ async def create_leave(session, user_id, body):
|
|
| 110 |
# Get mentor + team lead
|
| 111 |
mentor_users, lead_users = await _get_team_roles(session, user_id)
|
| 112 |
|
|
|
|
|
|
|
|
|
|
| 113 |
leave = Leave(
|
| 114 |
user_id=user_id,
|
| 115 |
leave_type=body.leave_type,
|
|
@@ -117,8 +127,8 @@ async def create_leave(session, user_id, body):
|
|
| 117 |
to_date=body.to_date,
|
| 118 |
reason=body.reason,
|
| 119 |
days=body.days,
|
| 120 |
-
mentor_id=
|
| 121 |
-
lead_id=
|
| 122 |
)
|
| 123 |
|
| 124 |
session.add(leave)
|
|
|
|
| 47 |
mentor_role = (
|
| 48 |
await session.exec(select(Roles).where(Roles.name == "Mentor"))
|
| 49 |
).first()
|
| 50 |
+
sub_mentor_role = (
|
| 51 |
+
await session.exec(select(Roles).where(Roles.name == "Sub Mentor"))
|
| 52 |
+
).first()
|
| 53 |
+
|
| 54 |
+
if not mentor_role and not sub_mentor_role:
|
| 55 |
+
raise ValueError("No Mentor / Sub Mentor roles defined in system")
|
| 56 |
+
|
| 57 |
+
mentor_role_ids = []
|
| 58 |
+
if mentor_role:
|
| 59 |
+
mentor_role_ids.append(mentor_role.id)
|
| 60 |
+
if sub_mentor_role:
|
| 61 |
+
mentor_role_ids.append(sub_mentor_role.id)
|
| 62 |
|
| 63 |
# 3) Get Team Lead role
|
| 64 |
lead_role = (
|
| 65 |
await session.exec(select(Roles).where(Roles.name == "Team Lead"))
|
| 66 |
).first()
|
|
|
|
|
|
|
| 67 |
|
| 68 |
# 4) Find mentor in same team
|
| 69 |
mentor_users = (
|
|
|
|
| 71 |
select(Users)
|
| 72 |
.join(UserTeamsRole, UserTeamsRole.user_id == Users.id)
|
| 73 |
.where(UserTeamsRole.team_id == user_team.team_id)
|
| 74 |
+
.where(UserTeamsRole.role_id.in_(mentor_role_ids))
|
| 75 |
)
|
| 76 |
).all()
|
| 77 |
|
| 78 |
if not mentor_users:
|
| 79 |
+
raise ValueError("No Mentor or Sub Mentor found in user's team")
|
| 80 |
|
| 81 |
# 5) Find team lead in same team
|
| 82 |
+
lead_users = []
|
| 83 |
+
if lead_role:
|
| 84 |
+
lead_users = (
|
| 85 |
+
await session.exec(
|
| 86 |
+
select(Users)
|
| 87 |
+
.join(UserTeamsRole, UserTeamsRole.user_id == Users.id)
|
| 88 |
+
.where(UserTeamsRole.team_id == user_team.team_id)
|
| 89 |
+
.where(UserTeamsRole.role_id == lead_role.id)
|
| 90 |
+
)
|
| 91 |
+
).all()
|
|
|
|
| 92 |
|
| 93 |
return mentor_users, lead_users
|
| 94 |
|
|
|
|
| 117 |
# Get mentor + team lead
|
| 118 |
mentor_users, lead_users = await _get_team_roles(session, user_id)
|
| 119 |
|
| 120 |
+
main_mentor = mentor_users[0] # could be Mentor OR Sub Mentor
|
| 121 |
+
main_lead = lead_users[0] if lead_users else None
|
| 122 |
+
|
| 123 |
leave = Leave(
|
| 124 |
user_id=user_id,
|
| 125 |
leave_type=body.leave_type,
|
|
|
|
| 127 |
to_date=body.to_date,
|
| 128 |
reason=body.reason,
|
| 129 |
days=body.days,
|
| 130 |
+
mentor_id=main_mentor.id,
|
| 131 |
+
lead_id=main_lead.id if main_lead else None,
|
| 132 |
)
|
| 133 |
|
| 134 |
session.add(leave)
|