Neues Feld ist_original (Boolean, Migration 0029) - explizit beim Upload und beim Ersetzen (DOC-003) setzbar, kein Default in eine Richtung erraten. Wird beim Ersetzen bewusst NICHT vom Vorgänger übernommen (neue Version könnte ein nachgereichtes Original sein, das eine bisherige Kopie ersetzt, oder umgekehrt). Frontend: Checkbox "Original (nicht nur Kopie/Scan)" im Upload-Formular, "Original"-Badge in der Dokumentenliste. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV
28 lines
825 B
Python
28 lines
825 B
Python
"""DOC-004: Original-vs-Kopie-Kennzeichnung bei Dokumenten.
|
|
|
|
Revision ID: 0029_dokument_original
|
|
Revises: 0028_fk_indizes
|
|
Create Date: 2026-09-08
|
|
"""
|
|
from typing import Sequence, Union
|
|
|
|
from alembic import op
|
|
|
|
revision: str = "0029_dokument_original"
|
|
down_revision: Union[str, None] = "0028_fk_indizes"
|
|
branch_labels: Union[str, Sequence[str], None] = None
|
|
depends_on: Union[str, Sequence[str], None] = None
|
|
|
|
|
|
def upgrade() -> None:
|
|
op.execute(
|
|
"ALTER TABLE dokument ADD COLUMN ist_original BOOLEAN NOT NULL DEFAULT false"
|
|
)
|
|
# Default nur für den Backfill nötig - künftige Inserts geben es immer
|
|
# explizit an (Anwendungsebene).
|
|
op.execute("ALTER TABLE dokument ALTER COLUMN ist_original DROP DEFAULT")
|
|
|
|
|
|
def downgrade() -> None:
|
|
op.execute("ALTER TABLE dokument DROP COLUMN ist_original")
|