# Generated by Django 4.2.12 on 2024-07-11 12:24 import random from django.db import migrations alphabet = "abcdefghjkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ23456789" def generate_password(size): random.seed() return "".join(random.choice(alphabet) for _ in range(size)) def pseudonymize_users(apps, _): Question = apps.get_model("elections", "Question") Vote = apps.get_model("elections", "Vote") votes = set() for q in Question.objects.filter(election__tallied=True).prefetch_related( "options__vote_set" ): for v in q.voters.all(): pseudonym = generate_password(16) for opt in q.options.all(): for vote in opt.vote_set.filter(user=v): vote.pseudonymous_user = pseudonym vote.user = None votes.add(vote) Vote.objects.bulk_update(votes, ["pseudonymous_user", "user"]) class Migration(migrations.Migration): dependencies = [ ("elections", "0034_vote_pseudonymous_user_alter_vote_user"), ] operations = [migrations.RunPython(pseudonymize_users)]