Now on project template aplication add a membership for the project owner

remotes/origin/enhancement/email-actions
Jesús Espino 2014-04-25 13:14:42 +02:00
parent 234ee7a2bc
commit 6b9c314992
3 changed files with 26 additions and 5 deletions

File diff suppressed because one or more lines are too long

View File

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

View File

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