feat: polish mobile ui and admin quick task settings

This commit is contained in:
2026-04-13 10:52:14 +02:00
parent 42d4f8ec8e
commit 7b53f66406
10 changed files with 559 additions and 74 deletions

View File

@@ -10,7 +10,7 @@ from werkzeug.utils import secure_filename
from ..extensions import csrf, db
from ..forms import AdminUserForm, QuickTaskConfigForm, SettingsProfileForm
from ..models import BadgeDefinition, MonthlyScoreSnapshot, NotificationLog, PushSubscription, TaskInstance, TaskTemplate, User
from ..services.app_settings import get_quick_task_config, set_setting_int
from ..services.app_settings import get_quick_task_config, set_setting_int, set_setting_str
from ..services.badges import earned_badges_for_user
from ..services.notifications import push_enabled
@@ -48,6 +48,16 @@ def index():
form = SettingsProfileForm(original_email=current_user.email, obj=current_user)
admin_form = AdminUserForm(prefix="admin")
quick_task_config_form = QuickTaskConfigForm(prefix="quickconfig")
quick_task_config = get_quick_task_config()
if request.method == "GET":
quick_task_config_form.fast_label.data = quick_task_config["fast"]["label"]
quick_task_config_form.fast_points.data = quick_task_config["fast"]["points"]
quick_task_config_form.normal_label.data = quick_task_config["normal"]["label"]
quick_task_config_form.normal_points.data = quick_task_config["normal"]["points"]
quick_task_config_form.medium_label.data = quick_task_config["medium"]["label"]
quick_task_config_form.medium_points.data = quick_task_config["medium"]["points"]
quick_task_config_form.heavy_label.data = quick_task_config["heavy"]["label"]
quick_task_config_form.heavy_points.data = quick_task_config["heavy"]["points"]
if form.validate_on_submit():
current_user.name = form.name.data.strip()
current_user.email = form.email.data.lower().strip()
@@ -67,7 +77,7 @@ def index():
form=form,
admin_form=admin_form,
quick_task_config_form=quick_task_config_form,
quick_task_config=get_quick_task_config(),
quick_task_config=quick_task_config,
users=User.query.order_by(User.is_admin.desc(), User.name.asc()).all(),
earned_badges=earned_badges_for_user(current_user.id),
push_ready=push_enabled(),
@@ -144,12 +154,16 @@ def update_quick_task_config():
flash(error, "error")
return redirect(url_for("settings.index"))
set_setting_str("quick_task_label_fast", form.fast_label.data)
set_setting_int("quick_task_points_fast", form.fast_points.data)
set_setting_str("quick_task_label_normal", form.normal_label.data)
set_setting_int("quick_task_points_normal", form.normal_points.data)
set_setting_str("quick_task_label_medium", form.medium_label.data)
set_setting_int("quick_task_points_medium", form.medium_points.data)
set_setting_str("quick_task_label_heavy", form.heavy_label.data)
set_setting_int("quick_task_points_heavy", form.heavy_points.data)
db.session.commit()
flash("Schnellaufgaben-Punkte wurden aktualisiert.", "success")
flash("Schnellaufgaben-Aufwand und Punkte wurden aktualisiert.", "success")
return redirect(url_for("settings.index"))

View File

@@ -193,6 +193,11 @@ def calendar_view():
for task in tasks:
tasks_by_day[task.due_date.day].append(task)
mobile_day_groups = [
{"day": day, "tasks": grouped_tasks}
for day, grouped_tasks in sorted(tasks_by_day.items(), key=lambda item: item[0])
]
month_calendar = calendar.Calendar(firstweekday=0).monthdayscalendar(year, month)
return render_template(
"tasks/calendar.html",
@@ -201,6 +206,7 @@ def calendar_view():
current_label=month_label(year, month),
month_calendar=month_calendar,
tasks_by_day=tasks_by_day,
mobile_day_groups=mobile_day_groups,
view=view,
tasks=tasks,
)