Skip to content

Commit b57a11c

Browse files
authored
Create task_manager.py
0 parents  commit b57a11c

1 file changed

Lines changed: 52 additions & 0 deletions

File tree

taskspark/task_manager.py

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
import json
2+
from datetime import datetime
3+
from pathlib import Path
4+
5+
TASKS_FILE = Path(__file__).parent / "tasks.json"
6+
7+
def load_tasks():
8+
if not TASKS_FILE.exists():
9+
return []
10+
with open(TASKS_FILE, "r") as f:
11+
return json.load(f)
12+
13+
def save_tasks(tasks):
14+
with open(TASKS_FILE, "w") as f:
15+
json.dump(tasks, f, indent=2)
16+
17+
def add_task(title, priority=3, due_date=None):
18+
tasks = load_tasks()
19+
task = {
20+
"title": title,
21+
"priority": priority,
22+
"due_date": due_date,
23+
"completed": False
24+
}
25+
tasks.append(task)
26+
save_tasks(tasks)
27+
print(f"Task added: {title}")
28+
29+
def list_tasks():
30+
tasks = sorted(load_tasks(), key=lambda t: (t["priority"], t.get("due_date") or "9999-12-31"))
31+
for i, task in enumerate(tasks, 1):
32+
status = "✅" if task["completed"] else "❌"
33+
due = task["due_date"] if task["due_date"] else "No due date"
34+
print(f"{i}. [{status}] {task['title']} (Priority {task['priority']}, Due: {due})")
35+
36+
def complete_task(index):
37+
tasks = load_tasks()
38+
try:
39+
tasks[index-1]["completed"] = True
40+
save_tasks(tasks)
41+
print(f"Task completed: {tasks[index-1]['title']}")
42+
except IndexError:
43+
print("Invalid task number")
44+
45+
def remove_task(index):
46+
tasks = load_tasks()
47+
try:
48+
removed = tasks.pop(index-1)
49+
save_tasks(tasks)
50+
print(f"Removed: {removed['title']}")
51+
except IndexError:
52+
print("Invalid task number")

0 commit comments

Comments
 (0)