Objekttyp.ist_zugfahrzeug (Migration 0011) grenzt die Fahrzeug-Zuordnung serverseitig auf tatsächliche Zugfahrzeuge ein (422 bei Verstoß), Frontend filtert die Fahrzeug-Dropdowns entsprechend. Neue Dashboard-Endpunkte /dashboard/einsatzbereitschaft und /dashboard/prueftermine plus DashboardPage mit drei Kacheln (Einsatzbereitschaft, Prüftermine, Ablaufdaten). Aktive Mindermengen-Genehmigung zählt als "eingeschränkt einsatzbereit", nicht als voll einsatzbereit (U2/Karte 08). Neue FehlbestandListePage: Fehlbestände eigenständig nachfüllen/Mindermenge genehmigen, ohne komplette Kontrolle des Objekts zu starten (Backend existierte bereits, nur das Frontend fehlte). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KC8HYvv6UkCVYheYiTw9DD
32 lines
991 B
Python
32 lines
991 B
Python
"""objekttyp.ist_zugfahrzeug: markiert Objekttypen, die als Fahrzeug einem
|
|
anderen Objekt zugeordnet werden dürfen (Karte 11 Nachtrag).
|
|
|
|
Revision ID: 0011_objekttyp_zugfahrzeug
|
|
Revises: 0010_objekt_kopplung
|
|
Create Date: 2026-09-05
|
|
|
|
Fachlicher Hintergrund: Objekt bleibt generisch (kein eigener Fahrzeug-
|
|
Objekttyp), aber die Fahrzeug-Dropdowns im Frontend boten bisher alle Objekte
|
|
an (auch Rucksäcke). Flag am Objekttyp grenzt das serverseitig ein.
|
|
"""
|
|
from typing import Sequence, Union
|
|
|
|
import sqlalchemy as sa
|
|
from alembic import op
|
|
|
|
revision: str = "0011_objekttyp_zugfahrzeug"
|
|
down_revision: Union[str, None] = "0010_objekt_kopplung"
|
|
branch_labels: Union[str, Sequence[str], None] = None
|
|
depends_on: Union[str, Sequence[str], None] = None
|
|
|
|
|
|
def upgrade() -> None:
|
|
op.add_column(
|
|
"objekttyp",
|
|
sa.Column("ist_zugfahrzeug", sa.Boolean(), nullable=False, server_default=sa.false()),
|
|
)
|
|
|
|
|
|
def downgrade() -> None:
|
|
op.drop_column("objekttyp", "ist_zugfahrzeug")
|