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

@@ -247,13 +247,34 @@ def dms_edit(request, pk):
dok.titel = request.POST.get("titel", dok.titel).strip()[:255]
dok.beschreibung = request.POST.get("beschreibung", "").strip()
dok.kontext = request.POST.get("kontext", dok.kontext)
# Entity assignments
dest_id = request.POST.get("destinataer_id", "").strip()
land_id = request.POST.get("land_id", "").strip()
paechter_id = request.POST.get("paechter_id", "").strip()
verp_id = request.POST.get("verpachtung_id", "").strip()
dok.destinataer_id = int(dest_id) if dest_id else None
dok.land_id = int(land_id) if land_id else None
dok.paechter_id = int(paechter_id) if paechter_id else None
dok.verpachtung_id = verp_id if verp_id else None
dok.save()
dok.update_suchvektor()
messages.success(request, "Metadaten gespeichert.")
return redirect("stiftung:dms_detail", pk=dok.pk)
destinataere = Destinataer.objects.filter(aktiv=True).order_by("nachname", "vorname")
laendereien = Land.objects.filter(aktiv=True).order_by("lfd_nr")
paechter_qs = Paechter.objects.filter(aktiv=True).order_by("nachname")
verpachtungen = LandVerpachtung.objects.select_related("land", "paechter").order_by("-vertragsbeginn")[:50]
context = {
"dok": dok,
"kontext_choices": DokumentDatei.KONTEXT_CHOICES,
"destinataere": destinataere,
"laendereien": laendereien,
"paechter_qs": paechter_qs,
"verpachtungen": verpachtungen,
}
return render(request, "stiftung/dms/edit.html", context)

View File

@@ -99,12 +99,19 @@ def geschichte_create(request):
seite.erstellt_von = request.user
seite.aktualisiert_von = request.user
seite.save()
form.save_m2m()
# Link selected DMS documents
dok_ids = request.POST.getlist("dokument_ids")
if dok_ids:
from stiftung.models import DokumentDatei
seite.dokumente.set(DokumentDatei.objects.filter(pk__in=dok_ids))
messages.success(request, f'Geschichtsseite "{seite.titel}" wurde erfolgreich erstellt.')
return redirect('stiftung:geschichte_detail', slug=seite.slug)
else:
form = GeschichteSeiteForm()
# Verfuegbare Stiftungsgeschichte-Dokumente aus DMS
from stiftung.models import DokumentDatei
geschichte_dokumente = DokumentDatei.objects.filter(
@@ -115,6 +122,7 @@ def geschichte_create(request):
'form': form,
'title': 'Neue Geschichtsseite',
'geschichte_dokumente': geschichte_dokumente,
'selected_dok_ids': [],
}
return render(request, 'stiftung/geschichte/form.html', context)
@@ -135,23 +143,33 @@ def geschichte_edit(request, slug):
seite = form.save(commit=False)
seite.aktualisiert_von = request.user
seite.save()
form.save_m2m()
# Update linked DMS documents
dok_ids = request.POST.getlist("dokument_ids")
from stiftung.models import DokumentDatei
seite.dokumente.set(DokumentDatei.objects.filter(pk__in=dok_ids))
messages.success(request, f'Geschichtsseite "{seite.titel}" wurde erfolgreich aktualisiert.')
return redirect('stiftung:geschichte_detail', slug=seite.slug)
else:
form = GeschichteSeiteForm(instance=seite)
# Verfuegbare Stiftungsgeschichte-Dokumente aus DMS
from stiftung.models import DokumentDatei
geschichte_dokumente = DokumentDatei.objects.filter(
kontext="stiftungsgeschichte"
).order_by("-erstellt_am")[:20]
# IDs der bereits verknuepften Dokumente
selected_dok_ids = list(seite.dokumente.values_list("pk", flat=True))
context = {
'form': form,
'seite': seite,
'title': f'Bearbeiten: {seite.titel}',
'geschichte_dokumente': geschichte_dokumente,
'selected_dok_ids': selected_dok_ids,
}
return render(request, 'stiftung/geschichte/form.html', context)