diff --git a/routers/projects.py b/routers/projects.py index 977a0ee..38b5583 100644 --- a/routers/projects.py +++ b/routers/projects.py @@ -417,3 +417,27 @@ async def remove_contact( "DELETE FROM contact_projects WHERE contact_id = :cid AND project_id = :pid" ), {"cid": contact_id, "pid": project_id}) return RedirectResponse(url=f"/projects/{project_id}?tab=contacts", status_code=303) + + +# ---- Link unlinking ---- + +@router.post("/{project_id}/links/{link_id}/unlink") +async def unlink_link( + project_id: str, link_id: str, + db: AsyncSession = Depends(get_db), +): + await db.execute(text( + "UPDATE links SET project_id = NULL, updated_at = now() WHERE id = :lid AND project_id = :pid" + ), {"lid": link_id, "pid": project_id}) + await db.commit() + return RedirectResponse(url=f"/projects/{project_id}?tab=links", status_code=303) + + +@router.post("/{project_id}/links/{link_id}/delete") +async def delete_project_link( + project_id: str, link_id: str, + db: AsyncSession = Depends(get_db), +): + repo = BaseRepository("links", db) + await repo.soft_delete(link_id) + return RedirectResponse(url=f"/projects/{project_id}?tab=links", status_code=303) diff --git a/templates/project_detail.html b/templates/project_detail.html index b707769..e76f6d2 100644 --- a/templates/project_detail.html +++ b/templates/project_detail.html @@ -93,6 +93,12 @@ {{ l.url[:50] }}{% if l.url|length > 50 %}...{% endif %}
Edit +
+ +
+
+ +
{% else %}