on master help sign in
Merge pull request #2290 from dalf/fix-misc

Various bug fixes

commit1b42d42695070f4a93f4df1605dcdff70f4d4d10 authorAdam Tauber <asciimoo@gmail.com> dateTue 3 Nov 2020, 15:12 (6 years ago) parent9c3382de28b56e
3 files changed+16−17
searx/engines/command.py+2−2 searx/engines/scanr_structures.py+1−1 searx/webadapter.py+13−14
searx/engines/command.py+2−2
@@ -14,8 +14,8 @@ along with searx. If not, see < http://www.gnu.org/licenses/ >.
1414'''
1515
1616
17+import re
1718from os.path import expanduser, isabs, realpath, commonprefix
18−from re import MULTILINE, search as re_search
1919from shlex import split as shlex_split
2020from subprocess import Popen, PIPE
2121from time import time
@@ -59,7 +59,7 @@ def init(engine_settings):
5959 if 'parse_regex' in engine_settings:
6060 parse_regex = engine_settings['parse_regex']
6161 for result_key, regex in parse_regex.items():
62− _compiled_parse_regex[result_key] = re.compile(regex, flags=MULTILINE)
62+ _compiled_parse_regex[result_key] = re.compile(regex, flags=re.MULTILINE)
6363 if 'delimiter' in engine_settings:
6464 delimiter = engine_settings['delimiter']
6565
searx/engines/scanr_structures.py+1−1
@@ -11,7 +11,7 @@
1111"""
1212
1313from json import loads, dumps
14−from urllib.parse import html_to_text
14+from searx.utils import html_to_text
1515
1616# engine dependent config
1717categories = ['science']
searx/webadapter.py+13−14
@@ -122,9 +122,6 @@ def parse_specific(raw_text_query: RawTextQuery) -> Tuple[List[EngineRef], List[
122122
123123
124124def parse_category_form(query_categories: List[str], name: str, value: str) -> None:
125− if is_locked('categories'):
126− return preferences.get_value('categories')
127−
128125 if name == 'categories':
129126 query_categories.extend(categ for categ in map(str.strip, value.split(',')) if categ in categories)
130127 elif name.startswith('category_'):
@@ -145,7 +142,7 @@ def parse_category_form(query_categories: List[str], name: str, value: str) -> N
145142def get_selected_categories(preferences: Preferences, form: Optional[Dict[str, str]]) -> List[str]:
146143 selected_categories = []
147144
148− if form is not None:
145+ if not is_locked('categories') and form is not None:
149146 for name, value in form.items():
150147 parse_category_form(selected_categories, name, value)
151148
@@ -181,15 +178,17 @@ def parse_generic(preferences: Preferences, form: Dict[str, str], disabled_engin
181178
182179 # set categories/engines
183180 explicit_engine_list = False
184− for pd_name, pd in form.items():
185− if pd_name == 'engines':
186− pd_engines = [EngineRef(engine_name, engines[engine_name].categories[0])
187− for engine_name in map(str.strip, pd.split(',')) if engine_name in engines]
188− if pd_engines:
189− query_engineref_list.extend(pd_engines)
190− explicit_engine_list = True
191− else:
192− parse_category_form(query_categories, pd_name, pd)
181+ if not is_locked('categories'):
182+ # parse the form only if the categories are not locked
183+ for pd_name, pd in form.items():
184+ if pd_name == 'engines':
185+ pd_engines = [EngineRef(engine_name, engines[engine_name].categories[0])
186+ for engine_name in map(str.strip, pd.split(',')) if engine_name in engines]
187+ if pd_engines:
188+ query_engineref_list.extend(pd_engines)
189+ explicit_engine_list = True
190+ else:
191+ parse_category_form(query_categories, pd_name, pd)
193192
194193 if explicit_engine_list:
195194 # explicit list of engines with the "engines" parameter in the form
@@ -234,7 +233,7 @@ def get_search_query_from_webapp(preferences: Preferences, form: Dict[str, str])
234233 query_timeout = parse_timeout(form, raw_text_query)
235234 external_bang = raw_text_query.external_bang
236235
237− if raw_text_query.enginerefs and raw_text_query.specific:
236+ if not is_locked('categories') and raw_text_query.enginerefs and raw_text_query.specific:
238237 # if engines are calculated from query,
239238 # set categories by using that informations
240239 query_engineref_list, query_categories = parse_specific(raw_text_query)