feat: Add edit and delete functionality for Verwaltungskosten
- Add verwaltungskosten_delete view with confirmation page - Add delete URL route and template - Fix template action buttons to use proper URLs for edit/delete - Include audit logging for deletions - Add comprehensive delete confirmation with entry details - Remove non-functional details button from action group
This commit is contained in:
@@ -219,6 +219,11 @@ urlpatterns = [
|
||||
views.verwaltungskosten_edit,
|
||||
name="verwaltungskosten_edit",
|
||||
),
|
||||
path(
|
||||
"geschaeftsfuehrung/verwaltungskosten/<uuid:pk>/loeschen/",
|
||||
views.verwaltungskosten_delete,
|
||||
name="verwaltungskosten_delete",
|
||||
),
|
||||
path(
|
||||
"verwaltungskosten/mark-paid/",
|
||||
views.mark_expense_paid,
|
||||
|
||||
@@ -4203,6 +4203,42 @@ def verwaltungskosten_edit(request, pk):
|
||||
return render(request, "stiftung/verwaltungskosten_form.html", context)
|
||||
|
||||
|
||||
@login_required
|
||||
def verwaltungskosten_delete(request, pk):
|
||||
"""Lösche Verwaltungskosten"""
|
||||
from stiftung.models import Verwaltungskosten
|
||||
|
||||
verwaltungskosten = get_object_or_404(Verwaltungskosten, pk=pk)
|
||||
|
||||
if request.method == "POST":
|
||||
bezeichnung = verwaltungskosten.bezeichnung
|
||||
|
||||
# Log the deletion
|
||||
from stiftung.audit import log_action
|
||||
log_action(
|
||||
request=request,
|
||||
action="delete",
|
||||
entity_type="verwaltungskosten",
|
||||
entity_id=str(verwaltungskosten.pk),
|
||||
entity_name=bezeichnung,
|
||||
description=f'Verwaltungskosten "{bezeichnung}" wurden gelöscht',
|
||||
)
|
||||
|
||||
verwaltungskosten.delete()
|
||||
messages.success(
|
||||
request,
|
||||
f'Verwaltungskosten "{bezeichnung}" wurden erfolgreich gelöscht.',
|
||||
)
|
||||
return redirect("stiftung:verwaltungskosten_list")
|
||||
|
||||
context = {
|
||||
"verwaltungskosten": verwaltungskosten,
|
||||
"title": f"Verwaltungskosten löschen: {verwaltungskosten.bezeichnung}",
|
||||
}
|
||||
|
||||
return render(request, "stiftung/verwaltungskosten_delete.html", context)
|
||||
|
||||
|
||||
@login_required
|
||||
def mark_expense_paid(request):
|
||||
"""Markiere eine Ausgabe als bezahlt"""
|
||||
|
||||
92
app/templates/stiftung/verwaltungskosten_delete.html
Normal file
92
app/templates/stiftung/verwaltungskosten_delete.html
Normal file
@@ -0,0 +1,92 @@
|
||||
{% extends 'base.html' %}
|
||||
|
||||
{% block title %}Verwaltungskosten löschen - van Hees-Theyssen-Vogel'sche Stiftung{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<div class="d-sm-flex align-items-center justify-content-between mb-4">
|
||||
<h1 class="h3 mb-0 text-gray-800">
|
||||
<i class="fas fa-trash me-2"></i>Verwaltungskosten löschen
|
||||
</h1>
|
||||
<a href="{% url 'stiftung:verwaltungskosten_list' %}" class="btn btn-outline-secondary">
|
||||
<i class="fas fa-arrow-left me-1"></i>Zurück zur Liste
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-lg-8 mx-auto">
|
||||
<div class="card shadow">
|
||||
<div class="card-header py-3 bg-danger">
|
||||
<h6 class="m-0 font-weight-bold text-white">
|
||||
<i class="fas fa-exclamation-triangle me-2"></i>Löschen bestätigen
|
||||
</h6>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="alert alert-warning">
|
||||
<strong>Achtung!</strong> Diese Aktion kann nicht rückgängig gemacht werden.
|
||||
</div>
|
||||
|
||||
<p class="mb-4">
|
||||
Sind Sie sicher, dass Sie die folgenden Verwaltungskosten löschen möchten?
|
||||
</p>
|
||||
|
||||
<div class="table-responsive">
|
||||
<table class="table table-bordered">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><strong>Bezeichnung:</strong></td>
|
||||
<td>{{ verwaltungskosten.bezeichnung }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>Datum:</strong></td>
|
||||
<td>{{ verwaltungskosten.datum|date:"d.m.Y" }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>Betrag:</strong></td>
|
||||
<td><strong>€{{ verwaltungskosten.betrag|floatformat:2 }}</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>Kategorie:</strong></td>
|
||||
<td>{{ verwaltungskosten.get_kategorie_display }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>Status:</strong></td>
|
||||
<td>
|
||||
<span class="badge bg-{{ verwaltungskosten.get_status_color }}">
|
||||
{{ verwaltungskosten.get_status_display }}
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
{% if verwaltungskosten.lieferant_firma %}
|
||||
<tr>
|
||||
<td><strong>Lieferant/Firma:</strong></td>
|
||||
<td>{{ verwaltungskosten.lieferant_firma }}</td>
|
||||
</tr>
|
||||
{% endif %}
|
||||
{% if verwaltungskosten.rechnungsnummer %}
|
||||
<tr>
|
||||
<td><strong>Rechnungsnummer:</strong></td>
|
||||
<td>{{ verwaltungskosten.rechnungsnummer }}</td>
|
||||
</tr>
|
||||
{% endif %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<form method="post" class="d-flex gap-2 justify-content-end">
|
||||
{% csrf_token %}
|
||||
<a href="{% url 'stiftung:verwaltungskosten_list' %}" class="btn btn-secondary">
|
||||
<i class="fas fa-times me-1"></i>Abbrechen
|
||||
</a>
|
||||
<button type="submit" class="btn btn-danger">
|
||||
<i class="fas fa-trash me-1"></i>Endgültig löschen
|
||||
</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
@@ -138,13 +138,10 @@
|
||||
</td>
|
||||
<td>
|
||||
<div class="btn-group btn-group-sm" role="group">
|
||||
<a href="#" class="btn btn-outline-primary" title="Bearbeiten">
|
||||
<a href="{% url 'stiftung:verwaltungskosten_edit' kosten.pk %}" class="btn btn-outline-primary" title="Bearbeiten">
|
||||
<i class="fas fa-edit"></i>
|
||||
</a>
|
||||
<a href="#" class="btn btn-outline-info" title="Details">
|
||||
<i class="fas fa-eye"></i>
|
||||
</a>
|
||||
<a href="#" class="btn btn-outline-danger" title="Löschen">
|
||||
<a href="{% url 'stiftung:verwaltungskosten_delete' kosten.pk %}" class="btn btn-outline-danger" title="Löschen">
|
||||
<i class="fas fa-trash"></i>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user