diff --git a/opentech/apply/users/management/commands/migrate_users.py b/opentech/apply/users/management/commands/migrate_users.py index 16057bb918dab8b751609cc802bc8c7d749eb27f..934d67d4d7a88eac1e9f48a2238bda1f68f0b67d 100644 --- a/opentech/apply/users/management/commands/migrate_users.py +++ b/opentech/apply/users/management/commands/migrate_users.py @@ -29,16 +29,23 @@ class Command(BaseCommand): full_name = self.get_full_name(user) user_object, created = User.objects.get_or_create( email=user.get('mail'), - defaults={'full_name': full_name} + defaults={ + 'full_name': full_name, + 'drupal_id': uid, + } ) - if created: - print("Imported user %s (%s)" % (uid, full_name)) + operation = "Imported" if created else "Processed" for group in self.get_user_groups(user): user_object.groups.add(group) + + # Ensure uid is set + user_object.drupal_id = uid user_object.save() + print(f"{operation} user {uid} ({full_name})") + def get_full_name(self, user): full_name = user.get('field_otf_real_name', None) try: @@ -48,7 +55,6 @@ class Command(BaseCommand): return full_name - def get_user_groups(self, user): groups = [] role_map = { diff --git a/opentech/apply/users/migrations/0005_user_drupal_id.py b/opentech/apply/users/migrations/0005_user_drupal_id.py new file mode 100644 index 0000000000000000000000000000000000000000..662c55217d96a415dcca24a8a5c7564c788a9534 --- /dev/null +++ b/opentech/apply/users/migrations/0005_user_drupal_id.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.8 on 2018-02-28 15:21 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('users', '0004_drop_first_last_names'), + ] + + operations = [ + migrations.AddField( + model_name='user', + name='drupal_id', + field=models.IntegerField(blank=True, editable=False, null=True), + ), + ] diff --git a/opentech/apply/users/models.py b/opentech/apply/users/models.py index 9e867ab9b60c9d430a1e0f79825514b20d043249..f4d22666087e3159ec7d4266bb9513d6b4f591ef 100644 --- a/opentech/apply/users/models.py +++ b/opentech/apply/users/models.py @@ -48,6 +48,9 @@ class User(AbstractUser): email = models.EmailField(_('email address'), unique=True) full_name = models.CharField(verbose_name='Full name', max_length=255, blank=True) + # Meta: used for migration purposes only + drupal_id = models.IntegerField(null=True, blank=True, editable=False) + USERNAME_FIELD = 'email' REQUIRED_FIELDS = []