diff --git a/taiga/users/migrations/0025_user_uuid.py b/taiga/users/migrations/0025_user_uuid.py new file mode 100644 index 00000000..82106ef0 --- /dev/null +++ b/taiga/users/migrations/0025_user_uuid.py @@ -0,0 +1,35 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.2 on 2017-10-31 14:57 +from __future__ import unicode_literals + +from django.db import migrations, models +import taiga.users.models +import uuid + + +def update_uuids(apps, schema_editor): + User = apps.get_model("users", "User") + for user in User.objects.all(): + user.uuid = uuid.uuid4().hex + user.save() + + +class Migration(migrations.Migration): + + dependencies = [ + ('users', '0024_auto_20170406_0727'), + ] + + operations = [ + migrations.AddField( + model_name='user', + name='uuid', + field=models.CharField(default=taiga.users.models.get_default_uuid, editable=False, max_length=32), + ), + migrations.RunPython(update_uuids, lambda apps, schema_editor: None), + migrations.AlterField( + model_name='user', + name='uuid', + field=models.CharField(default=taiga.users.models.get_default_uuid, editable=False, max_length=32, unique=True), + ), + ] diff --git a/taiga/users/models.py b/taiga/users/models.py index 9bf72000..ceb0ee1e 100644 --- a/taiga/users/models.py +++ b/taiga/users/models.py @@ -19,6 +19,7 @@ from importlib import import_module import random +import uuid import re from django.apps import apps @@ -125,7 +126,13 @@ class PermissionsMixin(models.Model): return self.is_superuser +def get_default_uuid(): + return uuid.uuid4().hex + + class User(AbstractBaseUser, PermissionsMixin): + uuid = models.CharField(max_length=32, editable=False, null=False, + blank=False, unique=True, default=get_default_uuid) username = models.CharField(_("username"), max_length=255, unique=True, help_text=_("Required. 30 characters or fewer. Letters, numbers and " "/./-/_ characters"), diff --git a/taiga/users/serializers.py b/taiga/users/serializers.py index 36d9a5a8..6e021c07 100644 --- a/taiga/users/serializers.py +++ b/taiga/users/serializers.py @@ -78,6 +78,7 @@ class UserAdminSerializer(UserSerializer): total_private_projects = MethodField() total_public_projects = MethodField() email = Field() + uuid = Field() max_private_projects = Field() max_public_projects = Field() max_memberships_private_projects = Field()