mirror of
https://github.com/complexcaresolutions/dak.c2s.git
synced 2026-03-17 21:53:41 +00:00
42 lines
1.1 KiB
Python
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
|