Role change blinker: make comparison set-based
This makes it impervious to changes in order and duplicate roles.
This commit is contained in:
parent
c974b388b6
commit
73d4a77881
@ -70,13 +70,16 @@ def push_updated_user_to_algolia(user, original):
|
||||
def send_blinker_signal_roles_changed(user, original):
|
||||
"""Sends a Blinker signal that the user roles were changed, so others can respond."""
|
||||
|
||||
if user.get('roles') == original.get('roles'):
|
||||
current_roles = set(user.get('roles', []))
|
||||
original_roles = set(original.get('roles', []))
|
||||
|
||||
if current_roles == original_roles:
|
||||
return
|
||||
|
||||
from pillar.api.service import signal_user_changed_role
|
||||
|
||||
log.info('User %s changed roles to %s, sending Blinker signal',
|
||||
user.get('_id'), user.get('roles'))
|
||||
user.get('_id'), current_roles)
|
||||
signal_user_changed_role.send(current_app, user=user)
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user