Fix DMS entity assignment and Geschichte document linking

- DMS edit view: add Destinatär, Land, Pächter, Verpachtung dropdowns
  so documents can be assigned to entities after upload
- Geschichte: add M2M dokumente field on GeschichteSeite model
- Geschichte form: checkboxes to select/link Stiftungsgeschichte docs
- Geschichte detail: show linked documents in sidebar with download

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
SysAdmin Agent
2026-03-12 10:40:46 +00:00
parent e6f4c5ba1b
commit 5c9db56158
7 changed files with 167 additions and 12 deletions

View File

@@ -41,6 +41,56 @@
<textarea name="beschreibung" class="form-control" rows="3">{{ dok.beschreibung }}</textarea>
</div>
<!-- Zuordnung -->
<hr>
<h6 class="fw-semibold mb-3"><i class="fas fa-link me-2"></i>Zuordnung</h6>
<div class="row g-3 mb-4">
<div class="col-md-6">
<label class="form-label small fw-semibold">Destinatär</label>
<select name="destinataer_id" class="form-select form-select-sm">
<option value=""> keine </option>
{% for d in destinataere %}
<option value="{{ d.pk }}" {% if dok.destinataer_id == d.pk %}selected{% endif %}>
{{ d.get_full_name }}
</option>
{% endfor %}
</select>
</div>
<div class="col-md-6">
<label class="form-label small fw-semibold">Länderei</label>
<select name="land_id" class="form-select form-select-sm">
<option value=""> keine </option>
{% for l in laendereien %}
<option value="{{ l.pk }}" {% if dok.land_id == l.pk %}selected{% endif %}>
{{ l.lfd_nr }}{% if l.gemeinde %} {{ l.gemeinde }}{% endif %}
</option>
{% endfor %}
</select>
</div>
<div class="col-md-6">
<label class="form-label small fw-semibold">Pächter</label>
<select name="paechter_id" class="form-select form-select-sm">
<option value=""> keine </option>
{% for p in paechter_qs %}
<option value="{{ p.pk }}" {% if dok.paechter_id == p.pk %}selected{% endif %}>
{{ p.get_full_name }}
</option>
{% endfor %}
</select>
</div>
<div class="col-md-6">
<label class="form-label small fw-semibold">Verpachtung</label>
<select name="verpachtung_id" class="form-select form-select-sm">
<option value=""> keine </option>
{% for v in verpachtungen %}
<option value="{{ v.pk }}" {% if dok.verpachtung_id == v.pk %}selected{% endif %}>
{{ v.land.lfd_nr }} {{ v.paechter.get_full_name }} ({{ v.vertragsbeginn|date:"Y" }})
</option>
{% endfor %}
</select>
</div>
</div>
<div class="d-flex gap-2 justify-content-end">
<a href="{% url 'stiftung:dms_detail' pk=dok.pk %}" class="btn btn-outline-secondary">Abbrechen</a>
<button type="submit" class="btn btn-primary">

View File

@@ -120,12 +120,39 @@
</div>
<div class="col-lg-4">
{% if seite.dokumente.exists %}
<div class="card mb-3">
<div class="card-header bg-dark text-white">
<h6 class="mb-0"><i class="fas fa-landmark me-2"></i>Verknüpfte Dokumente</h6>
</div>
<div class="card-body p-0">
<div class="list-group list-group-flush">
{% for dok in seite.dokumente.all %}
<a href="{% url 'stiftung:dms_detail' pk=dok.pk %}" class="list-group-item list-group-item-action">
<div class="d-flex justify-content-between align-items-center">
<div>
<div class="small fw-bold">
{% if dok.is_pdf %}<i class="fas fa-file-pdf text-danger me-1"></i>{% else %}<i class="fas fa-file text-primary me-1"></i>{% endif %}
{{ dok.titel|truncatechars:35 }}
</div>
<small class="text-muted">{{ dok.dateiname_original }} &middot; {{ dok.get_human_size }}</small>
</div>
<span class="btn btn-sm btn-outline-success" title="Herunterladen" onclick="event.preventDefault(); window.location='{% url 'stiftung:dms_download' dok.pk %}';">
<i class="fas fa-download"></i>
</span>
</div>
</a>
{% endfor %}
</div>
</div>
</div>
{% endif %}
<div class="card">
<div class="card-header bg-secondary text-white">
<h6 class="mb-0"><i class="fas fa-list me-2"></i>Weitere Seiten</h6>
</div>
<div class="card-body">
<!-- This could be populated with other history pages -->
<p class="text-muted small">Navigation zu anderen Geschichtsseiten wird hier angezeigt.</p>
</div>
</div>

View File

@@ -181,28 +181,41 @@
{% if geschichte_dokumente %}
<div class="card mt-3">
<div class="card-header bg-dark text-white">
<h6 class="mb-0"><i class="fas fa-landmark me-2"></i>Verfuegbare Geschichtsdokumente</h6>
<h6 class="mb-0"><i class="fas fa-landmark me-2"></i>Dokumente verknüpfen</h6>
</div>
<div class="card-body p-0">
<div class="list-group list-group-flush">
{% for dok in geschichte_dokumente %}
<div class="list-group-item">
<div class="d-flex justify-content-between align-items-start">
<div>
<label class="list-group-item list-group-item-action" style="cursor: pointer;">
<div class="d-flex align-items-start">
<input type="checkbox" name="dokument_ids" value="{{ dok.pk }}"
class="form-check-input me-2 mt-1"
form="geschichteForm"
{% if dok.pk in selected_dok_ids %}checked{% endif %}>
<div class="flex-grow-1">
<div class="small fw-bold">{{ dok.titel|truncatechars:40 }}</div>
<small class="text-muted">{{ dok.dateiname_original }} ({{ dok.get_human_size }})</small>
<br><small class="text-muted">{{ dok.erstellt_am|date:"d.m.Y" }}</small>
</div>
<a href="{% url 'stiftung:dms_download' dok.pk %}" class="btn btn-sm btn-outline-primary" title="Herunterladen">
<a href="{% url 'stiftung:dms_download' dok.pk %}" class="btn btn-sm btn-outline-primary ms-1" title="Herunterladen" onclick="event.stopPropagation();">
<i class="fas fa-download"></i>
</a>
</div>
</div>
</label>
{% endfor %}
</div>
</div>
<div class="card-footer small text-muted">
Dokumente aus dem DMS mit Kontext "Stiftungsgeschichte". Eingegangen per E-Mail oder manuell hochgeladen.
Dokumente aus dem DMS mit Kontext "Stiftungsgeschichte" auswählen, um sie mit diesem Beitrag zu verknüpfen.
</div>
</div>
{% else %}
<div class="card mt-3">
<div class="card-header bg-dark text-white">
<h6 class="mb-0"><i class="fas fa-landmark me-2"></i>Dokumente verknüpfen</h6>
</div>
<div class="card-body text-muted small">
Keine Stiftungsgeschichte-Dokumente im DMS vorhanden. Laden Sie Dokumente mit dem Kontext "Stiftungsgeschichte" im <a href="{% url 'stiftung:dms_upload' %}?kontext=stiftungsgeschichte">DMS hoch</a>.
</div>
</div>
{% endif %}