vergabe-teilnahme/vergabe_teilnahme/apps/aufgaben/link_registry.py
tegwick 816c281f6a feat(aufgaben): Verknüpfungen, implizite Fälligkeit, Issue-Facade (WP-0015)
- Aufgabe.erstellt_am für implizite 7-Tage-Fälligkeit
- frist_effektiv property; ist_ueberfaellig nutzt sie
- AufgabenVerknuepfung (GenericForeignKey) mit HTMX-Panel
- ExternalIssue (OneToOne) mit IssueAdapter-ABC und HTMX-Panel
- link_registry.py und issue_facade.py als zentrale Registries
- 8 neue Tests, 76 gesamt grün

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-14 04:18:28 +02:00

27 lines
835 B
Python

from django.contrib.contenttypes.models import ContentType
_VERKNUEPFBARE_MODELLE = [
('lose', 'Anforderung'),
('lose', 'Los'),
('aufgaben', 'Bieterfrage'),
('dokumente', 'Dokument'),
('preise', 'Preispunkt'),
]
def verknuepfbare_typen():
"""Gibt eine geordnete Liste (ContentType, label) der verknüpfbaren Typen zurück."""
result = []
for app_label, model_name in _VERKNUEPFBARE_MODELLE:
try:
ct = ContentType.objects.get(app_label=app_label, model=model_name.lower())
result.append((ct, f'{ct.app_label} / {model_name}'))
except ContentType.DoesNotExist:
pass
return result
def ziel_choices():
"""Gibt (content_type_id, label)-Tupel für ein ChoiceField zurück."""
return [(ct.pk, label) for ct, label in verknuepfbare_typen()]