antragstracker/backend/src/tracker/api/models.py

134 lines
3.3 KiB
Python
Raw Normal View History

from __future__ import annotations
"""Pydantic response models for the API."""
from datetime import date, datetime
from pydantic import BaseModel
class ParteiOut(BaseModel):
id: int
kuerzel: str
name: str | None = None
farbe: str | None = None
class GremiumOut(BaseModel):
id: int
name: str
kuerzel: str | None = None
typ: str | None = None
class BeratungOut(BaseModel):
id: int
gremium: GremiumOut | None = None
sitzung_datum: date | None = None
rolle: str | None = None
ergebnis: str | None = None
ergebnis_text: str | None = None
class VorlageKurz(BaseModel):
id: int
aktenzeichen: str | None = None
typ: str | None = None
betreff: str | None = None
datum_eingang: date | None = None
ist_verwaltungsvorlage: bool = False
class ReferenzOut(BaseModel):
vorlage_id: int
aktenzeichen: str | None = None
betreff: str | None = None
vorlage_typ: str | None = None
datum_eingang: date | None = None
ref_typ: str | None = None
konfidenz: float | None = None
kontext: str | None = None
class KiZusammenfassung(BaseModel):
zusammenfassung: str | None = None
kernforderung: str | None = None
begruendung: str | None = None
betroffene_orte: list[str] = []
thema: str | None = None
partei: str | list[str] | None = None
class UmsetzungsBewertung(BaseModel):
score: float | None = None
begruendung: str | None = None
quelle_vorlage_id: int | None = None
quelle_aktenzeichen: str | None = None
class VorlageDetail(BaseModel):
id: int
aktenzeichen: str | None = None
aktenzeichen_basis: str | None = None
aktenzeichen_suffix: str | None = None
typ: str | None = None
betreff: str | None = None
volltext_clean: str | None = None
datum_eingang: date | None = None
pdf_url: str | None = None
web_url: str | None = None
ki_zusammenfassung: KiZusammenfassung | None = None
ist_verwaltungsvorlage: bool = False
thema_kurz: str | None = None
antragsteller: list[ParteiOut] = []
beratungen: list[BeratungOut] = []
referenzen_ausgehend: list[ReferenzOut] = []
referenzen_eingehend: list[ReferenzOut] = []
kette_id: int | None = None
umsetzungsbewertungen: list[UmsetzungsBewertung] = []
class KettenGliedOut(BaseModel):
vorlage: VorlageKurz
position: int
rolle: str | None = None
class KetteKurz(BaseModel):
id: int
ursprung: VorlageKurz | None = None
typ: str | None = None
thema: str | None = None
status: str | None = None
status_seit: date | None = None
letzte_aktivitaet: date | None = None
vertagungen_count: int = 0
glieder_count: int = 0
class KetteDetail(BaseModel):
id: int
ursprung: VorlageKurz | None = None
typ: str | None = None
thema: str | None = None
status: str | None = None
status_seit: date | None = None
letzte_aktivitaet: date | None = None
vertagungen_count: int = 0
begruendung: str | None = None
glieder: list[KettenGliedOut] = []
antragsteller: list[ParteiOut] = []
graph: dict | None = None
class PaginatedVorlagen(BaseModel):
items: list[VorlageKurz]
total: int
page: int
page_size: int
class PaginatedKetten(BaseModel):
items: list[KetteKurz]
total: int
page: int
page_size: int