From 91092be410aa0a09b90e5491eb4cf6413d5875da Mon Sep 17 00:00:00 2001 From: Bryan Brancotte <bryan.brancotte@pasteur.fr> Date: Mon, 3 Oct 2022 17:28:24 +0200 Subject: [PATCH] allows to disable auto indexing, provide a basic in-memory storage for get_setting_from_storage/set_setting_in_storage --- autocomplete_multi_models/business_process.py | 8 ++++++-- autocomplete_multi_models/signals.py | 3 ++- autocomplete_multi_models/utils.py | 1 + setup.cfg | 2 +- 4 files changed, 10 insertions(+), 4 deletions(-) diff --git a/autocomplete_multi_models/business_process.py b/autocomplete_multi_models/business_process.py index b86026a..5cb7b00 100644 --- a/autocomplete_multi_models/business_process.py +++ b/autocomplete_multi_models/business_process.py @@ -15,14 +15,18 @@ _AUTOCOMPLETE_MIN_LENGTH = utils.DEFAULT_AUTOCOMPLETE_MIN_LENGTH _AUTOCOMPLETE_MIN_SIMILARITY = utils.DEFAULT_AUTOCOMPLETE_MIN_SIMILARITY _AUTOCOMPLETE_LIMIT = utils.DEFAULT_AUTOCOMPLETE_LIMIT _CAN_BE_INDEXED_BY_AUTOCOMPLETE_FUNCTION_NAME = utils.DEFAULT_CAN_BE_INDEXED_BY_AUTOCOMPLETE_FUNCTION_NAME +__in_mem_storage = { + utils.AUTO_UPDATE_ENABLED: True, + utils.REBUILD_NEEDED: True, +} def get_setting_from_storage(key, default): - return key == utils.REBUILD_NEEDED + return __in_mem_storage.get(key, default) def set_setting_in_storage(key, value): - pass + __in_mem_storage[key] = value def split_string(value): diff --git a/autocomplete_multi_models/signals.py b/autocomplete_multi_models/signals.py index 42d6b1d..6f9ff42 100644 --- a/autocomplete_multi_models/signals.py +++ b/autocomplete_multi_models/signals.py @@ -2,7 +2,8 @@ from autocomplete_multi_models import business_process, utils def instance_update(sender, instance, field_names, **kwargs): - business_process.add_instance_to_index(instance, field_names) + if business_process.get_setting_from_storage(utils.AUTO_UPDATE_ENABLED, True): + business_process.add_instance_to_index(instance, field_names) def instance_delete(sender, instance, field_names, **kwargs): diff --git a/autocomplete_multi_models/utils.py b/autocomplete_multi_models/utils.py index 456bc4f..e01972e 100644 --- a/autocomplete_multi_models/utils.py +++ b/autocomplete_multi_models/utils.py @@ -7,6 +7,7 @@ DEFAULT_AUTOCOMPLETE_MIN_SIMILARITY = 0.3 DEFAULT_AUTOCOMPLETE_LIMIT = 10 REBUILD_NEEDED = "is_autocomplete_multi_models_rebuild_needed" DEFAULT_CAN_BE_INDEXED_BY_AUTOCOMPLETE_FUNCTION_NAME = "can_be_indexed_by_autocomplete" +AUTO_UPDATE_ENABLED = "is_autocomplete_auto_update_on_save_enabled" def get_indexed_fields(): diff --git a/setup.cfg b/setup.cfg index 6a9b154..786e0ba 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = autocomplete-multi-models -version = 0.2 +version = 0.3 description = An app that index fields across multiple models, and expose an api to query for word similar to the query. long_description = file: README.md author = Bryan Brancotte -- GitLab