feat: unlink and delete buttons for links on project detail page

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-06 14:02:22 +00:00
parent e6049336e9
commit b73bd4fc06
2 changed files with 30 additions and 0 deletions

View File

@@ -417,3 +417,27 @@ async def remove_contact(
"DELETE FROM contact_projects WHERE contact_id = :cid AND project_id = :pid" "DELETE FROM contact_projects WHERE contact_id = :cid AND project_id = :pid"
), {"cid": contact_id, "pid": project_id}) ), {"cid": contact_id, "pid": project_id})
return RedirectResponse(url=f"/projects/{project_id}?tab=contacts", status_code=303) 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)

View File

@@ -93,6 +93,12 @@
<span class="row-meta">{{ l.url[:50] }}{% if l.url|length > 50 %}...{% endif %}</span> <span class="row-meta">{{ l.url[:50] }}{% if l.url|length > 50 %}...{% endif %}</span>
<div class="row-actions"> <div class="row-actions">
<a href="/links/{{ l.id }}/edit" class="btn btn-ghost btn-xs">Edit</a> <a href="/links/{{ l.id }}/edit" class="btn btn-ghost btn-xs">Edit</a>
<form action="/projects/{{ item.id }}/links/{{ l.id }}/unlink" method="post" style="display:inline">
<button class="btn btn-ghost btn-xs" title="Unlink from project">Unlink</button>
</form>
<form action="/projects/{{ item.id }}/links/{{ l.id }}/delete" method="post" data-confirm="Delete this link?" style="display:inline">
<button class="btn btn-ghost btn-xs" style="color:var(--red)" title="Delete link">Delete</button>
</form>
</div> </div>
</div> </div>
{% else %} {% else %}