From 47a28cc3dc5eb6893a261b3e9fe5aa9196e82ce7 Mon Sep 17 00:00:00 2001 From: Anler Hp Date: Thu, 7 Aug 2014 16:25:45 +0200 Subject: [PATCH] Create membership for user creating project <=> role exists --- taiga/projects/models.py | 8 ++++++-- tests/factories.py | 13 ++++++++++++- tests/integration/test_projects.py | 5 +---- 3 files changed, 19 insertions(+), 7 deletions(-) diff --git a/taiga/projects/models.py b/taiga/projects/models.py index 76c9632c..4deb8d9d 100644 --- a/taiga/projects/models.py +++ b/taiga/projects/models.py @@ -752,5 +752,9 @@ def project_post_save(sender, instance, created, **kwargs): instance.save() - owner_role = instance.roles.get(slug=template.default_owner_role) - Membership.objects.create(user=instance.owner, project=instance, role=owner_role, is_owner=True, email=instance.owner.email) + try: + owner_role = instance.roles.get(slug=template.default_owner_role) + Membership.objects.create(user=instance.owner, project=instance, role=owner_role, + is_owner=True, email=instance.owner.email) + except Role.DoesNotExist: + pass diff --git a/tests/factories.py b/tests/factories.py index 9e094151..223cb8df 100644 --- a/tests/factories.py +++ b/tests/factories.py @@ -20,9 +20,9 @@ import threading from datetime import date, timedelta from django.db.models.loading import get_model +from django.conf import settings import factory -from django.conf import settings class Factory(factory.DjangoModelFactory): @@ -54,6 +54,7 @@ class ProjectTemplateFactory(Factory): priorities = [] severities = [] roles = [] + default_owner_role = "tester" class ProjectFactory(Factory): @@ -70,6 +71,7 @@ class RoleFactory(Factory): FACTORY_FOR = get_model("users", "Role") name = "Tester" + slug = "tester" project = factory.SubFactory("tests.factories.ProjectFactory") @@ -393,6 +395,8 @@ def create_project(**kwargs): defaults = {} defaults.update(kwargs) + ProjectTemplateFactory.create(slug=settings.DEFAULT_PROJECT_TEMPLATE) + project = ProjectFactory.create(**defaults) project.default_issue_status = IssueStatusFactory.create(project=project) project.default_severity = SeverityFactory.create(project=project) @@ -404,3 +408,10 @@ def create_project(**kwargs): project.save() return project + + +def create_user(**kwargs): + "Create an user along with her dependencies" + ProjectTemplateFactory.create(slug=settings.DEFAULT_PROJECT_TEMPLATE) + RoleFactory.create() + return UserFactory.create(**kwargs) diff --git a/tests/integration/test_projects.py b/tests/integration/test_projects.py index a9d8ffce..a9996cc8 100644 --- a/tests/integration/test_projects.py +++ b/tests/integration/test_projects.py @@ -1,6 +1,5 @@ import pytest -from django.conf import settings from django.core.urlresolvers import reverse from .. import factories as f @@ -9,8 +8,7 @@ pytestmark = pytest.mark.django_db def test_api_create_project(client): - f.ProjectTemplateFactory.create(slug=settings.DEFAULT_PROJECT_TEMPLATE) - user = f.UserFactory.create() + user = f.create_user() url = reverse("projects-list") data = {"name": "project name", "description": "project description"} @@ -21,7 +19,6 @@ def test_api_create_project(client): def test_api_partially_update_project(client): - f.ProjectTemplateFactory.create(slug=settings.DEFAULT_PROJECT_TEMPLATE) project = f.create_project() url = reverse("projects-detail", kwargs={"pk": project.pk}) data = {"name": ""}