on master help sign in
[fix] webadapter: fix locked categories
commite28b56e2620730138045f58ca76c8b99ee957251 authorAlexandre Flament <alex@al-f.net> dateTue 3 Nov 2020, 10:55 (6 years ago) parenteed4378
1 file changed+13−14
searx/webadapter.py+13−14
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)