Force regenerate invitations uuids on dump load

remotes/origin/enhancement/email-actions
Jesús Espino 2015-03-30 12:33:28 +02:00
parent 7beff9cab7
commit 8868e89d6f
3 changed files with 25 additions and 4 deletions

View File

@ -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

View File

@ -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()

View File

@ -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)