v4.1.0: DMS email documents, category-specific Nachweis linking, version system
Some checks failed
CI/CD Pipeline / test (push) Has been cancelled
CI/CD Pipeline / deploy (push) Has been cancelled
Code Quality / quality (push) Has been cancelled

- Save cover email body as DMS document with new 'email' context type
- Show email body separately from attachments in email detail view
- Add per-category DMS document assignment in quarterly confirmation
  (Studiennachweis, Einkommenssituation, Vermögenssituation)
- Add VERSION file and context processor for automatic version display
- Add MCP server, agent system, import/export, and new migrations
- Update compose files and production environment template

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
SysAdmin Agent
2026-03-15 18:48:52 +00:00
parent faeb7c1073
commit e0b377014c
49 changed files with 5913 additions and 55 deletions

View File

@@ -101,11 +101,43 @@
</div>
</div>
{# E-Mail-Dokument (Cover-Email als DMS-Dokument) #}
{% if email_dokument %}
<div class="card mb-4 border-primary">
<div class="card-header bg-primary text-white">
<i class="fas fa-envelope me-2"></i>E-Mail als Dokument
</div>
<div class="card-body">
<div class="d-flex justify-content-between align-items-center">
<div>
<strong>{{ email_dokument.titel }}</strong>
<br><small class="text-muted">{{ email_dokument.get_human_size }} &middot; Erstellt {{ email_dokument.erstellt_am|date:"d.m.Y H:i" }}</small>
</div>
<div class="btn-group btn-group-sm">
<a href="{% url 'stiftung:dms_download' email_dokument.pk %}" class="btn btn-outline-primary" title="Herunterladen">
<i class="fas fa-download me-1"></i>Herunterladen
</a>
<a href="{% url 'stiftung:dms_detail' email_dokument.pk %}" class="btn btn-outline-secondary" title="Im DMS anzeigen">
<i class="fas fa-external-link-alt me-1"></i>Im DMS
</a>
</div>
</div>
{% if anhaenge_dokumente %}
<hr class="my-2">
<small class="text-muted"><i class="fas fa-paperclip me-1"></i>Diese E-Mail hat {{ anhaenge_dokumente|length }} Anhang/Anhaenge (siehe unten)</small>
{% endif %}
</div>
</div>
{% endif %}
{# Anhaenge / DMS-Dokumente #}
{% if dms_dokumente %}
{% if anhaenge_dokumente %}
<div class="card mb-4">
<div class="card-header">
<i class="fas fa-paperclip me-2"></i>Anhaenge ({{ dms_dokumente|length }})
<i class="fas fa-paperclip me-2"></i>Anhaenge ({{ anhaenge_dokumente|length }})
{% if email_dokument %}
<small class="text-muted ms-2">gehoeren zur obigen E-Mail</small>
{% endif %}
</div>
<div class="card-body p-0">
<table class="table mb-0">
@@ -118,17 +150,22 @@
</tr>
</thead>
<tbody>
{% for dok in dms_dokumente %}
{% for dok in anhaenge_dokumente %}
<tr>
<td>{{ dok.dateiname_original|default:dok.titel }}</td>
<td><span class="text-muted small">{{ dok.dateityp|default:"" }}</span></td>
<td><span class="text-muted small">{{ dok.get_human_size }}</span></td>
<td>
{% if dok.datei %}
<a href="{% url 'stiftung:dms_download' dok.pk %}" class="btn btn-sm btn-outline-primary">
<i class="fas fa-download me-1"></i>Herunterladen
</a>
{% endif %}
<div class="btn-group btn-group-sm">
{% if dok.datei %}
<a href="{% url 'stiftung:dms_download' dok.pk %}" class="btn btn-outline-primary" title="Herunterladen">
<i class="fas fa-download"></i>
</a>
{% endif %}
<a href="{% url 'stiftung:dms_detail' dok.pk %}" class="btn btn-outline-secondary" title="Im DMS anzeigen">
<i class="fas fa-external-link-alt"></i>
</a>
</div>
</td>
</tr>
{% endfor %}
@@ -136,7 +173,7 @@
</table>
</div>
</div>
{% else %}
{% elif not email_dokument %}
<div class="card mb-4">
<div class="card-body text-muted text-center py-3">
<i class="fas fa-paperclip me-1"></i>Keine Anhaenge in dieser E-Mail.