Send Blinker signal when user roles change due to a PUT on the user.
This commit is contained in:
parent
3a33475efc
commit
40b29d7d40
@ -60,17 +60,30 @@ def before_replacing_user(request, lookup):
|
|||||||
updates.pop('auth', None)
|
updates.pop('auth', None)
|
||||||
|
|
||||||
|
|
||||||
def after_replacing_user(item, original):
|
def push_updated_user_to_algolia(user, original):
|
||||||
"""Push an update to the Algolia index when a user item is updated"""
|
"""Push an update to the Algolia index when a user item is updated"""
|
||||||
|
|
||||||
from algoliasearch.client import AlgoliaException
|
from algoliasearch.client import AlgoliaException
|
||||||
from application.utils.algolia import algolia_index_user_save
|
from application.utils.algolia import algolia_index_user_save
|
||||||
|
|
||||||
try:
|
try:
|
||||||
algolia_index_user_save(item)
|
algolia_index_user_save(user)
|
||||||
except AlgoliaException as ex:
|
except AlgoliaException as ex:
|
||||||
log.warning('Unable to push user info to Algolia for user "%s", id=%s; %s',
|
log.warning('Unable to push user info to Algolia for user "%s", id=%s; %s',
|
||||||
item.get('username'), item.get('_id'), ex)
|
user.get('username'), user.get('_id'), ex)
|
||||||
|
|
||||||
|
|
||||||
|
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'):
|
||||||
|
return
|
||||||
|
|
||||||
|
from application.modules.service import signal_user_changed_role
|
||||||
|
|
||||||
|
log.info('User %s changed roles to %s, sending Blinker signal',
|
||||||
|
user.get('_id'), user.get('roles'))
|
||||||
|
signal_user_changed_role.send(current_app, user=user)
|
||||||
|
|
||||||
|
|
||||||
def check_user_access(request, lookup):
|
def check_user_access(request, lookup):
|
||||||
@ -139,7 +152,8 @@ def setup_app(app, url_prefix):
|
|||||||
app.on_post_GET_users += post_GET_user
|
app.on_post_GET_users += post_GET_user
|
||||||
app.on_pre_PUT_users += check_put_access
|
app.on_pre_PUT_users += check_put_access
|
||||||
app.on_pre_PUT_users += before_replacing_user
|
app.on_pre_PUT_users += before_replacing_user
|
||||||
app.on_replaced_users += after_replacing_user
|
app.on_replaced_users += push_updated_user_to_algolia
|
||||||
|
app.on_replaced_users += send_blinker_signal_roles_changed
|
||||||
app.on_fetched_item_users += after_fetching_user
|
app.on_fetched_item_users += after_fetching_user
|
||||||
app.on_fetched_resource_users += after_fetching_user_resource
|
app.on_fetched_resource_users += after_fetching_user_resource
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user