From ebb6223f63229ced2f8bae93b148c88636736058 Mon Sep 17 00:00:00 2001 From: Matt Westcott Date: Mon, 6 Oct 2014 13:15:03 +0200 Subject: [PATCH] Fix option handling in update_index and refactor to avoid unnecessary backend/backend_name juggling --- .../management/commands/update_index.py | 34 +++++++++---------- 1 file changed, 16 insertions(+), 18 deletions(-) diff --git a/wagtail/wagtailsearch/management/commands/update_index.py b/wagtail/wagtailsearch/management/commands/update_index.py index 2e4f981c9..2c9002c4a 100644 --- a/wagtail/wagtailsearch/management/commands/update_index.py +++ b/wagtail/wagtailsearch/management/commands/update_index.py @@ -8,14 +8,6 @@ from wagtail.wagtailsearch.indexed import Indexed from wagtail.wagtailsearch.backends import get_search_backend -def get_search_backends(): - if hasattr(settings, 'WAGTAILSEARCH_BACKENDS'): - for backend in settings.WAGTAILSEARCH_BACKENDS.keys(): - yield backend, get_search_backend(backend) - else: - yield 'default', get_search_backend('default') - - class Command(BaseCommand): def get_object_list(self): # Print info @@ -54,13 +46,12 @@ class Command(BaseCommand): return indexed_models, object_set.values() - def update_backend(self, backend, models, object_list, backend_name=''): + def update_backend(self, backend_name, models, object_list): # Print info self.stdout.write("Updating backend: " + backend_name) # Get backend - if backend is None: - backend = get_search_backend(backend_name) + backend = get_search_backend(backend_name) # Reset the index self.stdout.write(backend_name + ": Reseting index") @@ -84,7 +75,7 @@ class Command(BaseCommand): make_option('--backend', action='store', dest='backend_name', - default=False, + default=None, help="Specify a backend to update", ), ) @@ -93,10 +84,17 @@ class Command(BaseCommand): # Get object list models, object_list = self.get_object_list() - # Update backends - if 'backend_name' in options: - backend = dict(get_search_backends())[options['backend_name']] - self.update_backend(backend, models, object_list, backend_name=options['backend_name']) + # Get list of backends to index + if options['backend_name']: + # index only the passed backend + backend_names = [options['backend_name']] + elif hasattr(settings, 'WAGTAILSEARCH_BACKENDS'): + # index all backends listed in settings + backend_names = settings.WAGTAILSEARCH_BACKENDS.keys() else: - for backend_name, backend in get_search_backends(): - self.update_backend(backend, models, object_list, backend_name=backend_name) + # index the 'default' backend only + backend_names = ['default'] + + # Update backends + for backend_name in backend_names: + self.update_backend(backend_name, models, object_list)