From e158b4c2f7bdeb493f742d571e211ce5b3c841b7 Mon Sep 17 00:00:00 2001 From: Benjamin Dauvergne Date: Tue, 7 Jul 2020 12:02:35 +0200 Subject: [PATCH 3/5] roles: ignore roles inactive members email (#42428) --- tests/test_role.py | 25 +++++++++++++++++++++++++ wcs/roles.py | 2 +- 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/tests/test_role.py b/tests/test_role.py index f3ef5aab..1b65b8f1 100644 --- a/tests/test_role.py +++ b/tests/test_role.py @@ -7,6 +7,8 @@ from utilities import create_temporary_pub, clean_temporary_pub from wcs.qommon.storage import StorableObject from wcs.roles import Role, get_user_roles +from quixote import get_publisher + def setup_module(module): pub = create_temporary_pub() @@ -52,3 +54,26 @@ def test_get_user_roles(): Role(name='é1').store() Role(name='a1').store() assert [x[1] for x in get_user_roles()] == ['a1', 'é1', 'f1'] + + +def test_get_emails(): + User = get_publisher().user_class + User.wipe() + Role.wipe() + + role = Role(name='role') + role.emails_to_members = True + role.store() + + users = [] + for i in range(2): + user = User(name='John Doe %s' % i) + user.email = 'john.doe.%s@example.com' % i + user.add_roles([role.id]) + user.store() + users.append(user) + + assert len(set(role.get_emails())) == 2 + users[-1].is_active = False + users[-1].store() + assert len(set(role.get_emails())) == 1 diff --git a/wcs/roles.py b/wcs/roles.py index ae8c584e..ec924cc6 100644 --- a/wcs/roles.py +++ b/wcs/roles.py @@ -72,7 +72,7 @@ class Role(StorableObject): if not self.emails_to_members: return emails users_with_roles = get_publisher().user_class.get_users_with_role(self.id) - emails.extend([x.email for x in users_with_roles if x.email]) + emails.extend([x.email for x in users_with_roles if x.email and x.is_active]) return emails def is_internal(self): -- 2.26.2