first commit
This commit is contained in:
182
seed.py
Normal file
182
seed.py
Normal 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()
|
||||
Reference in New Issue
Block a user