-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathtasks.py
37 lines (31 loc) · 1.22 KB
/
tasks.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
import heapq
from datetime import datetime
class Task:
def __init__(self, task_name, priority, deadline, time, status='active'):
self.task_name = task_name
self.priority = priority
self.deadline = deadline
self.time = time
self.status = status
def __lt__(self, other):
if self.priority == other.priority:
return self.deadline < other.deadline
return self.priority < other.priority
class TaskManager:
def __init__(self):
self.tasks = []
def add_task(self, task_name, priority, deadline, time):
deadline_date = datetime.strptime(deadline, "%Y-%m-%d").date()
new_task = Task(task_name, priority, deadline_date, time)
heapq.heappush(self.tasks, new_task)
def remove_task(self, task_name):
self.tasks = [task for task in self.tasks if task.task_name != task_name]
heapq.heapify(self.tasks)
def get_all_tasks(self):
return [{
'task_name': task.task_name,
'priority': task.priority,
'deadline': task.deadline.strftime("%Y-%m-%d"),
'time': task.time,
'status': task.status
} for task in self.tasks]