Skip to content
Snippets Groups Projects
Unverified Commit 3e1f94d9 authored by Todd Dembrey's avatar Todd Dembrey Committed by GitHub
Browse files

Merge pull request #142 from OpenTechFund/191-user-migration-anonymous

Add anonymisation option to user migration
parents 77bacac6 1ee6ed0d
No related branches found
No related tags found
No related merge requests found
...@@ -15,7 +15,8 @@ class Command(BaseCommand): ...@@ -15,7 +15,8 @@ class Command(BaseCommand):
groups = Group.objects.all() groups = Group.objects.all()
def add_arguments(self, parser): 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 @transaction.atomic
def handle(self, *args, **options): def handle(self, *args, **options):
...@@ -28,7 +29,7 @@ class Command(BaseCommand): ...@@ -28,7 +29,7 @@ class Command(BaseCommand):
full_name = self.get_full_name(user) full_name = self.get_full_name(user)
user_object, created = User.objects.get_or_create( user_object, created = User.objects.get_or_create(
email=user['mail'], email=self.get_email(user, options['anonymize']),
defaults={ defaults={
'full_name': full_name, 'full_name': full_name,
'drupal_id': uid, 'drupal_id': uid,
...@@ -66,8 +67,7 @@ class Command(BaseCommand): ...@@ -66,8 +67,7 @@ class Command(BaseCommand):
'dev': 'Administrator', 'dev': 'Administrator',
} }
_, email_domain = user.get('mail').split('@') if self.is_staff(user['mail']):
if email_domain in settings.STAFF_EMAIL_DOMAINS:
groups.append(self.groups.filter(name=STAFF_GROUP_NAME).first()) groups.append(self.groups.filter(name=STAFF_GROUP_NAME).first())
roles = [role for role in user.get('roles').values() if role != "authenticated user"] roles = [role for role in user.get('roles').values() if role != "authenticated user"]
...@@ -78,3 +78,14 @@ class Command(BaseCommand): ...@@ -78,3 +78,14 @@ class Command(BaseCommand):
groups.append(self.groups.filter(name=group_name).first()) groups.append(self.groups.filter(name=group_name).first())
return groups return groups
def get_email(self, user, anonymize=False):
email = user['mail']
if not anonymize or self.is_staff(email):
return email
return f"aeon+{user['uid']}@torchbox.com"
def is_staff(self, email):
_, email_domain = email.split('@')
return email_domain in settings.STAFF_EMAIL_DOMAINS
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment