-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtask.py
More file actions
35 lines (30 loc) · 967 Bytes
/
task.py
File metadata and controls
35 lines (30 loc) · 967 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
from dataclasses import dataclass
from datetime import datetime
@dataclass
class Task:
id: int
description: str
status: str # "todo" | "in-progress" | "done"
createdAt: str
updatedAt: str
@staticmethod
def create(id: int, description: str) -> "Task":
now = datetime.now().isoformat(timespec="seconds")
return Task(id=id, description=description, status="todo", createdAt=now, updatedAt=now)
def to_dict(self) -> dict:
return {
"id": self.id,
"description": self.description,
"status": self.status,
"createdAt": self.createdAt,
"updatedAt": self.updatedAt,
}
@staticmethod
def from_dict(data: dict) -> "Task":
return Task(
id=data["id"],
description=data["description"],
status=data["status"],
createdAt=data["createdAt"],
updatedAt=data["updatedAt"],
)