Files
vergabe-teilnahme/vergabe_teilnahme/urls.py
tegwick 5a231223c0 feat(WP-0012): Querschnitt — Freigaben, Felder, Feedback, Suche, Tests
Implements all 8 tasks of the final cross-cutting workplan:

- T01: Generisches Freigabe-Modal (freigabe_modal, freigabe_erteilen views + templates)
- T02: Freigaben-Übersicht pro Ausschreibung (freigaben_uebersicht view + template)
- T03: EntityFieldConfig Admin-Interface (/felder/<entity_type>/ with HTMX toggle)
- T04: CustomAttribute-Panel (full CRUD with sort, lazy HTMX load)
- T05: Feedback-Backlog mit Statusverwaltung + feedback_success.html template
- T06: End-to-End-Tests in vergabe_teilnahme/tests/test_e2e.py (8 tests)
- T07: Globale Suche erweitert (Dokumente, Nachweise, Referenzen, Marktbegleiter)
- T08: Alle Migrationen sauber, 68/68 Tests grün, Ruff-Fehler in neuem Code behoben

Bugfix: URL-Namespace-Fehler in Abgabe-Templates (ausschreibungen:nachbetrachtung:abgabe → ausschreibungen:abgabe)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-11 17:54:38 +02:00

55 lines
2.9 KiB
Python

from django.contrib import admin
from django.conf import settings
from django.conf.urls.static import static
from django.http import JsonResponse
from django.shortcuts import redirect
from django.urls import include, path
from vergabe_teilnahme.apps.core import views as core_views
from vergabe_teilnahme.apps.preise import views as preise_views
def health(request):
return JsonResponse({'status': 'ok'})
def home(request):
return redirect('ausschreibungen:dashboard')
handler404 = 'vergabe_teilnahme.apps.core.views.custom_404'
handler500 = 'vergabe_teilnahme.apps.core.views.custom_500'
urlpatterns = [
path('admin/', admin.site.urls),
path('health/', health),
path('', home, name='home'),
path('ausschreibungen/', include('vergabe_teilnahme.apps.ausschreibungen.urls', namespace='ausschreibungen')),
path('lose/', include('vergabe_teilnahme.apps.lose.urls')),
path('aufgaben/', include('vergabe_teilnahme.apps.aufgaben.global_urls')),
path('dokumente/', include('vergabe_teilnahme.apps.dokumente.urls')),
path('preise/', include('vergabe_teilnahme.apps.preise.urls')),
path('preise/vergleich/', preise_views.globaler_preisvergleich, name='preisvergleich'),
path('partner/', include('vergabe_teilnahme.apps.partner.urls')),
path('bibliothek/', include('vergabe_teilnahme.apps.bibliothek.urls')),
path('marktbegleiter/', include('vergabe_teilnahme.apps.marktbegleiter.urls')),
path('nachbetrachtung/', include('vergabe_teilnahme.apps.nachbetrachtung.urls')),
path('feedback/', include('vergabe_teilnahme.apps.feedback.urls', namespace='feedback')),
path('suche/', core_views.suche, name='suche'),
# Freigaben
path('freigaben/modal/', core_views.freigabe_modal, name='freigabe_modal'),
path('freigaben/erteilen/', core_views.freigabe_erteilen, name='freigabe_erteilen'),
# Admin — Feldkonfiguration
path('felder/<str:entity_type>/', core_views.feld_konfiguration_liste, name='feld_konfiguration_liste'),
path('felder/<str:entity_type>/<str:field_name>/toggle/', core_views.feld_konfiguration_toggle, name='feld_konfiguration_toggle'),
# CustomAttributes
path('core/attrs/<int:content_type_id>/<int:object_id>/', core_views.custom_attributes_panel, name='custom_attributes_panel'),
path('core/attrs/<int:content_type_id>/<int:object_id>/neu/', core_views.custom_attribute_neu, name='custom_attribute_neu'),
path('core/attrs/<int:content_type_id>/<int:object_id>/<int:attr_pk>/bearbeiten/', core_views.custom_attribute_bearbeiten, name='custom_attribute_bearbeiten'),
path('core/attrs/<int:content_type_id>/<int:object_id>/<int:attr_pk>/loeschen/', core_views.custom_attribute_loeschen, name='custom_attribute_loeschen'),
path('core/attrs/<int:content_type_id>/<int:object_id>/<int:attr_pk>/sort/', core_views.custom_attribute_sort, name='custom_attribute_sort'),
]
if settings.DEBUG:
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)