Merge pull request #294 from taigaio/fix-dump-load-membership-uuid

Force regenerate invitations uuids on dump load
remotes/origin/enhancement/email-actions
Alejandro 2015-04-08 09:36:58 +02:00
commit 85819d2f32
3 changed files with 25 additions and 4 deletions

View File

@ -425,7 +425,7 @@ class MembershipExportSerializer(serializers.ModelSerializer):
class Meta: class Meta:
model = projects_models.Membership model = projects_models.Membership
exclude = ('id', 'project') exclude = ('id', 'project', 'token')
def full_clean(self, instance): def full_clean(self, instance):
return instance return instance

View File

@ -182,8 +182,7 @@ def store_membership(project, membership):
if serialized.is_valid(): if serialized.is_valid():
serialized.object.project = project serialized.object.project = project
serialized.object._importing = True serialized.object._importing = True
if not serialized.object.token: serialized.object.token = str(uuid.uuid1())
serialized.object.token = str(uuid.uuid1())
serialized.object.user = find_invited_user(serialized.object.email, serialized.object.user = find_invited_user(serialized.object.email,
default=serialized.object.user) default=serialized.object.user)
serialized.save() serialized.save()

View File

@ -25,7 +25,7 @@ from .. import factories as f
from django.apps import apps from django.apps import apps
from taiga.base.utils import json from taiga.base.utils import json
from taiga.projects.models import Project from taiga.projects.models import Project, Membership
from taiga.projects.issues.models import Issue from taiga.projects.issues.models import Issue
from taiga.projects.userstories.models import UserStory from taiga.projects.userstories.models import UserStory
from taiga.projects.tasks.models import Task from taiga.projects.tasks.models import Task
@ -90,6 +90,28 @@ def test_valid_project_import_with_not_existing_memberships(client):
assert len(response_data["memberships"]) == 2 assert len(response_data["memberships"]) == 2
def test_valid_project_import_with_membership_uuid_rewrite(client):
user = f.UserFactory.create()
client.login(user)
url = reverse("importer-list")
data = {
"name": "Imported project",
"description": "Imported project",
"memberships": [{
"email": "with-uuid@email.com",
"role": "Role",
"token": "123",
}],
"roles": [{"name": "Role"}]
}
response = client.post(url, json.dumps(data), content_type="application/json")
assert response.status_code == 201
response_data = json.loads(response.content.decode("utf-8"))
assert Membership.objects.filter(email="with-uuid@email.com", token="123").count() == 0
def test_valid_project_import_with_extra_data(client): def test_valid_project_import_with_extra_data(client):
user = f.UserFactory.create() user = f.UserFactory.create()
client.login(user) client.login(user)