Implemented Task Manager

This commit is contained in:
2026-04-13 14:25:53 -05:00
parent 1aadf40164
commit d2604b5c10
9 changed files with 234 additions and 6 deletions

62
app.py
View File

@@ -28,6 +28,14 @@ with open("./config.json", "r", encoding="utf-8") as file:
db = mongo.db
def partition(predicate, iterable):
trues = []
falses = []
for item in iterable:
(trues if predicate(item) else falses).append(item)
return falses, trues
@app.context_processor
def inject_data():
ddata = db.domains.find_one({"id": request.endpoint})
@@ -190,3 +198,57 @@ def database_edit(collection, oid):
name=name,
document=document,
)
@app.route("/tasks", methods=["GET", "POST"])
def tasks():
print(request.form, request.method)
if request.method == "POST":
act = request.form.get("action", "save")
match act:
case "save":
oid = request.form.get("oid")
if oid:
db.tasks.update_one(
{"_id": ObjectId(oid)},
{
"$set": {
"id": request.form.get("tid") or "000",
"txt": request.form.get("content", ""),
"pre": request.form.get("pre", "").split(),
}
},
)
else:
db.tasks.insert_one(
{
"id": request.form.get("tid") or "000",
"txt": request.form.get("content", ""),
"pre": request.form.get("pre", "").split(),
"done": False,
}
)
case "delete":
oid = request.form.get("oid")
db.tasks.delete_one({"_id": ObjectId(oid)})
case "mark":
oid = request.form.get("oid")
db.tasks.update_one(
{"_id": ObjectId(oid)},
{"$set": {"done": request.form.get("done") == "False"}},
)
tasks = sorted(db.tasks.find(), key=lambda task: task["id"])
other_tasks, complete_tasks = partition(lambda task: task["done"], tasks)
active_tasks, blocked_tasks = partition(
lambda task: any(
any(not ot["done"] for ot in tasks if ot["id"] == pre)
for pre in task["pre"]
),
other_tasks,
)
return render_template(
"tasks.html",
active_tasks=active_tasks,
blocked_tasks=blocked_tasks,
complete_tasks=complete_tasks,
)