Projet

Général

Profil

0001-search-change-registration-to-take-a-function-26260.patch

Frédéric Péters, 01 janvier 2019 14:11

Télécharger (3,18 ko)

Voir les différences:

Subject: [PATCH 1/3] search: change registration to take a function (#26260)

 combo/apps/search/engines.py | 15 +++++++--------
 combo/apps/wcs/__init__.py   | 13 +++++++++----
 combo/data/apps.py           | 13 +++++++++----
 3 files changed, 25 insertions(+), 16 deletions(-)
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
-