dak.c2s/backend/alembic/versions/006_anonymize_fall_ids.py
CCS Admin 90c121d58d fix: correct down_revision in 006 migration to match 005_disclosure
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 17:13:22 +00:00

42 lines
1.1 KiB
Python

"""Anonymize fall_ids: replace Nachname with KVNR or random suffix.
Revision ID: 006_anonymize_fall_ids
Revises: 005_disclosure
"""
import random
import string
from alembic import op
import sqlalchemy as sa
revision = "006_anonymize_fall_ids"
down_revision = "005_disclosure"
branch_labels = None
depends_on = None
def _random_suffix(length=6):
charset = string.ascii_uppercase + string.digits
return "".join(random.choices(charset, k=length))
def upgrade():
conn = op.get_bind()
cases = conn.execute(
sa.text("SELECT id, fall_id, kvnr, jahr, kw, fallgruppe FROM cases")
).fetchall()
for case in cases:
case_id, old_fall_id, kvnr, jahr, kw, fallgruppe = case
suffix = kvnr if kvnr else _random_suffix()
new_fall_id = f"{jahr}-{kw:02d}-{fallgruppe}-{suffix}"
conn.execute(
sa.text("UPDATE cases SET fall_id = :new_id WHERE id = :case_id"),
{"new_id": new_fall_id, "case_id": case_id},
)
def downgrade():
# Cannot restore original Nachname-based fall_ids — data is lost
pass