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:
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user