Files
MABEA/backend/app/schemas/zustaendigkeit.py
T
patrickandClaude Sonnet 5 b9cf195a63
CI / backend-tests (push) Failing after 0s
Sprint 1: Stammdaten-Modelle/-Endpunkte, Admin-Benutzerverwaltung, Zuständigkeits-Vererbung (E2)
- ORM-Modelle: Bereich, Kategorie, Standort, Objekttyp, Material (Prompt 06/07),
  minimales Objekt-Modell (voll ausgebaut erst Sprint 2), Zustaendigkeit/
  Kontrollverantwortung
- Admin-API 7a: GET/POST Stammdaten-Endpunkte, PATCH Material, Benutzerverwaltung
  (anlegen/Rollen ändern), Zuständigkeits-/Kontrollverantwortungs-CRUD
- Vererbungslogik E2 als eigener Service (app/services/zustaendigkeit.py):
  Standort-Zuordnung vererbt sich auf alle Objekte, Objekt-Zeile ist Vereinigung
  statt Ersatz - GET /zustaendigkeiten/benutzer/{id}/objekte exponiert das
- Tests: Stammdaten-CRUD + Rollenrechte, Benutzerverwaltung (inkl. 409 bei
  Login-Duplikat), E2-Vererbungslogik (Standort-only, Standort+Objekt-Vereinigung,
  End-to-End über den Endpunkt)

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01L85hmKbvX7Cqkq47KnQhFt
2026-09-03 23:12:49 +02:00

46 lines
1.2 KiB
Python

import uuid
from pydantic import BaseModel, ConfigDict, model_validator
class ZustaendigkeitCreate(BaseModel):
benutzer_id: int
standort_id: int | None = None
objekt_id: int | None = None
@model_validator(mode="after")
def _standort_oder_objekt(self) -> "ZustaendigkeitCreate":
if self.standort_id is None and self.objekt_id is None:
raise ValueError("Entweder standort_id oder objekt_id muss gesetzt sein.")
return self
class ZustaendigkeitRead(ZustaendigkeitCreate):
model_config = ConfigDict(from_attributes=True)
id: uuid.UUID
class KontrollverantwortungCreate(BaseModel):
objekt_id: int
benutzer_id: int | None = None
gruppe: str | None = None
@model_validator(mode="after")
def _person_oder_gruppe(self) -> "KontrollverantwortungCreate":
if self.benutzer_id is None and self.gruppe is None:
raise ValueError("Entweder benutzer_id oder gruppe muss gesetzt sein.")
return self
class KontrollverantwortungRead(KontrollverantwortungCreate):
model_config = ConfigDict(from_attributes=True)
id: uuid.UUID
class ObjektKurz(BaseModel):
model_config = ConfigDict(from_attributes=True)
id: int
code: str
name: str
standort_id: int