diff --git a/todoist_api_python/models.py b/todoist_api_python/models.py index 7a78719..9bb7047 100644 --- a/todoist_api_python/models.py +++ b/todoist_api_python/models.py @@ -128,16 +128,21 @@ class Task(object): project_id: str section_id: str | None url: str + duration: Duration | None sync_id: str | None = None @classmethod def from_dict(cls, obj): due: Due | None = None + duration: Duration | None = None if obj.get("due"): due = Due.from_dict(obj["due"]) + if obj.get("duration"): + duration = Duration.from_dict(obj["duration"]) + return cls( assignee_id=obj.get("assignee_id"), assigner_id=obj.get("assigner_id"), @@ -156,6 +161,7 @@ def from_dict(cls, obj): project_id=obj["project_id"], section_id=obj["section_id"], url=obj["url"], + duration=duration ) def to_dict(self): @@ -183,15 +189,20 @@ def to_dict(self): "section_id": self.section_id, "sync_id": self.sync_id, "url": self.url, + "duration": self.duration } @classmethod def from_quick_add_response(cls, obj): due: Due | None = None + duration: Duration | None = None if obj.get("due"): due = Due.from_quick_add_response(obj) + if obj.get("duration"): + duration = Duration.from_dict(obj["duration"]) + return cls( assignee_id=obj.get("responsible_uid"), assigner_id=obj.get("assigned_by_uid"), @@ -202,6 +213,7 @@ def from_quick_add_response(cls, obj): creator_id=obj["added_by_uid"], description=obj["description"], due=due, + duration=duration, id=obj["id"], labels=obj["labels"], order=obj["child_order"], @@ -421,3 +433,22 @@ def from_dict(cls, obj: dict[str, Any]) -> CompletedItems: has_more=obj["has_more"], next_cursor=obj.get("next_cursor"), ) + + +@dataclass +class Duration(object): + amount: int + unit: str + + @classmethod + def from_dict(cls, obj): + return cls( + amount=obj["amount"], + unit=obj["unit"], + ) + + def to_dict(self): + return { + "amount": self.amount, + "unit": self.unit, + }