@@ -36,6 +36,8 @@ engines = {}
37categories = {'general': []}
37categories = {'general': []}
40def load_module(filename):
42def load_module(filename):
41 modname = splitext(filename)[0]
43 modname = splitext(filename)[0]
@@ -54,13 +56,6 @@ for engine_data in settings['engines']:
54 engine_name = engine_data['engine']
56 engine_name = engine_data['engine']
55 engine = load_module(engine_name + '.py')
57 engine = load_module(engine_name + '.py')
57− if not hasattr(engine, 'paging'):
58− engine.paging = False
60− if not hasattr(engine, 'language_support'):
61− #engine.language_support = False
62− engine.language_support = True
64 for param_name in engine_data:
59 for param_name in engine_data:
65 if param_name == 'engine':
60 if param_name == 'engine':
@@ -72,12 +67,26 @@ for engine_data in settings['engines']:
72 str.strip, engine_data['categories'].split(','))
67 str.strip, engine_data['categories'].split(','))
74 setattr(engine, param_name, engine_data[param_name])
69 setattr(engine, param_name, engine_data[param_name])
71+ if not hasattr(engine, 'paging'):
72+ engine.paging = False
74+ if not hasattr(engine, 'language_support'):
75+ #engine.language_support = False
76+ engine.language_support = True
78+ if not hasattr(engine, 'shortcut'):
79+ #engine.language_support = False
82+ # checking required variables
75 for engine_attr in dir(engine):
83 for engine_attr in dir(engine):
76 if engine_attr.startswith('_'):
84 if engine_attr.startswith('_'):
78 if getattr(engine, engine_attr) is None:
86 if getattr(engine, engine_attr) is None:
79 print '[E] Engine config error: Missing attribute "{0}.{1}"'.format(engine.name, engine_attr) # noqa
87 print '[E] Engine config error: Missing attribute "{0}.{1}"'.format(engine.name, engine_attr) # noqa
80 sys.exit(1)
88 sys.exit(1)
81 engines[engine.name] = engine
90 engines[engine.name] = engine
82 engine.stats = {
91 engine.stats = {
83 'result_count': 0,
92 'result_count': 0,
@@ -86,12 +95,17 @@ for engine_data in settings['engines']:
86 'score_count': 0,
95 'score_count': 0,
87 'errors': 0
96 'errors': 0
89 if hasattr(engine, 'categories'):
99 if hasattr(engine, 'categories'):
90 for category_name in engine.categories:
100 for category_name in engine.categories:
91 categories.setdefault(category_name, []).append(engine)
101 categories.setdefault(category_name, []).append(engine)
93 categories['general'].append(engine)
103 categories['general'].append(engine)
106+ # TODO check duplications
107+ engine_shortcuts[engine.shortcut] = engine.name
96def default_request_params():
110def default_request_params():