Files
MABEA/backend/app/models/objekt.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

36 lines
1.3 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import enum
from sqlalchemy import ForeignKey, String
from sqlalchemy.dialects.postgresql import ENUM as PgEnum
from sqlalchemy.orm import Mapped, mapped_column
from app.db.base import Base
class ObjektStatus(str, enum.Enum):
aktiv = "aktiv"
ausser_dienst = "ausser_dienst"
objekt_status_pg = PgEnum(ObjektStatus, name="objekt_status", create_type=False)
class Objekt(Base):
"""Minimales Modell für Sprint 1 (nur für Zuständigkeits-Vererbung, Karte 04/E2
benötigt). Volle Objekt-Verwaltung (Vorlagen-Referenz, Duplizieren, Objektpositionen)
folgt Sprint 2 (Prompt 08/09/10) dann kommt u.a. `vorlage_id` dazu."""
__tablename__ = "objekt"
id: Mapped[int] = mapped_column(primary_key=True)
code: Mapped[str] = mapped_column(String, unique=True, nullable=False)
name: Mapped[str] = mapped_column(String, nullable=False)
objekttyp_id: Mapped[int] = mapped_column(ForeignKey("objekttyp.id"), nullable=False)
standort_id: Mapped[int] = mapped_column(ForeignKey("standort.id"), nullable=False)
status: Mapped[ObjektStatus] = mapped_column(
objekt_status_pg, nullable=False, default=ObjektStatus.aktiv
)
zustaendiger_server_id: Mapped[int] = mapped_column(
ForeignKey("systemknoten.id"), nullable=False
)