Algolia user push: simplified & streamlined the code a bit.
This commit is contained in:
@@ -14,24 +14,30 @@ INDEX_ALLOWED_NODE_TYPES = {'asset', 'texture', 'group', 'hdri'}
|
|||||||
|
|
||||||
@skip_when_testing
|
@skip_when_testing
|
||||||
def algolia_index_user_save(user):
|
def algolia_index_user_save(user):
|
||||||
if 'roles' in user and 'service' in user['roles']:
|
index_users = current_app.algolia_index_users
|
||||||
|
if not index_users:
|
||||||
|
log.debug('No Algolia index defined, so nothing to do.')
|
||||||
return
|
return
|
||||||
|
|
||||||
|
user_roles = set(user.get('roles', ()))
|
||||||
|
if 'service' in user_roles:
|
||||||
|
return
|
||||||
|
|
||||||
# Strip unneeded roles
|
# Strip unneeded roles
|
||||||
if 'roles' in user:
|
index_roles = user_roles.intersection(INDEX_ALLOWED_USER_ROLES)
|
||||||
roles = set(user['roles']).intersection(INDEX_ALLOWED_USER_ROLES)
|
|
||||||
else:
|
|
||||||
roles = set()
|
|
||||||
if current_app.algolia_index_users:
|
|
||||||
# Create or update Algolia index for the user
|
# Create or update Algolia index for the user
|
||||||
current_app.algolia_index_users.save_object({
|
index_users.save_object({
|
||||||
'objectID': user['_id'],
|
'objectID': user['_id'],
|
||||||
'full_name': user['full_name'],
|
'full_name': user['full_name'],
|
||||||
'username': user['username'],
|
'username': user['username'],
|
||||||
'roles': list(roles),
|
'roles': list(index_roles),
|
||||||
'groups': user['groups'],
|
'groups': user['groups'],
|
||||||
'email': user['email']
|
'email': user['email']
|
||||||
})
|
})
|
||||||
|
|
||||||
|
log.debug('Pushed user %r to Algolia index %r', user['_id'], index_users.index_name)
|
||||||
|
|
||||||
|
|
||||||
@skip_when_testing
|
@skip_when_testing
|
||||||
def algolia_index_node_save(node):
|
def algolia_index_node_save(node):
|
||||||
|
Reference in New Issue
Block a user