CLI functions for index management
When developing locally, it is important to set up a dedicated indexing backend. With these two operations functions it is now possible. - index_users_rebuild: Clear users index, update settings and reindex all users. - index_users_update_settings: Configure indexing backend as required by the project
This commit is contained in:
parent
12a8a34bdc
commit
43d4a36a0d
@ -7,10 +7,10 @@ import copy
|
|||||||
import logging
|
import logging
|
||||||
|
|
||||||
from bson.objectid import ObjectId, InvalidId
|
from bson.objectid import ObjectId, InvalidId
|
||||||
|
|
||||||
from flask import current_app
|
|
||||||
from flask_script import Manager
|
from flask_script import Manager
|
||||||
|
|
||||||
|
from pillar import current_app
|
||||||
|
|
||||||
log = logging.getLogger(__name__)
|
log = logging.getLogger(__name__)
|
||||||
manager = Manager(current_app)
|
manager = Manager(current_app)
|
||||||
|
|
||||||
@ -788,6 +788,41 @@ def create_blog(proj_url):
|
|||||||
return 0
|
return 0
|
||||||
|
|
||||||
|
|
||||||
|
@manager_operations.command
|
||||||
|
def index_users_rebuild():
|
||||||
|
"""Clear users index, update settings and reindex all users."""
|
||||||
|
|
||||||
|
from pillar.api.utils.algolia import algolia_index_user_save
|
||||||
|
|
||||||
|
users_index = current_app.algolia_index_users
|
||||||
|
|
||||||
|
log.info('Dropping index: {}'.format(users_index))
|
||||||
|
users_index.clear_index()
|
||||||
|
index_users_update_settings()
|
||||||
|
|
||||||
|
db = current_app.db()
|
||||||
|
users = db['users'].find({'_deleted': {'$ne': False}})
|
||||||
|
|
||||||
|
log.info('Reindexing all users')
|
||||||
|
for user in users:
|
||||||
|
algolia_index_user_save(user)
|
||||||
|
|
||||||
|
|
||||||
|
@manager_operations.command
|
||||||
|
def index_users_update_settings():
|
||||||
|
"""Configure indexing backend as required by the project"""
|
||||||
|
users_index = current_app.algolia_index_users
|
||||||
|
|
||||||
|
# Automatically creates index if it does not exist
|
||||||
|
users_index.set_settings({
|
||||||
|
'searchableAttributes': [
|
||||||
|
'full_name',
|
||||||
|
'username',
|
||||||
|
'email',
|
||||||
|
'unordered(roles)'
|
||||||
|
]
|
||||||
|
})
|
||||||
|
|
||||||
manager.add_command("maintenance", manager_maintenance)
|
manager.add_command("maintenance", manager_maintenance)
|
||||||
manager.add_command("setup", manager_setup)
|
manager.add_command("setup", manager_setup)
|
||||||
manager.add_command("operations", manager_operations)
|
manager.add_command("operations", manager_operations)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user