Skip to content

Commit

Permalink
Migrate UUIDField token_uuid in Invitation model (#3421)
Browse files Browse the repository at this point in the history
* Migrate token_uuid field in Invitation model to Django UUIDField
* Update serializer tests in core Django app
* Update view tests in core Django app
* Add conversion of UUIDField to string
  • Loading branch information
hackdna committed Jul 18, 2019
1 parent cac3826 commit a6989a2
Show file tree
Hide file tree
Showing 5 changed files with 54 additions and 8 deletions.
2 changes: 1 addition & 1 deletion refinery/core/migrations/0001_initial.py
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,7 @@ class Migration(migrations.Migration):
name='Invitation',
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('token_uuid', django_extensions.db.fields.UUIDField(unique=True, max_length=36, editable=False, blank=True)),
('token_uuid', models.CharField(unique=True, max_length=36, editable=False, blank=True)),
('group_id', models.IntegerField(null=True, blank=True)),
('created', models.DateTimeField(null=True, editable=False)),
('expires', models.DateTimeField(null=True, editable=False)),
Expand Down
45 changes: 45 additions & 0 deletions refinery/core/migrations/0034_invitation_token_uuid.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.db import migrations, models
import uuid


class Migration(migrations.Migration):

dependencies = [
('core', '0033_userprofile_uuid'),
]

operations = [
migrations.AddField(
model_name='invitation',
name='temp_uuid',
field=models.UUIDField(null=True),
),
# allow backward migrations and remove dependency on django_extensions
migrations.AlterField(
model_name='invitation',
name='token_uuid',
field=models.CharField(max_length=36, null=True),
),
# copy data to the new field
migrations.RunSQL(
"UPDATE core_invitation SET temp_uuid = CAST (token_uuid AS uuid)",
"UPDATE core_invitation SET token_uuid = temp_uuid"
),
migrations.RemoveField(
model_name='invitation',
name='token_uuid',
),
migrations.RenameField(
model_name='invitation',
old_name='temp_uuid',
new_name='token_uuid',
),
migrations.AlterField(
model_name='invitation',
name='token_uuid',
field=models.UUIDField(default=uuid.uuid4, unique=True, editable=False),
),
]
5 changes: 3 additions & 2 deletions refinery/core/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -1867,15 +1867,16 @@ def create_manager_group(sender, instance, created, **kwargs):


class Invitation(models.Model):
token_uuid = UUIDField(unique=True, auto=True)
token_uuid = models.UUIDField(default=uuid_lib.uuid4, editable=False,
unique=True)
group_id = models.IntegerField(blank=True, null=True)
created = models.DateTimeField(editable=False, null=True)
expires = models.DateTimeField(editable=False, null=True)
sender = models.ForeignKey(User, null=True)
recipient_email = models.CharField(max_length=250, null=True)

def __unicode__(self):
return self.token_uuid + ' | ' + str(self.group_id)
return str(self.token_uuid) + ' | ' + str(self.group_id)

def save(self, *arg, **kwargs):
if not self.id:
Expand Down
4 changes: 2 additions & 2 deletions refinery/core/test_serializers.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from datetime import datetime
from datetime import timedelta
import uuid
import uuid as uuid_lib

from django.conf import settings
from django.utils import timezone
Expand Down Expand Up @@ -144,7 +144,7 @@ def setUp(self):
self.group.user_set.add(self.user)
self.public_group = ExtendedGroup.objects.public_group()
self.public_group.manager_group.user_set.add(self.user)
self.invite = Invitation(token_uuid=uuid.uuid1(),
self.invite = Invitation(token_uuid=uuid_lib.uuid4(),
group_id=self.group.id)
self.time_duration = timedelta(days=settings.TOKEN_DURATION)
self.invite.expires = timezone.now() + self.time_duration
Expand Down
6 changes: 3 additions & 3 deletions refinery/core/test_views.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import json
import random
import string
import uuid
import uuid as uuid_lib
from urlparse import urljoin

from cuser.middleware import CuserMiddleware
Expand Down Expand Up @@ -1453,7 +1453,7 @@ def setUp(self):
self.non_member = User.objects.create_user('Non-member',
'user2@example.com',
self.password)
self.invite = Invitation(token_uuid=uuid.uuid1(),
self.invite = Invitation(token_uuid=uuid_lib.uuid4(),
group_id=self.group.id)
self.time_duration = timedelta(days=settings.TOKEN_DURATION)
self.invite.expires = timezone.now() + self.time_duration
Expand Down Expand Up @@ -1524,7 +1524,7 @@ def test_get_invites_returns_invites_for_managers(self):
self.assertEqual(get_response.data[0].get('id'), self.invite.id)

def test_get_invites_deletes_expired_invites(self):
exp_invite = Invitation(token_uuid=uuid.uuid1(),
exp_invite = Invitation(token_uuid=uuid_lib.uuid4(),
group_id=self.group.id)
exp_invite.expires = timezone.now()
exp_invite.sender = self.user
Expand Down

0 comments on commit a6989a2

Please sign in to comment.