feat: refine quick wins workflow and calendar layout

This commit is contained in:
2026-04-15 12:17:58 +02:00
parent 4aa4447c01
commit 2f2e543a79
12 changed files with 405 additions and 128 deletions

View File

@@ -110,33 +110,44 @@ def create():
@login_required
def quick_create():
config = get_quick_task_config()
quick_action = request.form.get("quick_action", "save")
quick_mode = request.form.get("quick_mode", "preset")
created_titles: list[str] = []
if quick_mode == "preset":
quick_win = QuickWin.query.filter_by(id=request.form.get("quick_win_id", type=int), active=True).first()
if not quick_win:
flash("Dieser Quick-Win ist nicht mehr verfügbar.", "error")
return redirect(request.referrer or url_for("tasks.my_tasks"))
title = quick_win.title
effort = quick_win.effort
else:
selected_ids = request.form.getlist("quick_win_ids")
if selected_ids:
quick_wins = QuickWin.query.filter(QuickWin.id.in_(selected_ids), QuickWin.active.is_(True)).order_by(QuickWin.id.asc()).all()
for quick_win in quick_wins:
task = create_quick_task(quick_win.title, quick_win.effort, current_user, description="Quick-Win")
complete_task(task, current_user.id)
created_titles.append(task.title)
if request.form.get("include_custom") == "1":
form = QuickTaskForm(prefix="quick")
form.effort.choices = [(key, values["label"]) for key, values in config.items()]
if not form.validate_on_submit():
custom_title = (form.title.data or "").strip()
extra_errors: list[str] = []
if not custom_title:
extra_errors.append("Bitte gib für „Sonstiges“ einen Titel ein.")
if not form.effort.data or form.effort.data not in config:
extra_errors.append("Bitte wähle für „Sonstiges“ einen Aufwand aus.")
if not form.validate_on_submit() or extra_errors:
for field_errors in form.errors.values():
for error in field_errors:
flash(error, "error")
for error in extra_errors:
flash(error, "error")
return redirect(request.referrer or url_for("tasks.my_tasks"))
title = form.title.data
effort = form.effort.data
task = create_quick_task(title, effort, current_user, description="Quick-Win")
if quick_action == "complete":
task = create_quick_task(custom_title, form.effort.data, current_user, description="Quick-Win")
complete_task(task, current_user.id)
flash(f"Quick-Win „{task.title}“ wurde direkt als erledigt gespeichert.", "success")
created_titles.append(task.title)
if not created_titles:
flash("Bitte wähle mindestens einen Quick-Win aus.", "error")
return redirect(request.referrer or url_for("tasks.my_tasks"))
if len(created_titles) == 1:
flash(f"Quick-Win „{created_titles[0]}“ wurde als erledigt gespeichert.", "success")
else:
flash(f"Quick-Win „{task.title}“ wurde für dich angelegt.", "success")
flash(f"{len(created_titles)} Quick-Wins wurden als erledigt gespeichert.", "success")
return redirect(request.referrer or url_for("tasks.my_tasks"))