From f4fc512ad3f774506c628f284254f8dbf64b7f60 Mon Sep 17 00:00:00 2001 From: SysAdmin Agent Date: Thu, 12 Mar 2026 07:57:25 +0000 Subject: [PATCH] =?UTF-8?q?Fix=20email-Destinat=C3=A4r=20document=20linkin?= =?UTF-8?q?g=20and=20add=20email=20delete?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - When manually assigning an email to a Destinatär, also update associated DokumentLink records so attachments appear in the Destinatär's Dokumente tab - Add email delete functionality (view, URL, buttons in list and detail) Co-Authored-By: Claude Opus 4.6 --- app/stiftung/urls.py | 1 + app/stiftung/views/__init__.py | 1 + app/stiftung/views/geschichte.py | 17 +++++++++++++++++ .../stiftung/email_eingang/detail.html | 19 ++++++++++++++++++- .../stiftung/email_eingang/list.html | 15 ++++++++++++--- 5 files changed, 49 insertions(+), 4 deletions(-) diff --git a/app/stiftung/urls.py b/app/stiftung/urls.py index 9f493d6..89d343a 100644 --- a/app/stiftung/urls.py +++ b/app/stiftung/urls.py @@ -440,6 +440,7 @@ urlpatterns = [ # E-Mail-Eingang Destinatäre path("email-eingang/", views.email_eingang_list, name="email_eingang_list"), path("email-eingang//", views.email_eingang_detail, name="email_eingang_detail"), + path("email-eingang//loeschen/", views.email_eingang_delete, name="email_eingang_delete"), path("email-eingang/poll/", views.email_eingang_poll_trigger, name="email_eingang_poll_trigger"), # Kalender URLs path("kalender/", views.kalender_view, name="kalender"), diff --git a/app/stiftung/views/__init__.py b/app/stiftung/views/__init__.py index dce7bd0..79d2764 100644 --- a/app/stiftung/views/__init__.py +++ b/app/stiftung/views/__init__.py @@ -89,6 +89,7 @@ from .geschichte import ( # noqa: F401 kalender_api_events, email_eingang_list, email_eingang_detail, + email_eingang_delete, email_eingang_poll_trigger, ) diff --git a/app/stiftung/views/geschichte.py b/app/stiftung/views/geschichte.py index 158431e..5f71712 100644 --- a/app/stiftung/views/geschichte.py +++ b/app/stiftung/views/geschichte.py @@ -643,6 +643,11 @@ def email_eingang_detail(request, pk): eingang.destinataer = destinataer eingang.status = "zugewiesen" eingang.save() + # Verknüpfte DokumentLinks ebenfalls dem Destinatär zuordnen + if eingang.paperless_dokument_ids: + DokumentLink.objects.filter( + paperless_document_id__in=eingang.paperless_dokument_ids + ).update(destinataer_id=destinataer.pk) messages.success( request, f"E-Mail wurde {destinataer} zugeordnet.", @@ -716,6 +721,18 @@ def email_eingang_poll_trigger(request): return redirect("stiftung:email_eingang_list") +@login_required +def email_eingang_delete(request, pk): + """Löscht eine eingegangene E-Mail.""" + eingang = get_object_or_404(DestinataerEmailEingang, pk=pk) + if request.method == "POST": + betreff = eingang.betreff or "(kein Betreff)" + eingang.delete() + messages.success(request, f'E-Mail "{betreff}" wurde gelöscht.') + return redirect("stiftung:email_eingang_list") + return redirect("stiftung:email_eingang_detail", pk=pk) + + # ============================================================ # Veranstaltungsmodul # ============================================================ diff --git a/app/templates/stiftung/email_eingang/detail.html b/app/templates/stiftung/email_eingang/detail.html index a80c9d9..de44e58 100644 --- a/app/templates/stiftung/email_eingang/detail.html +++ b/app/templates/stiftung/email_eingang/detail.html @@ -211,7 +211,7 @@ -
+
Metadaten
@@ -222,6 +222,23 @@
+ + +
+
+ E-Mail löschen +
+
+

Diese E-Mail unwiderruflich aus dem System entfernen.

+
+ {% csrf_token %} + +
+
+
{% endblock %} diff --git a/app/templates/stiftung/email_eingang/list.html b/app/templates/stiftung/email_eingang/list.html index b2e74b4..c327d6f 100644 --- a/app/templates/stiftung/email_eingang/list.html +++ b/app/templates/stiftung/email_eingang/list.html @@ -180,9 +180,18 @@ {% endif %} - - - +
+ + + +
+ {% csrf_token %} + +
+
{% endfor %}