From f15252104143956e6349bedd5bfba4eb6936d4e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sybren=20A=2E=20St=C3=BCvel?= Date: Thu, 1 Jun 2017 15:45:00 +0200 Subject: [PATCH] Algolia user push: simplified & streamlined the code a bit. --- pillar/api/utils/algolia.py | 36 +++++++++++++++++++++--------------- 1 file changed, 21 insertions(+), 15 deletions(-) diff --git a/pillar/api/utils/algolia.py b/pillar/api/utils/algolia.py index a240e0d8..d39efff3 100644 --- a/pillar/api/utils/algolia.py +++ b/pillar/api/utils/algolia.py @@ -14,23 +14,29 @@ INDEX_ALLOWED_NODE_TYPES = {'asset', 'texture', 'group', 'hdri'} @skip_when_testing 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 + + user_roles = set(user.get('roles', ())) + if 'service' in user_roles: + return + # Strip unneeded roles - if 'roles' in user: - 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 - current_app.algolia_index_users.save_object({ - 'objectID': user['_id'], - 'full_name': user['full_name'], - 'username': user['username'], - 'roles': list(roles), - 'groups': user['groups'], - 'email': user['email'] - }) + index_roles = user_roles.intersection(INDEX_ALLOWED_USER_ROLES) + + # Create or update Algolia index for the user + index_users.save_object({ + 'objectID': user['_id'], + 'full_name': user['full_name'], + 'username': user['username'], + 'roles': list(index_roles), + 'groups': user['groups'], + 'email': user['email'] + }) + + log.debug('Pushed user %r to Algolia index %r', user['_id'], index_users.index_name) @skip_when_testing