Now on project template aplication add a membership for the project owner
parent
234ee7a2bc
commit
6b9c314992
File diff suppressed because one or more lines are too long
|
@ -539,6 +539,9 @@ class ProjectTemplate(models.Model):
|
|||
verbose_name=_("modified date"))
|
||||
domain = models.ForeignKey("domains.Domain", related_name="templates", null=True, blank=True,
|
||||
default=None, verbose_name=_("domain"))
|
||||
default_owner_role = models.CharField(max_length=50, null=False,
|
||||
blank=False,
|
||||
verbose_name=_("default owner's role"))
|
||||
|
||||
is_backlog_activated = models.BooleanField(default=True, null=False, blank=True,
|
||||
verbose_name=_("active backlog panel"))
|
||||
|
@ -668,6 +671,9 @@ class ProjectTemplate(models.Model):
|
|||
"computable": role.computable
|
||||
})
|
||||
|
||||
owner_membership = project.memberships.get(user=project.owner)
|
||||
self.default_owner_role = owner_membership.role.slug
|
||||
|
||||
def apply_to_project(self, project):
|
||||
if project.id is None:
|
||||
raise Exception("Project need an id (must be a saved project)")
|
||||
|
@ -760,6 +766,13 @@ class ProjectTemplate(models.Model):
|
|||
project.default_priority = Priority.objects.get(name=self.default_options["priority"], project=project)
|
||||
project.default_severity = Severity.objects.get(name=self.default_options["severity"], project=project)
|
||||
|
||||
Membership.objects.create(
|
||||
user=project.owner,
|
||||
project=project,
|
||||
role=project.roles.get(slug=self.default_owner_role),
|
||||
email=project.owner.email
|
||||
)
|
||||
|
||||
return project
|
||||
|
||||
# Reversion registration (usufull for base.notification and for meke a historical)
|
||||
|
|
|
@ -23,7 +23,7 @@ from django.db.models import get_model
|
|||
from django.conf import settings
|
||||
|
||||
from taiga.users.tests import create_user
|
||||
from taiga.projects.models import Project, Membership, ProjectTemplate
|
||||
from taiga.projects.models import Project, Membership, ProjectTemplate, Role
|
||||
from taiga.domains.models import Domain
|
||||
|
||||
from . import create_project
|
||||
|
@ -44,14 +44,15 @@ class ProjectTemplateModelTestCase(test.TestCase):
|
|||
|
||||
def test_apply_to_saved_project(self):
|
||||
# Post-save apply the default template
|
||||
project = Project.objects.create(name="Test", slug="test", owner_id=1)
|
||||
project = Project.objects.create(name="Test", slug="test", owner=self.user)
|
||||
self.assertEqual(project.creation_template.slug, settings.DEFAULT_PROJECT_TEMPLATE)
|
||||
self.assertEqual(project.memberships.filter(user=self.user).count(), 1)
|
||||
|
||||
def test_load_data_from_project_with_invalid_object(self):
|
||||
self.assertRaises(Exception, self.template.load_data_from_project, (None,))
|
||||
|
||||
def test_load_data_from_project_not_defaults(self):
|
||||
project = Project.objects.create(name="Test", slug="test", owner_id=1)
|
||||
project = Project.objects.create(name="Test", slug="test", owner=self.user)
|
||||
project.default_points = None
|
||||
project.default_us_status = None
|
||||
project.default_task_status = None
|
||||
|
@ -59,6 +60,9 @@ class ProjectTemplateModelTestCase(test.TestCase):
|
|||
project.default_issue_type = None
|
||||
project.default_priority = None
|
||||
project.default_severity = None
|
||||
membership = project.memberships.get(user=self.user)
|
||||
membership.role = Role.objects.get(slug="ux")
|
||||
membership.save()
|
||||
|
||||
template = ProjectTemplate()
|
||||
template.load_data_from_project(project)
|
||||
|
@ -69,3 +73,5 @@ class ProjectTemplateModelTestCase(test.TestCase):
|
|||
self.assertIsNone(template.default_options["issue_type"])
|
||||
self.assertIsNone(template.default_options["priority"])
|
||||
self.assertIsNone(template.default_options["severity"])
|
||||
|
||||
self.assertEqual(template.default_owner_role, "ux")
|
||||
|
|
Loading…
Reference in New Issue