From b57973767bcb9ac98f3a16f4e4155e472c80ea3f Mon Sep 17 00:00:00 2001 From: Alejandro Alonso Date: Sat, 11 Mar 2017 03:59:13 +0100 Subject: [PATCH] [Backport] Fixing contact project --- taiga/projects/contact/services.py | 2 +- taiga/projects/models.py | 7 +++++-- tests/integration/test_contact.py | 6 ++++-- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/taiga/projects/contact/services.py b/taiga/projects/contact/services.py index d623c78b..a6623a2f 100644 --- a/taiga/projects/contact/services.py +++ b/taiga/projects/contact/services.py @@ -38,7 +38,7 @@ def send_contact_email(contact_entry_id): "user_profile_url": resolve_front_url("user", contact_entry.user.username), "project_settings_url": resolve_front_url("project-admin", contact_entry.project.slug), } - users = contact_entry.project.get_users().exclude(id=contact_entry.user_id) + users = contact_entry.project.get_users(with_admin_privileges=True).exclude(id=contact_entry.user_id) addresses = ", ".join([u.email for u in users]) email = mail_builder.contact_notification(addresses, ctx) email.extra_headers["Reply-To"] = ", ".join([contact_entry.user.email]) diff --git a/taiga/projects/models.py b/taiga/projects/models.py index 3a345088..f28072ed 100644 --- a/taiga/projects/models.py +++ b/taiga/projects/models.py @@ -382,9 +382,12 @@ class Project(ProjectDefaults, TaggedMixin, TagsColorsMixin, models.Model): def get_roles(self): return self.roles.all() - def get_users(self): + def get_users(self, with_admin_privileges=None): user_model = get_user_model() - members = self.memberships.values_list("user", flat=True) + members = self.memberships.all() + if with_admin_privileges is not None: + members = members.filter(Q(is_admin=True)|Q(user__id=self.owner.id)) + members = members.values_list("user", flat=True) return user_model.objects.filter(id__in=list(members)) def update_role_points(self, user_stories=None): diff --git a/tests/integration/test_contact.py b/tests/integration/test_contact.py index 17676f55..600b40f7 100644 --- a/tests/integration/test_contact.py +++ b/tests/integration/test_contact.py @@ -31,7 +31,9 @@ pytestmark = pytest.mark.django_db def test_create_comment(client): user = f.UserFactory.create() project = f.ProjectFactory.create() - f.MembershipFactory(user=project.owner, project=project, is_admin=True) + m1 = f.MembershipFactory(user=project.owner, project=project) + m2 = f.MembershipFactory(project=project, is_admin=True) + m3 = f.MembershipFactory(project=project, is_admin=False) url = reverse("contact-list") @@ -46,7 +48,7 @@ def test_create_comment(client): response = client.post(url, contact_data, content_type="application/json") assert response.status_code == 201 assert len(mail.outbox) == 1 - assert mail.outbox[0].to == [project.owner.email] + assert set(mail.outbox[0].to[0].split(", ")) == set([project.owner.email, m2.user.email])