on master help sign in
[mod] engine load refactor
17b0c9fAdam Tauber
searx/engines/__init__.py+18−31
@@ -34,6 +34,13 @@ engines = {}
34categories = {'general': []}
34categories = {'general': []}
35
35
36engine_shortcuts = {}
36engine_shortcuts = {}
37+engine_default_args = {'paging': False,
38+ 'categories': ['general'],
39+ 'language_support': True,
40+ 'safesearch': False,
41+ 'timeout': settings['outgoing']['request_timeout'],
42+ 'shortcut': '-',
43+ 'disabled': False}
37
44
38
45
39def load_module(filename):
46def load_module(filename):
@@ -62,26 +69,9 @@ def load_engine(engine_data):
62 continue
69 continue
63 setattr(engine, param_name, engine_data[param_name])
70 setattr(engine, param_name, engine_data[param_name])
64
71
65− if not hasattr(engine, 'paging'):
72+ for arg_name, arg_value in engine_default_args.iteritems():
66− engine.paging = False
67−
68− if not hasattr(engine, 'categories'):
69− engine.categories = ['general']
70−
71− if not hasattr(engine, 'language_support'):
72− engine.language_support = True
73−
74− if not hasattr(engine, 'safesearch'):
73+ if not hasattr(engine, arg_name):
75− engine.safesearch = False
74+ setattr(engine, arg_name, arg_value)
76−
77− if not hasattr(engine, 'timeout'):
78− engine.timeout = settings['outgoing']['request_timeout']
79−
80− if not hasattr(engine, 'shortcut'):
81− engine.shortcut = ''
82−
83− if not hasattr(engine, 'disabled'):
84− engine.disabled = False
85
75
86 # checking required variables
76 # checking required variables
87 for engine_attr in dir(engine):
77 for engine_attr in dir(engine):
@@ -100,18 +90,15 @@ def load_engine(engine_data):
100 'errors': 0
90 'errors': 0
101 }
91 }
102
92
103− if hasattr(engine, 'categories'):
104− for category_name in engine.categories:
93+ for category_name in engine.categories:
105− categories.setdefault(category_name, []).append(engine)
94+ categories.setdefault(category_name, []).append(engine)
106− else:
95+
107− categories['general'].append(engine)
96+ if engine.shortcut in engine_shortcuts:
97+ logger.error('Engine config error: ambigious shortcut: {0}'.format(engine.shortcut))
98+ sys.exit(1)
99+
100+ engine_shortcuts[engine.shortcut] = engine.name
108
101
109− if engine.shortcut:
110− if engine.shortcut in engine_shortcuts:
111− logger.error('Engine config error: ambigious shortcut: {0}'
112− .format(engine.shortcut))
113− sys.exit(1)
114− engine_shortcuts[engine.shortcut] = engine.name
115 return engine
102 return engine
116
103
117
104