From 52f13f5023fb26009cf961147a945ba471668660 Mon Sep 17 00:00:00 2001 From: Borgia Leiva Date: Tue, 3 Feb 2026 12:33:20 +0100 Subject: [PATCH] fixed oversight where deleting a project would leave dangling tasks and user-to-project relations --- routers/projects.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/routers/projects.py b/routers/projects.py index 9a39948..b694d3c 100644 --- a/routers/projects.py +++ b/routers/projects.py @@ -205,6 +205,17 @@ def delete_project(project_id: int, db: db_dependency, request: Request): user = get_user_from_jwt(request, db) db_project = get_project_by_id_for_user(user, project_id, db) + ## Remove dangling tasks and user associations + tasks: List[TaskBase] = db.query(TaskBase).filter(getattr(TaskBase, "project_id") == project_id).all() + for task in tasks: + db.delete(task) + db_project.tasks.remove(task) + + users: List[ProjectUserBase] = db.query(ProjectUserBase).join(ProjectUserBase).filter(getattr(ProjectBase, "id") == project_id).all() + for proj_user in users: + db_project.users.remove(proj_user) + proj_user.projects.remove(db_project) + db.delete(db_project) db.commit() return {"detail": "Project deleted successfully"} @@ -217,5 +228,7 @@ def delete_project_task(project_id: int, task_id: int, db: db_dependency, reques db_task = get_task_by_id_for_project(db_project, task_id, db) db.delete(db_task) + db_project.tasks.remove(db_task) + db.commit() return {"detail": "Task deleted successfully"}