Bug 2419 - The system tries sending emails to inactive users
parent
be163c894d
commit
91f51cddf9
|
@ -139,6 +139,10 @@ def _filter_by_permissions(obj, user):
|
|||
return False
|
||||
|
||||
|
||||
def _filter_notificable(user):
|
||||
return user.is_active and not user.is_system
|
||||
|
||||
|
||||
def get_users_to_notify(obj, *, discard_users=None) -> list:
|
||||
"""
|
||||
Get filtered set of users to notify for specified
|
||||
|
@ -168,7 +172,8 @@ def get_users_to_notify(obj, *, discard_users=None) -> list:
|
|||
candidates = candidates - set(discard_users)
|
||||
|
||||
candidates = filter(partial(_filter_by_permissions, obj), candidates)
|
||||
|
||||
# Filter disabled and system users
|
||||
candidates = filter(partial(_filter_notificable), candidates)
|
||||
return frozenset(candidates)
|
||||
|
||||
|
||||
|
|
|
@ -109,14 +109,25 @@ def test_users_to_notify():
|
|||
member3 = f.MembershipFactory.create(project=project, role=role1)
|
||||
member4 = f.MembershipFactory.create(project=project, role=role1)
|
||||
member5 = f.MembershipFactory.create(project=project, role=role2)
|
||||
inactive_member1 = f.MembershipFactory.create(project=project, role=role1)
|
||||
inactive_member1.user.is_active = False
|
||||
inactive_member1.user.save()
|
||||
system_member1 = f.MembershipFactory.create(project=project, role=role1)
|
||||
system_member1.user.is_system = True
|
||||
system_member1.user.save()
|
||||
|
||||
issue = f.IssueFactory.create(project=project, owner=member4.user)
|
||||
|
||||
policy_model_cls = apps.get_model("notifications", "NotifyPolicy")
|
||||
|
||||
policy1 = policy_model_cls.objects.get(user=member1.user)
|
||||
policy_model_cls.objects.get(user=member2.user)
|
||||
policy3 = policy_model_cls.objects.get(user=member3.user)
|
||||
policy2 = policy_model_cls.objects.get(user=member3.user)
|
||||
policy3 = policy_model_cls.objects.get(user=inactive_member1.user)
|
||||
policy3.notify_level = NotifyLevel.watch
|
||||
policy3.save()
|
||||
policy4 = policy_model_cls.objects.get(user=system_member1.user)
|
||||
policy4.notify_level = NotifyLevel.watch
|
||||
policy4.save()
|
||||
|
||||
history = MagicMock()
|
||||
history.owner = member2.user
|
||||
|
@ -144,8 +155,8 @@ def test_users_to_notify():
|
|||
assert users == {member1.user, member3.user, issue.get_owner()}
|
||||
|
||||
# Test with watchers with ignore policy
|
||||
policy3.notify_level = NotifyLevel.ignore
|
||||
policy3.save()
|
||||
policy2.notify_level = NotifyLevel.ignore
|
||||
policy2.save()
|
||||
|
||||
issue.watchers.add(member3.user)
|
||||
users = services.get_users_to_notify(issue)
|
||||
|
@ -158,6 +169,16 @@ def test_users_to_notify():
|
|||
assert len(users) == 2
|
||||
assert users == {member1.user, issue.get_owner()}
|
||||
|
||||
# Test with inactive user
|
||||
issue.watchers.add(inactive_member1.user)
|
||||
assert len(users) == 2
|
||||
assert users == {member1.user, issue.get_owner()}
|
||||
|
||||
# Test with system user
|
||||
issue.watchers.add(system_member1.user)
|
||||
assert len(users) == 2
|
||||
assert users == {member1.user, issue.get_owner()}
|
||||
|
||||
|
||||
def test_send_notifications_using_services_method(settings, mail):
|
||||
settings.CHANGE_NOTIFICATIONS_MIN_INTERVAL = 1
|
||||
|
|
Loading…
Reference in New Issue