Skip to content

Commit

Permalink
Merge pull request #109 from eitchtee/patch-1
Browse files Browse the repository at this point in the history
feat: add duration to Task object
  • Loading branch information
amleczko authored May 7, 2024
2 parents a86432d + c1c625d commit 657d211
Showing 1 changed file with 31 additions and 0 deletions.
31 changes: 31 additions & 0 deletions todoist_api_python/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -130,16 +130,21 @@ class Task:
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"),
Expand All @@ -158,6 +163,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):
Expand Down Expand Up @@ -185,15 +191,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"),
Expand All @@ -204,6 +215,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"],
Expand Down Expand Up @@ -423,3 +435,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,
}

0 comments on commit 657d211

Please sign in to comment.