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"))
|
verbose_name=_("modified date"))
|
||||||
domain = models.ForeignKey("domains.Domain", related_name="templates", null=True, blank=True,
|
domain = models.ForeignKey("domains.Domain", related_name="templates", null=True, blank=True,
|
||||||
default=None, verbose_name=_("domain"))
|
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,
|
is_backlog_activated = models.BooleanField(default=True, null=False, blank=True,
|
||||||
verbose_name=_("active backlog panel"))
|
verbose_name=_("active backlog panel"))
|
||||||
|
@ -668,6 +671,9 @@ class ProjectTemplate(models.Model):
|
||||||
"computable": role.computable
|
"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):
|
def apply_to_project(self, project):
|
||||||
if project.id is None:
|
if project.id is None:
|
||||||
raise Exception("Project need an id (must be a saved project)")
|
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_priority = Priority.objects.get(name=self.default_options["priority"], project=project)
|
||||||
project.default_severity = Severity.objects.get(name=self.default_options["severity"], 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
|
return project
|
||||||
|
|
||||||
# Reversion registration (usufull for base.notification and for meke a historical)
|
# 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 django.conf import settings
|
||||||
|
|
||||||
from taiga.users.tests import create_user
|
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 taiga.domains.models import Domain
|
||||||
|
|
||||||
from . import create_project
|
from . import create_project
|
||||||
|
@ -44,14 +44,15 @@ class ProjectTemplateModelTestCase(test.TestCase):
|
||||||
|
|
||||||
def test_apply_to_saved_project(self):
|
def test_apply_to_saved_project(self):
|
||||||
# Post-save apply the default template
|
# 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.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):
|
def test_load_data_from_project_with_invalid_object(self):
|
||||||
self.assertRaises(Exception, self.template.load_data_from_project, (None,))
|
self.assertRaises(Exception, self.template.load_data_from_project, (None,))
|
||||||
|
|
||||||
def test_load_data_from_project_not_defaults(self):
|
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_points = None
|
||||||
project.default_us_status = None
|
project.default_us_status = None
|
||||||
project.default_task_status = None
|
project.default_task_status = None
|
||||||
|
@ -59,6 +60,9 @@ class ProjectTemplateModelTestCase(test.TestCase):
|
||||||
project.default_issue_type = None
|
project.default_issue_type = None
|
||||||
project.default_priority = None
|
project.default_priority = None
|
||||||
project.default_severity = None
|
project.default_severity = None
|
||||||
|
membership = project.memberships.get(user=self.user)
|
||||||
|
membership.role = Role.objects.get(slug="ux")
|
||||||
|
membership.save()
|
||||||
|
|
||||||
template = ProjectTemplate()
|
template = ProjectTemplate()
|
||||||
template.load_data_from_project(project)
|
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["issue_type"])
|
||||||
self.assertIsNone(template.default_options["priority"])
|
self.assertIsNone(template.default_options["priority"])
|
||||||
self.assertIsNone(template.default_options["severity"])
|
self.assertIsNone(template.default_options["severity"])
|
||||||
|
|
||||||
|
self.assertEqual(template.default_owner_role, "ux")
|
||||||
|
|
Loading…
Reference in New Issue