Allow importing pillar.api.search.index outside of app context

This commit is contained in:
2017-12-08 16:07:10 +01:00
parent 3bdd5197f5
commit c15fffa11f

View File

@@ -21,13 +21,15 @@ class ResetIndexTask(object):
""" """
Clear and build index / mapping Clear and build index / mapping
""" """
index = '' index_key = ''
"""Key into the ELASTIC_INDICES dict in the app config."""
doc_types = [] doc_types = []
name = 'remove index' name = 'remove index'
def __init__(self): def __init__(self):
if not self.index: if not self.index_key:
raise ValueError("No index specified") raise ValueError("No index specified")
if not self.doc_types: if not self.doc_types:
@@ -40,16 +42,16 @@ class ResetIndexTask(object):
) )
def execute(self): def execute(self):
index = current_app.config['ELASTIC_INDICES'][self.index_key]
idx = es.Index(self.index) idx = es.Index(index)
try: try:
idx.delete(ignore=404) idx.delete(ignore=404)
log.info("Deleted index %s", self.index) log.info("Deleted index %s", index)
except AttributeError: except AttributeError:
log.warning("Could not delete index '%s', ignoring", self.index) log.warning("Could not delete index '%s', ignoring", index)
except NotFoundError: except NotFoundError:
log.warning("Could not delete index '%s', ignoring", self.index) log.warning("Could not delete index '%s', ignoring", index)
# create doc types # create doc types
for dt in self.doc_types: for dt in self.doc_types:
@@ -60,15 +62,13 @@ class ResetIndexTask(object):
class ResetNodeIndex(ResetIndexTask): class ResetNodeIndex(ResetIndexTask):
index = current_app.config['ELASTIC_INDICES']['NODE'] index_key = 'NODE'
doc_types = [documents.Node] doc_types = [documents.Node]
class ResetUserIndex(ResetIndexTask): class ResetUserIndex(ResetIndexTask):
index = current_app.config['ELASTIC_INDICES']['USER'] index_key = 'USER'
doc_types = [documents.User] doc_types = [documents.User]
def reset_node_index(): def reset_node_index():
resettask = ResetNodeIndex() resettask = ResetNodeIndex()
resettask.execute() resettask.execute()