-
Notifications
You must be signed in to change notification settings - Fork 0
/
save.py
92 lines (62 loc) · 2.73 KB
/
save.py
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
from utils.time import Time
from models.course import Course
from models.task import Task, TaskStatus
from models.event import Event
from storage import storage
def get_courses():
courses = storage().get("courses").as_dict()
return [Course(k, v.get("name")) for k, v in courses.items()]
def get_course(course_id: str):
course = storage().get("courses").get(course_id).as_dict()
return Course(course_id, course.get("name"))
def add_course(course: Course):
return storage().get("courses").add(course.id, {"name": course.name})
def remove_course(id: str):
return storage().get("courses").remove(id)
def add_tasks(course_id: str, new_tasks: list[Task]):
new_tasks = [(task.id, {
"name": task.name,
"status": task.status.value
}) for task in new_tasks]
return storage().get("courses").get(course_id).get("tasks").add_all(new_tasks)
def remove_task(course_id: str, task: str):
return storage().get("courses").get(course_id).get("tasks").remove(task)
def get_task(course_id: str, task_id: str):
task = storage().get("courses").get(course_id).get("tasks").get(task_id).as_dict()
return Task(task_id, task.get("name"), course_id, TaskStatus(task.get("status")))
def get_tasks(course_id: str):
tasks = storage().get("courses").get(course_id).get("tasks").as_dict()
return [Task(k, v.get("name"), course_id, TaskStatus(v.get("status"))) for k, v in tasks.items()]
def get_all_tasks():
courses = get_courses()
return [task for course in courses for task in get_tasks(course.id)]
def set_task_status(course_id: str, task_id: str, status: TaskStatus):
return storage().get("courses").get(course_id).get("tasks").get(task_id).edit("status", status.value)
def start_timer(time: float, course_id: str, task_id: str):
return storage().get("timer").add("temp", {
"start": time,
"course_id": course_id,
"task_id": task_id,
})
def end_timer():
return storage().get("timer").remove("temp")
def get_current_timer():
return storage().get("timer").get("temp").as_dict()
def add_current_study(date: str, start_timer: Time, end_timer: Time, course_id: str, task_id: str):
events = storage().get("timer").get("events").get(date).as_dict()
return storage().get("timer").get("events").get(date).add(len(events) + 1, {
"start": start_timer.timestamp,
"end": end_timer.timestamp,
"course_id": course_id,
"task_id": task_id,
})
def get_events(date: Time):
date = date.get_date()
events = storage().get("timer").get("events").get(date).as_dict()
return [Event(
k,
Time(v.get("start")),
Time(v.get("end")),
v.get("course_id"),
v.get("task_id"))
for k, v in events.items()]