search: change registration to take a function (#26260)
This commit is contained in:
parent
0257b17ac9
commit
9c2e369036
|
@ -18,26 +18,25 @@ from django.conf import settings
|
|||
|
||||
|
||||
class Engines(object):
|
||||
"""Singleton object that serves as a registry of classes providing search
|
||||
engines."""
|
||||
"""Singleton object that serves as a registry of search engines."""
|
||||
|
||||
def __init__(self):
|
||||
self.engines = {}
|
||||
self.engines = []
|
||||
|
||||
def register(self, key, **options):
|
||||
self.engines[key] = options
|
||||
def register(self, method):
|
||||
self.engines.append(method)
|
||||
|
||||
def get(self, key):
|
||||
if key in settings.COMBO_SEARCH_SERVICES:
|
||||
return settings.COMBO_SEARCH_SERVICES[key]
|
||||
return self.engines.get(key)
|
||||
return self.get_engines().get(key)
|
||||
|
||||
def get_engines(self):
|
||||
data = {}
|
||||
for get_engines in self.engines:
|
||||
data.update(get_engines() or {})
|
||||
for key in settings.COMBO_SEARCH_SERVICES:
|
||||
data[key] = settings.COMBO_SEARCH_SERVICES[key]
|
||||
for key in self.engines:
|
||||
data[key] = self.engines[key]
|
||||
return data
|
||||
|
||||
engines = Engines() # singleton object
|
||||
|
|
|
@ -25,10 +25,15 @@ class AppConfig(django.apps.AppConfig):
|
|||
|
||||
def ready(self):
|
||||
from combo.apps.search import engines
|
||||
engines.register('tracking-code',
|
||||
url=reverse('wcs-tracking-code-search') + '?q=%(q)s',
|
||||
label=_('Tracking Code')
|
||||
)
|
||||
engines.register(self.get_search_engines)
|
||||
|
||||
def get_search_engines(self):
|
||||
return {
|
||||
'tracking-code': {
|
||||
'url': reverse('wcs-tracking-code-search') + '?q=%(q)s',
|
||||
'label': _('Tracking Code'),
|
||||
}
|
||||
}
|
||||
|
||||
def get_before_urls(self):
|
||||
from . import urls
|
||||
|
|
|
@ -26,7 +26,12 @@ class DataConfig(AppConfig):
|
|||
def ready(self):
|
||||
# register built-in search engine for page contents
|
||||
from combo.apps.search import engines
|
||||
engines.register('_text',
|
||||
url=reverse('api-search') + '?q=%(q)s',
|
||||
label=_('Page Contents')
|
||||
)
|
||||
engines.register(self.get_search_engines)
|
||||
|
||||
def get_search_engines(self):
|
||||
return {
|
||||
'_text': {
|
||||
'url': reverse('api-search') + '?q=%(q)s',
|
||||
'label': _('Page Contents'),
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue