Skip to content

Commit 0cbd912

Browse files
feat: add deferred details to watchlist DTO (#242)
* feat: add deferred details to watchlist DTO and update task status logic * feat: include deferred details in watchlist DTO for improved task management --------- Co-authored-by: anuj.k <[email protected]>
1 parent 81b255c commit 0cbd912

File tree

3 files changed

+13
-1
lines changed

3 files changed

+13
-1
lines changed

todo/dto/watchlist_dto.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
from typing import Optional
44

55
from todo.constants.task import TaskPriority, TaskStatus
6+
from todo.models.task import DeferredDetailsModel
67

78

89
class AssigneeDTO(BaseModel):
@@ -17,6 +18,7 @@ class WatchlistDTO(BaseModel):
1718
title: str
1819
description: Optional[str] = None
1920
priority: Optional[TaskPriority] = None
21+
deferredDetails: Optional[DeferredDetailsModel] = None
2022
status: Optional[TaskStatus] = None
2123
isAcknowledged: Optional[bool] = None
2224
isDeleted: Optional[bool] = None

todo/repositories/watchlist_repository.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,7 @@ def get_watchlisted_tasks(cls, page, limit, user_id) -> Tuple[int, List[Watchlis
133133
{
134134
"watchlistId": {"$toString": "$_id"},
135135
"taskId": {"$toString": "$task._id"},
136+
"deferredDetails": "$task.deferredDetails",
136137
"assignee": {
137138
"$cond": {
138139
"if": {"$gt": [{"$size": "$assignee_user"}, 0]},

todo/services/watchlist_service.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
from urllib.parse import urlencode
55
import math
66

7+
from todo.constants.task import TaskStatus
78
from todo.dto.label_dto import LabelDTO
89
from todo.dto.responses.paginated_response import LinksData
910
from todo.dto.watchlist_dto import CreateWatchlistDTO, UpdateWatchlistDTO, WatchlistDTO
@@ -159,6 +160,13 @@ def prepare_watchlisted_task_dto(cls, watchlist_model: WatchlistDTO) -> Watchlis
159160
if hasattr(watchlist_model, "assignee") and watchlist_model.assignee:
160161
assignee = watchlist_model.assignee
161162

163+
task_status = watchlist_model.status
164+
165+
if watchlist_model.deferredDetails and watchlist_model.deferredDetails.deferredTill > datetime.now(
166+
timezone.utc
167+
):
168+
task_status = TaskStatus.DEFERRED.value
169+
162170
return WatchlistDTO(
163171
taskId=str(watchlist_model.taskId),
164172
displayId=watchlist_model.displayId,
@@ -168,7 +176,8 @@ def prepare_watchlisted_task_dto(cls, watchlist_model: WatchlistDTO) -> Watchlis
168176
isDeleted=watchlist_model.isDeleted,
169177
labels=labels,
170178
dueAt=watchlist_model.dueAt,
171-
status=watchlist_model.status,
179+
deferredDetails=watchlist_model.deferredDetails,
180+
status=task_status,
172181
priority=watchlist_model.priority,
173182
createdAt=watchlist_model.createdAt,
174183
createdBy=watchlist_model.createdBy,

0 commit comments

Comments
 (0)