feat: add floating quick task flow
This commit is contained in:
@@ -5,7 +5,8 @@ from datetime import date, datetime, timedelta
|
||||
from sqlalchemy import select
|
||||
|
||||
from ..extensions import db
|
||||
from ..models import TaskInstance, TaskTemplate
|
||||
from ..models import TaskInstance, TaskTemplate, User
|
||||
from .app_settings import get_quick_task_config
|
||||
from .badges import evaluate_task_badges
|
||||
from .dates import add_months, today_local
|
||||
|
||||
@@ -126,3 +127,33 @@ def complete_task(task: TaskInstance, completed_by_user_id: int) -> TaskInstance
|
||||
if task.completed_by_user:
|
||||
evaluate_task_badges(task.completed_by_user)
|
||||
return task
|
||||
|
||||
|
||||
def create_quick_task(title: str, effort: str, creator: User) -> TaskInstance:
|
||||
config = get_quick_task_config()
|
||||
effort_config = config[effort]
|
||||
template = TaskTemplate(
|
||||
title=title.strip(),
|
||||
description="Schnellaufgabe",
|
||||
default_points=effort_config["points"],
|
||||
default_assigned_user_id=creator.id,
|
||||
recurrence_interval_value=None,
|
||||
recurrence_interval_unit="none",
|
||||
active=False,
|
||||
)
|
||||
db.session.add(template)
|
||||
db.session.flush()
|
||||
|
||||
task = TaskInstance(
|
||||
task_template_id=template.id,
|
||||
title=template.title,
|
||||
description="Schnellaufgabe",
|
||||
assigned_user_id=creator.id,
|
||||
due_date=today_local(),
|
||||
points_awarded=template.default_points,
|
||||
status="open",
|
||||
)
|
||||
refresh_task_status(task, today_local())
|
||||
db.session.add(task)
|
||||
db.session.commit()
|
||||
return task
|
||||
|
||||
Reference in New Issue
Block a user