first commit

This commit is contained in:
2026-04-13 08:32:28 +02:00
commit 1074a91487
72 changed files with 4078 additions and 0 deletions

182
seed.py Normal file
View File

@@ -0,0 +1,182 @@
from __future__ import annotations
from datetime import datetime, timedelta
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.monthly import archive_months_missing_up_to_previous
def seed_database() -> None:
app = create_app()
with app.app_context():
db.drop_all()
db.create_all()
seed_badges()
anna = User(
name="Anna",
email="anna@putzliga.local",
avatar_path="images/avatars/anna.svg",
notification_task_due_enabled=True,
notification_monthly_winner_enabled=True,
)
anna.set_password("putzliga123")
ben = User(
name="Ben",
email="ben@putzliga.local",
avatar_path="images/avatars/ben.svg",
notification_task_due_enabled=True,
notification_monthly_winner_enabled=False,
)
ben.set_password("putzliga123")
db.session.add_all([anna, ben])
db.session.flush()
templates = [
TaskTemplate(
title="Küche wischen",
description="Arbeitsfläche, Herd und Tisch sauber machen.",
default_points=12,
default_assigned_user_id=anna.id,
recurrence_interval_value=3,
recurrence_interval_unit="days",
active=True,
),
TaskTemplate(
title="Bad putzen",
description="Waschbecken, Spiegel und Dusche reinigen.",
default_points=20,
default_assigned_user_id=ben.id,
recurrence_interval_value=1,
recurrence_interval_unit="weeks",
active=True,
),
TaskTemplate(
title="Müll runterbringen",
description="Restmüll, Papier und Bio entsorgen.",
default_points=8,
default_assigned_user_id=anna.id,
recurrence_interval_value=1,
recurrence_interval_unit="weeks",
active=True,
),
TaskTemplate(
title="Fensterbank entstauben",
description="Wohnzimmer und Flur mitnehmen.",
default_points=6,
default_assigned_user_id=ben.id,
recurrence_interval_unit="none",
active=True,
),
TaskTemplate(
title="Bettwäsche wechseln",
description="Neue Bettwäsche aufziehen.",
default_points=15,
default_assigned_user_id=anna.id,
recurrence_interval_value=1,
recurrence_interval_unit="months",
active=True,
),
]
db.session.add_all(templates)
db.session.flush()
now = datetime.now()
current_month_anchor = now.replace(day=5, hour=10, minute=0, second=0, microsecond=0)
previous_month_anchor = (current_month_anchor.replace(day=1) - timedelta(days=3)).replace(day=10)
instances = [
TaskInstance(
task_template_id=templates[0].id,
title=templates[0].title,
description=templates[0].description,
assigned_user_id=anna.id,
due_date=(now + timedelta(days=1)).date(),
status="soon",
points_awarded=12,
),
TaskInstance(
task_template_id=templates[1].id,
title=templates[1].title,
description=templates[1].description,
assigned_user_id=ben.id,
due_date=(now - timedelta(days=1)).date(),
status="overdue",
points_awarded=20,
),
TaskInstance(
task_template_id=templates[2].id,
title=templates[2].title,
description=templates[2].description,
assigned_user_id=anna.id,
due_date=(now + timedelta(days=4)).date(),
status="open",
points_awarded=8,
),
TaskInstance(
task_template_id=templates[3].id,
title=templates[3].title,
description=templates[3].description,
assigned_user_id=ben.id,
due_date=(now + timedelta(days=2)).date(),
status="soon",
points_awarded=6,
),
TaskInstance(
task_template_id=templates[4].id,
title=templates[4].title,
description=templates[4].description,
assigned_user_id=anna.id,
due_date=(now - timedelta(days=9)).date(),
status="completed",
completed_at=current_month_anchor - timedelta(days=2),
completed_by_user_id=anna.id,
points_awarded=15,
),
TaskInstance(
task_template_id=templates[1].id,
title=templates[1].title,
description=templates[1].description,
assigned_user_id=ben.id,
due_date=(previous_month_anchor - timedelta(days=1)).date(),
status="completed",
completed_at=previous_month_anchor,
completed_by_user_id=ben.id,
points_awarded=20,
),
TaskInstance(
task_template_id=templates[0].id,
title=templates[0].title,
description=templates[0].description,
assigned_user_id=anna.id,
due_date=(previous_month_anchor - timedelta(days=2)).date(),
status="completed",
completed_at=previous_month_anchor - timedelta(days=1),
completed_by_user_id=anna.id,
points_awarded=12,
),
TaskInstance(
task_template_id=templates[2].id,
title=templates[2].title,
description=templates[2].description,
assigned_user_id=anna.id,
due_date=(previous_month_anchor + timedelta(days=2)).date(),
status="completed",
completed_at=previous_month_anchor + timedelta(days=2),
completed_by_user_id=anna.id,
points_awarded=8,
),
]
db.session.add_all(instances)
db.session.commit()
archive_months_missing_up_to_previous()
print("Seed-Daten geschrieben.")
if __name__ == "__main__":
seed_database()