From c1b2adf83c2b4c2e13f21cbbc19a3d3a5af93f2a Mon Sep 17 00:00:00 2001 From: Dan Braghis <dan.braghis@torchbox.com> Date: Wed, 7 Mar 2018 10:08:48 +0000 Subject: [PATCH] Add anonymisation option to user migration --- .../users/management/commands/migrate_users.py | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/opentech/apply/users/management/commands/migrate_users.py b/opentech/apply/users/management/commands/migrate_users.py index f77444311..2883edb94 100644 --- a/opentech/apply/users/management/commands/migrate_users.py +++ b/opentech/apply/users/management/commands/migrate_users.py @@ -15,7 +15,8 @@ class Command(BaseCommand): groups = Group.objects.all() def add_arguments(self, parser): - parser.add_argument('source', type=argparse.FileType('r'), help='Migration source JSON file') + parser.add_argument('source', type=argparse.FileType('r'), help="Migration source JSON file") + parser.add_argument('--anonymize', action='store_true', help="Anonymizes non-OTF emails") @transaction.atomic def handle(self, *args, **options): @@ -28,7 +29,7 @@ class Command(BaseCommand): full_name = self.get_full_name(user) user_object, created = User.objects.get_or_create( - email=user['mail'], + email=self.get_email(user, options['anonymize']), defaults={ 'full_name': full_name, 'drupal_id': uid, @@ -78,3 +79,13 @@ class Command(BaseCommand): groups.append(self.groups.filter(name=group_name).first()) return groups + + def get_email(self, user, anonymize=False): + if not anonymize: + return user['mail'] + + _, email_domain = user['mail'].split('@') + if email_domain in settings.STAFF_EMAIL_DOMAINS: + return user['mail'] + + return "aeon+%s@torchbox.com" % user['uid'] -- GitLab