All checks were successful
Build containers when image tags change / build-if-image-changed (data-loader, loader, initContainers, init-container, git.baumann.gr/adebaumann/vui-data-loader) (push) Successful in 4s
Build containers when image tags change / build-if-image-changed (., web, containers, main container, git.baumann.gr/adebaumann/vui) (push) Successful in 15s
4.4 KiB
4.4 KiB
Modelle (App: dokumente)
Kurzbeschreibungen der Modelle in dokumente/models.py.
Dokumententyp
- Zweck: Kategorisierung von Dokumenten (z. B. Richtlinie, Verfahren).
- Wichtige Felder:
name(CharField, PK),verantwortliche_ve(CharField). - Besonderheiten:
__str__()gibtnamezurück. - Meta:
verbose_nameundverbose_name_pluralgesetzt.
Person
- Zweck: Repräsentiert Personen (Autoren, Prüfer).
- Wichtige Felder:
name(CharField, PK),funktion(CharField). - Beziehungen: Many-to-many mit Dokument über
autorenundpruefende. - Besonderheiten:
__str__()gibtnamezurück;ordering = ['name']. - Meta:
verbose_name_plural = "Personen".
Thema
- Zweck: Thematische Einordnung von Vorgaben.
- Wichtige Felder:
name(CharField, PK),erklaerung(TextField, optional). - Besonderheiten:
__str__()gibtnamezurück.
Dokument
- Zweck: Hauptobjekt; ein einzelnes Dokument mit Metadaten.
- Wichtige Felder:
nummer(CharField, PK)dokumententyp(FK → Dokumententyp, on_delete=PROTECT)name(CharField)autoren,pruefende(ManyToManyField → Person)gueltigkeit_von,gueltigkeit_bis(DateField, optional)aktiv(BooleanField)signatur_cso,anhaenge(Metadaten)
- Besonderheiten:
__str__()formatiert als "nummer – name". - Meta:
verbose_name/verbose_name_plural.
Vorgabe
- Zweck: Einzelne Vorgabe / Anforderung innerhalb eines Dokuments.
- Wichtige Felder:
order(IntegerField) — Sortierreihenfolgenummer(IntegerField) — Nummer innerhalb Thema/Dokumentdokument(FK → Dokument, CASCADE, related_name='vorgaben')thema(FK → Thema, PROTECT)titel(CharField)referenzen(M2M → Referenz, optional)stichworte(M2M → Stichwort, optional)relevanz(M2M → Rolle, optional)gueltigkeit_von,gueltigkeit_bis(Datum/Felder)
- Beziehungen: zu Dokument, Thema, Referenzen, Stichworte, Rollen.
- Wichtige Methoden:
Vorgabennummer()— generiert eine lesbare Kennung (z. B. "DOK. T. N").get_status(check_date, verbose)— liefert "future", "active" oder "expired" oder eine deutsche Statusbeschreibung, abhängig von Gültigkeitsdaten.sanity_check_vorgaben()(static) — findet Konflikte zwischen Vorgaben mit gleicher Nummer/Thema/Dokument, deren Zeiträume sich überschneiden.clean()— ruftfind_conflicts()auf und wirft ValidationError bei Konflikten.find_conflicts()— prüft Konflikte mit bestehenden Vorgaben (ohne sich selbst)._date_ranges_intersect(...)(static) — prüft, ob sich zwei Datumsbereiche überschneiden (None = offen).
- Besonderheiten:
__str__()gibt "Vorgabennummer: titel" zurück. - Meta:
ordering = ['order'],verbose_name_plural = "Vorgaben".
VorgabeLangtext, VorgabeKurztext
- Zweck: Textabschnitts-Modelle, erben von
Textabschnitt(aus abschnitte.models). - Wichtige Felder: je ein FK
abschnitt→ Vorgabe. - Besonderheit: konkrete Untertypen für Lang- und Kurztexte; Meta-
verbose_namegesetzt.
Geltungsbereich, Einleitung
- Zweck: Dokumentbezogene Textabschnitte (erben von
Textabschnitt). - Wichtige Felder: FK zum
Dokument(geltungsbereichbzw.einleitung). - Meta:
verbose_name/verbose_name_pluralgesetzt.
Checklistenfrage
- Zweck: Einzelne Frage für Checklisten zu einer Vorgabe.
- Wichtige Felder:
vorgabe(FK → Vorgabe, related_name="checklistenfragen"),frage(CharField). - Besonderheiten:
__str__()gibtfragezurück.
VorgabenTable
- Zweck: Proxy-Modell für Vorgabe zur Darstellung (Tabellenansicht).
- Besonderheiten: kein eigenes Schema; nur Meta-Attribute (
proxy = True,verbose_name).
Changelog
- Zweck: Änderungsverzeichnis-Eintrag für ein Dokument.
- Wichtige Felder:
dokument(FK → Dokument, related_name='changelog')autoren(M2M → Person)datum(DateField)aenderung(TextField)
- Besonderheiten:
__str__()formatiert als "datum – dokumentnummer". - Meta:
verbose_name/verbose_name_plural.
Hinweise zur Pflege
- Wichtige Relationen nutzen häufig on_delete=PROTECT, um versehentliche Löschungen zu vermeiden.
- Viele Modelle haben CharField-Primärschlüssel (z. B.
nummer,name). - Validierungslogik für zeitliche Konflikte ist in Vorgabe implementiert (clean / find_conflicts).
- Textabschnitt-Modelle erben Verhalten aus
abschnitte.models.Textabschnitt— dort sind Anzeige- und Inhaltsregeln definiert.