From 8868e89d6f0da1eb44ec08a41dcd21d58c33cd54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jes=C3=BAs=20Espino?= Date: Mon, 30 Mar 2015 12:33:28 +0200 Subject: [PATCH] Force regenerate invitations uuids on dump load --- taiga/export_import/serializers.py | 2 +- taiga/export_import/service.py | 3 +-- tests/integration/test_importer_api.py | 24 +++++++++++++++++++++++- 3 files changed, 25 insertions(+), 4 deletions(-) diff --git a/taiga/export_import/serializers.py b/taiga/export_import/serializers.py index 7b27c427..6287e78d 100644 --- a/taiga/export_import/serializers.py +++ b/taiga/export_import/serializers.py @@ -425,7 +425,7 @@ class MembershipExportSerializer(serializers.ModelSerializer): class Meta: model = projects_models.Membership - exclude = ('id', 'project') + exclude = ('id', 'project', 'token') def full_clean(self, instance): return instance diff --git a/taiga/export_import/service.py b/taiga/export_import/service.py index 8eb8cd42..79eeee8b 100644 --- a/taiga/export_import/service.py +++ b/taiga/export_import/service.py @@ -182,8 +182,7 @@ def store_membership(project, membership): if serialized.is_valid(): serialized.object.project = project 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, default=serialized.object.user) serialized.save() diff --git a/tests/integration/test_importer_api.py b/tests/integration/test_importer_api.py index 9cbb64c0..67f4407b 100644 --- a/tests/integration/test_importer_api.py +++ b/tests/integration/test_importer_api.py @@ -25,7 +25,7 @@ from .. import factories as f from django.apps import apps 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.userstories.models import UserStory 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 +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): user = f.UserFactory.create() client.login(user)