def search_index(self, index): from bungiesearch import Bungiesearch if index not in Bungiesearch.get_index(self.model, via_class=True): logger.warning( 'Model/doctype {} is not present on index {}: search may return no results.' .format(self.model.__name__, index)) return Bungiesearch().index(index).doc_type(self.model.__name__)
def enqueue(self, action, sender, instance, **kwargs): """ Given an individual model instance, determine if a backend handles the model, check if the index is Celery-enabled and enqueue task. """ try: Bungiesearch.get_index(sender, via_class=True) except KeyError: return # This model is not managed by Bungiesearch. if action not in self.ALLOWED_ACTIONS: raise ValueError("Unrecognized action %s" % action) get_update_task().delay(action, instance)
def test_search_alias_model(self): self.assertEqual( Article.objects.bsearch_get_alias_for_test().get_model(), Article, 'Unexpected get_model information on search alias.') self.assertEqual( Article.objects.search.bsearch_title( 'title query').bsearch_get_alias_for_test().get_model(), Article, 'Unexpected get_model information on search alias.') self.assertRaises( ValueError, Bungiesearch().bsearch_get_alias_for_test().get_model)
def custom_search(self, index, doc_type): ''' Performs a search on a custom elasticsearch index and mapping. Will not attempt to map result objects. ''' from bungiesearch import Bungiesearch return Bungiesearch(raw_results=True).index(index).doc_type(doc_type)
def search(self): from bungiesearch import Bungiesearch return Bungiesearch().index( *Bungiesearch.get_index(self.model, via_class=True)).doc_type( self.model.__name__)
def test_timeout_used(self): settings.BUNGIESEARCH['TIMEOUT'] = 29 search = Bungiesearch() self.assertEqual(search.BUNGIE['TIMEOUT'], 29) self.assertEqual(search._using.transport.kwargs['timeout'], 29)
def search_index(self, index): from bungiesearch import Bungiesearch if index not in Bungiesearch.get_index(self.model, via_class=True): logger.warning('Model/doctype {} is not present on index {}: search may return no results.'.format(self.model.__name__, index)) return Bungiesearch().index(index).doc_type(self.model.__name__)
def search(self): from bungiesearch import Bungiesearch return Bungiesearch().index(*Bungiesearch.get_index(self.model, via_class=True)).doc_type(self.model.__name__)
def get_model_indexing_query(model): return getattr(Bungiesearch().get_model_index(model.__name__).Meta, 'indexing_query', model.objects.all())
def get_model_index(model): return Bungiesearch().get_model_index(model.__name__)