Skip to content

Commit bf8539d

Browse files
fix: show tasks assigned to team members in team todo list
- Updated TaskRepository to include tasks assigned to team members in team's todo list - Modified _get_assigned_task_ids_for_team to aggregate both direct team and member assignments - Ensured team task queries now reflect all relevant tasks for the team
1 parent 6007932 commit bf8539d

File tree

1 file changed

+20
-4
lines changed

1 file changed

+20
-4
lines changed

todo/repositories/task_repository.py

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,7 @@ def list(
4646

4747
if team_id:
4848
logger.debug(f"TaskRepository.list: team_id={team_id}")
49-
team_assignments = TaskAssignmentRepository.get_by_assignee_id(team_id, "team")
50-
team_task_ids = [assignment.task_id for assignment in team_assignments]
49+
team_task_ids = cls._get_assigned_task_ids_for_team(team_id)
5150
logger.debug(f"TaskRepository.list: team_task_ids={team_task_ids}")
5251
query_filter = {"$and": [base_filter, {"_id": {"$in": team_task_ids}}]}
5352
logger.debug(f"TaskRepository.list: query_filter={query_filter}")
@@ -91,15 +90,32 @@ def _get_assigned_task_ids_for_user(cls, user_id: str) -> List[ObjectId]:
9190

9291
return direct_task_ids + team_task_ids
9392

93+
@classmethod
94+
def _get_assigned_task_ids_for_team(cls, team_id: str) -> List[ObjectId]:
95+
"""Get task IDs where team is assigned (either directly or via team members)."""
96+
97+
direct_team_assignments = TaskAssignmentRepository.get_by_assignee_id(team_id, "team")
98+
direct_team_task_ids = [assignment.task_id for assignment in direct_team_assignments]
99+
100+
from todo.repositories.team_repository import UserTeamDetailsRepository
101+
102+
team_member_ids = UserTeamDetailsRepository.get_users_by_team_id(team_id)
103+
104+
member_task_ids = []
105+
for member_id in team_member_ids:
106+
member_assignments = TaskAssignmentRepository.get_by_assignee_id(member_id, "user")
107+
member_task_ids.extend([assignment.task_id for assignment in member_assignments])
108+
109+
return direct_team_task_ids + member_task_ids
110+
94111
@classmethod
95112
def count(cls, user_id: str = None, team_id: str = None, status_filter: str = None) -> int:
96113
tasks_collection = cls.get_collection()
97114

98115
base_filter = cls._build_status_filter(status_filter)
99116

100117
if team_id:
101-
team_assignments = TaskAssignmentRepository.get_by_assignee_id(team_id, "team")
102-
team_task_ids = [assignment.task_id for assignment in team_assignments]
118+
team_task_ids = cls._get_assigned_task_ids_for_team(team_id)
103119
query_filter = {"$and": [base_filter, {"_id": {"$in": team_task_ids}}]}
104120
elif user_id:
105121
assigned_task_ids = cls._get_assigned_task_ids_for_user(user_id)

0 commit comments

Comments
 (0)