vergabe-teilnahme/vergabe_teilnahme/apps/aufgaben/admin.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

34 lines
1.1 KiB
Python

from django.contrib import admin
from .models import Aufgabe, AufgabenVerknuepfung, Bieterfrage, ExternalIssue
class AufgabenVerknuepfungInline(admin.TabularInline):
model = AufgabenVerknuepfung
extra = 0
readonly_fields = ['ziel', 'erstellt_am']
@admin.register(Aufgabe)
class AufgabeAdmin(admin.ModelAdmin):
list_display = ['titel', 'typ', 'status', 'prioritaet', 'frist', 'verantwortlicher']
list_filter = ['typ', 'status', 'prioritaet']
inlines = [AufgabenVerknuepfungInline]
@admin.register(AufgabenVerknuepfung)
class AufgabenVerknuepfungAdmin(admin.ModelAdmin):
list_display = ['aufgabe', 'content_type', 'object_id', 'erstellt_am']
list_filter = ['content_type']
@admin.register(ExternalIssue)
class ExternalIssueAdmin(admin.ModelAdmin):
list_display = ['aufgabe', 'system', 'issue_key', 'sync_status', 'letzter_sync']
list_filter = ['system', 'sync_status']
@admin.register(Bieterfrage)
class BieterfragAdmin(admin.ModelAdmin):
list_display = ['fragentext', 'status', 'prioritaet', 'einreichungsdatum', 'eingearbeitet']
list_filter = ['status', 'prioritaet', 'eingearbeitet']