diff --git a/client/templates/measure/task_execute.html b/client/templates/measure/task_execute.html index cc55a68..d007d3e 100644 --- a/client/templates/measure/task_execute.html +++ b/client/templates/measure/task_execute.html @@ -72,7 +72,7 @@
{# Breadcrumb line #}
- @@ -410,7 +410,7 @@
{# Left: Back button #} - @@ -736,7 +736,7 @@ function taskExecute() { // ---- Go to summary ---- goToSummary() { - const recipeId = this.task.version_id || this.task.recipe_id || 0; + const recipeId = this.task.recipe_id || 0; window.location.href = '{{ url_for("measure.task_complete", recipe_id=0) }}'.replace('/0', '/' + recipeId) + '?version_id=' + encodeURIComponent(this.task.version_id || ''); }, diff --git a/server/models/task.py b/server/models/task.py index 74cc7b6..eebe247 100644 --- a/server/models/task.py +++ b/server/models/task.py @@ -39,6 +39,13 @@ class RecipeTask(Base): {"mysql_engine": "InnoDB", "mysql_charset": "utf8mb4"}, ) + @property + def recipe_id(self) -> int | None: + """Shortcut: recipe_id via the version relationship.""" + if self.version: + return self.version.recipe_id + return None + def __repr__(self) -> str: return f"" diff --git a/server/routers/tasks.py b/server/routers/tasks.py index 8204f29..3036038 100644 --- a/server/routers/tasks.py +++ b/server/routers/tasks.py @@ -55,7 +55,10 @@ async def _get_task_or_404(db: AsyncSession, task_id: int) -> RecipeTask: result = await db.execute( select(RecipeTask) .where(RecipeTask.id == task_id) - .options(selectinload(RecipeTask.subtasks)) + .options( + selectinload(RecipeTask.subtasks), + selectinload(RecipeTask.version), + ) ) task = result.scalar_one_or_none() if task is None: diff --git a/server/schemas/task.py b/server/schemas/task.py index 5e49a7c..0aa7b3c 100644 --- a/server/schemas/task.py +++ b/server/schemas/task.py @@ -73,6 +73,7 @@ class TaskResponse(BaseModel): id: int version_id: int + recipe_id: Optional[int] = None order_index: int title: str directive: Optional[str] = None