feat: add persistent badges and admin badge page

This commit is contained in:
2026-04-13 10:19:38 +02:00
parent 3c99c3683e
commit c36abe82a8
27 changed files with 576 additions and 100 deletions

36
seed.py
View File

@@ -6,6 +6,7 @@ from app import create_app
from app.cli import seed_badges
from app.extensions import db
from app.models import TaskInstance, TaskTemplate, User
from app.services.badges import evaluate_task_badges
from app.services.monthly import archive_months_missing_up_to_previous
@@ -16,6 +17,16 @@ def seed_database() -> None:
db.create_all()
seed_badges()
admin = User(
name="Henri",
email="mail@hnz.io",
avatar_path="images/avatars/default.svg",
is_admin=True,
notification_task_due_enabled=True,
notification_monthly_winner_enabled=True,
)
admin.set_password("putzliga123")
anna = User(
name="Anna",
email="anna@putzliga.local",
@@ -33,7 +44,7 @@ def seed_database() -> None:
)
ben.set_password("putzliga123")
db.session.add_all([anna, ben])
db.session.add_all([admin, anna, ben])
db.session.flush()
templates = [
@@ -72,6 +83,14 @@ def seed_database() -> None:
recurrence_interval_unit="none",
active=True,
),
TaskTemplate(
title="Flur-Grundreinigung",
description="Einmal alles: saugen, wischen, Schuhe sortieren.",
default_points=28,
default_assigned_user_id=ben.id,
recurrence_interval_unit="none",
active=True,
),
TaskTemplate(
title="Bettwäsche wechseln",
description="Neue Bettwäsche aufziehen.",
@@ -130,6 +149,17 @@ def seed_database() -> None:
task_template_id=templates[4].id,
title=templates[4].title,
description=templates[4].description,
assigned_user_id=ben.id,
due_date=(now - timedelta(days=3)).date(),
status="completed",
completed_at=current_month_anchor - timedelta(days=2),
completed_by_user_id=anna.id,
points_awarded=28,
),
TaskInstance(
task_template_id=templates[5].id,
title=templates[5].title,
description=templates[5].description,
assigned_user_id=anna.id,
due_date=(now - timedelta(days=9)).date(),
status="completed",
@@ -141,7 +171,7 @@ def seed_database() -> None:
task_template_id=templates[1].id,
title=templates[1].title,
description=templates[1].description,
assigned_user_id=ben.id,
assigned_user_id=anna.id,
due_date=(previous_month_anchor - timedelta(days=1)).date(),
status="completed",
completed_at=previous_month_anchor,
@@ -174,6 +204,8 @@ def seed_database() -> None:
db.session.add_all(instances)
db.session.commit()
for user in (admin, anna, ben):
evaluate_task_badges(user)
archive_months_missing_up_to_previous()
print("Seed-Daten geschrieben.")