feat: serve isolated companies below a fixed product path
All checks were successful
Application acceptance / application-tests (push) Successful in 1m12s
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
Build and Publish Container Image / build-and-push (push) Successful in 25s

Assistant: codex
Assistant-Model: gpt-6-astra
Assistant-Session: 01a07ff8-19d0-7820-b4d0-1353833cb7fc
This commit is contained in:
tegwick 2026-09-11 21:29:26 +02:00
parent 09e2239bc6
commit 9345a1bb1a
28 changed files with 350 additions and 117 deletions

View file

@ -1,4 +1,5 @@
from django.shortcuts import get_object_or_404, redirect, render
from django.urls import reverse
from vergabe_teilnahme.apps.ausschreibungen.models import Ausschreibung
from vergabe_teilnahme.apps.bibliothek.models import Nachweis
@ -13,8 +14,8 @@ def _is_htmx(request):
def _ausschreibung_breadcrumbs(ausschreibung, *extra):
crumbs = [
{'label': 'Ausschreibungen', 'url': '/ausschreibungen/'},
{'label': ausschreibung.titel, 'url': f'/ausschreibungen/{ausschreibung.pk}/'},
{'label': 'Ausschreibungen', 'url': reverse('ausschreibungen:liste')},
{'label': ausschreibung.titel, 'url': reverse('ausschreibungen:detail', kwargs={'pk': ausschreibung.pk})},
]
for label, url in extra:
crumbs.append({'label': label, 'url': url})
@ -65,7 +66,7 @@ def los_neu(request, ausschreibung_id):
'ausschreibung': ausschreibung,
'titel': 'Los hinzufügen',
'breadcrumbs': _ausschreibung_breadcrumbs(ausschreibung,
('Lose', f'/ausschreibungen/{ausschreibung_id}/lose/'),
('Lose', reverse('ausschreibungen:lose:liste', kwargs={'ausschreibung_id': ausschreibung_id})),
('Neu', None)),
})
@ -79,7 +80,7 @@ def los_detail(request, ausschreibung_id, los_pk):
'los': los,
'anforderungen': anforderungen,
'breadcrumbs': _ausschreibung_breadcrumbs(ausschreibung,
('Lose', f'/ausschreibungen/{ausschreibung_id}/lose/'),
('Lose', reverse('ausschreibungen:lose:liste', kwargs={'ausschreibung_id': ausschreibung_id})),
(str(los), None)),
})
@ -97,8 +98,8 @@ def los_bearbeiten(request, ausschreibung_id, los_pk):
'los': los,
'titel': 'Los bearbeiten',
'breadcrumbs': _ausschreibung_breadcrumbs(ausschreibung,
('Lose', f'/ausschreibungen/{ausschreibung_id}/lose/'),
(str(los), f'/ausschreibungen/{ausschreibung_id}/lose/{los_pk}/'),
('Lose', reverse('ausschreibungen:lose:liste', kwargs={'ausschreibung_id': ausschreibung_id})),
(str(los), reverse('ausschreibungen:lose:detail', kwargs={'ausschreibung_id': ausschreibung_id, 'los_pk': los_pk})),
('Bearbeiten', None)),
})
@ -113,8 +114,8 @@ def los_loeschen(request, ausschreibung_id, los_pk):
'ausschreibung': ausschreibung,
'los': los,
'breadcrumbs': _ausschreibung_breadcrumbs(ausschreibung,
('Lose', f'/ausschreibungen/{ausschreibung_id}/lose/'),
(str(los), f'/ausschreibungen/{ausschreibung_id}/lose/{los_pk}/'),
('Lose', reverse('ausschreibungen:lose:liste', kwargs={'ausschreibung_id': ausschreibung_id})),
(str(los), reverse('ausschreibungen:lose:detail', kwargs={'ausschreibung_id': ausschreibung_id, 'los_pk': los_pk})),
('Löschen', None)),
})
@ -187,7 +188,7 @@ def anforderung_neu(request, ausschreibung_id):
'ausschreibung': ausschreibung,
'titel': 'Anforderung anlegen',
'breadcrumbs': _ausschreibung_breadcrumbs(ausschreibung,
('Anforderungen', f'/ausschreibungen/{ausschreibung_id}/lose/anforderungen/'),
('Anforderungen', reverse('ausschreibungen:lose:anforderungen_liste', kwargs={'ausschreibung_id': ausschreibung_id})),
('Neu', None)),
})
@ -201,7 +202,7 @@ def anforderung_detail(request, ausschreibung_id, pk):
'anforderung': anforderung,
'aufgaben': aufgaben,
'breadcrumbs': _ausschreibung_breadcrumbs(ausschreibung,
('Anforderungen', f'/ausschreibungen/{ausschreibung_id}/lose/anforderungen/'),
('Anforderungen', reverse('ausschreibungen:lose:anforderungen_liste', kwargs={'ausschreibung_id': ausschreibung_id})),
(anforderung.titel[:50], None)),
})
@ -220,8 +221,8 @@ def anforderung_bearbeiten(request, ausschreibung_id, pk):
'anforderung': anforderung,
'titel': 'Anforderung bearbeiten',
'breadcrumbs': _ausschreibung_breadcrumbs(ausschreibung,
('Anforderungen', f'/ausschreibungen/{ausschreibung_id}/lose/anforderungen/'),
(anforderung.titel[:50], f'/ausschreibungen/{ausschreibung_id}/lose/anforderungen/{pk}/'),
('Anforderungen', reverse('ausschreibungen:lose:anforderungen_liste', kwargs={'ausschreibung_id': ausschreibung_id})),
(anforderung.titel[:50], reverse('ausschreibungen:lose:anforderung_detail', kwargs={'ausschreibung_id': ausschreibung_id, 'pk': pk})),
('Bearbeiten', None)),
})