From a0ba82f92f4175efbb89652df37c8345e3b17835 Mon Sep 17 00:00:00 2001 From: PabloDeLaCruz1 Date: Fri, 21 Aug 2026 13:00:47 -0400 Subject: [PATCH] Fix task filtering and completion persistence --- app/service.py | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/app/service.py b/app/service.py index 8022b93..cfc8e94 100644 --- a/app/service.py +++ b/app/service.py @@ -10,15 +10,19 @@ def list_tasks(status: str | None = None, q: str | None = None) -> list[dict[str """Return task records, optionally filtered by status and search text.""" tasks = load_tasks() filtered: list[dict[str, Any]] = [] + query = q.casefold() if q else None for task in tasks: - # Instructor note: intentional bug for the lab. - # This uses the literal string "status" instead of the query parameter value. - if status and task["status"] != "status": + if status and task["status"] != status: + continue + + if ( + query + and query not in task["title"].casefold() + and query not in task["description"].casefold() + ): continue - # Instructor note: partial feature for the lab. - # The route already accepts `q`, but search is not implemented yet. filtered.append(task) return filtered @@ -53,12 +57,9 @@ def complete_task(task_id: int) -> dict[str, Any] | None: for task in tasks: if task["id"] == task_id: - updated_task = dict(task) - updated_task["status"] = "done" - updated_task["completed_at"] = datetime.now(timezone.utc).isoformat() - - # Instructor note: intentional bug for the lab. - # The updated task is returned, but the stored list is never updated or saved. - return updated_task + task["status"] = "done" + task["completed_at"] = datetime.now(timezone.utc).isoformat() + save_tasks(tasks) + return task return None