Fix email-Destinatär document linking and add email delete
- 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 <noreply@anthropic.com>
This commit is contained in:
@@ -440,6 +440,7 @@ urlpatterns = [
|
||||
# E-Mail-Eingang Destinatäre
|
||||
path("email-eingang/", views.email_eingang_list, name="email_eingang_list"),
|
||||
path("email-eingang/<uuid:pk>/", views.email_eingang_detail, name="email_eingang_detail"),
|
||||
path("email-eingang/<uuid:pk>/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"),
|
||||
|
||||
@@ -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,
|
||||
)
|
||||
|
||||
|
||||
@@ -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
|
||||
# ============================================================
|
||||
|
||||
@@ -211,7 +211,7 @@
|
||||
</div>
|
||||
|
||||
<!-- Metadaten -->
|
||||
<div class="card">
|
||||
<div class="card mb-4">
|
||||
<div class="card-header"><i class="fas fa-info-circle me-2"></i>Metadaten</div>
|
||||
<div class="card-body">
|
||||
<dl class="row mb-0 small">
|
||||
@@ -222,6 +222,23 @@
|
||||
</dl>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Löschen -->
|
||||
<div class="card border-danger">
|
||||
<div class="card-header text-danger">
|
||||
<i class="fas fa-trash-alt me-2"></i>E-Mail löschen
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<p class="small text-muted mb-2">Diese E-Mail unwiderruflich aus dem System entfernen.</p>
|
||||
<form method="post" action="{% url 'stiftung:email_eingang_delete' eingang.pk %}"
|
||||
onsubmit="return confirm('E-Mail wirklich löschen?');">
|
||||
{% csrf_token %}
|
||||
<button type="submit" class="btn btn-outline-danger w-100">
|
||||
<i class="fas fa-trash-alt me-1"></i>Löschen
|
||||
</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
@@ -180,9 +180,18 @@
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
<a href="{% url 'stiftung:email_eingang_detail' e.pk %}" class="btn btn-sm btn-outline-primary">
|
||||
<i class="fas fa-eye"></i>
|
||||
</a>
|
||||
<div class="btn-group btn-group-sm">
|
||||
<a href="{% url 'stiftung:email_eingang_detail' e.pk %}" class="btn btn-outline-primary" title="Details">
|
||||
<i class="fas fa-eye"></i>
|
||||
</a>
|
||||
<form method="post" action="{% url 'stiftung:email_eingang_delete' e.pk %}" class="d-inline"
|
||||
onsubmit="return confirm('E-Mail wirklich löschen?');">
|
||||
{% csrf_token %}
|
||||
<button type="submit" class="btn btn-outline-danger" title="Löschen">
|
||||
<i class="fas fa-trash-alt"></i>
|
||||
</button>
|
||||
</form>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
|
||||
Reference in New Issue
Block a user