0001-search-change-registration-to-take-a-function-26260.patch
combo/apps/search/engines.py | ||
---|---|---|
18 | 18 | |
19 | 19 | |
20 | 20 |
class Engines(object): |
21 |
"""Singleton object that serves as a registry of classes providing search |
|
22 |
engines.""" |
|
21 |
"""Singleton object that serves as a registry of search engines.""" |
|
23 | 22 | |
24 | 23 |
def __init__(self): |
25 |
self.engines = {}
|
|
24 |
self.engines = []
|
|
26 | 25 | |
27 |
def register(self, key, **options):
|
|
28 |
self.engines[key] = options
|
|
26 |
def register(self, method):
|
|
27 |
self.engines.append(method)
|
|
29 | 28 | |
30 | 29 |
def get(self, key): |
31 | 30 |
if key in settings.COMBO_SEARCH_SERVICES: |
32 | 31 |
return settings.COMBO_SEARCH_SERVICES[key] |
33 |
return self.engines.get(key)
|
|
32 |
return self.get_engines().get(key)
|
|
34 | 33 | |
35 | 34 |
def get_engines(self): |
36 | 35 |
data = {} |
36 |
for get_engines in self.engines: |
|
37 |
data.update(get_engines() or {}) |
|
37 | 38 |
for key in settings.COMBO_SEARCH_SERVICES: |
38 | 39 |
data[key] = settings.COMBO_SEARCH_SERVICES[key] |
39 |
for key in self.engines: |
|
40 |
data[key] = self.engines[key] |
|
41 | 40 |
return data |
42 | 41 | |
43 | 42 |
engines = Engines() # singleton object |
combo/apps/wcs/__init__.py | ||
---|---|---|
25 | 25 | |
26 | 26 |
def ready(self): |
27 | 27 |
from combo.apps.search import engines |
28 |
engines.register('tracking-code', |
|
29 |
url=reverse('wcs-tracking-code-search') + '?q=%(q)s', |
|
30 |
label=_('Tracking Code') |
|
31 |
) |
|
28 |
engines.register(self.get_search_engines) |
|
29 | ||
30 |
def get_search_engines(self): |
|
31 |
return { |
|
32 |
'tracking-code': { |
|
33 |
'url': reverse('wcs-tracking-code-search') + '?q=%(q)s', |
|
34 |
'label': _('Tracking Code'), |
|
35 |
} |
|
36 |
} |
|
32 | 37 | |
33 | 38 |
def get_before_urls(self): |
34 | 39 |
from . import urls |
combo/data/apps.py | ||
---|---|---|
26 | 26 |
def ready(self): |
27 | 27 |
# register built-in search engine for page contents |
28 | 28 |
from combo.apps.search import engines |
29 |
engines.register('_text', |
|
30 |
url=reverse('api-search') + '?q=%(q)s', |
|
31 |
label=_('Page Contents') |
|
32 |
) |
|
29 |
engines.register(self.get_search_engines) |
|
30 | ||
31 |
def get_search_engines(self): |
|
32 |
return { |
|
33 |
'_text': { |
|
34 |
'url': reverse('api-search') + '?q=%(q)s', |
|
35 |
'label': _('Page Contents'), |
|
36 |
} |
|
37 |
} |
|
33 |
- |