Implemented Task Manager
This commit is contained in:
62
app.py
62
app.py
@@ -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,
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user