summaryrefslogtreecommitdiff
path: root/searx/webadapter.py
diff options
context:
space:
mode:
authorAlexandre Flament <alex@al-f.net>2020-09-22 16:22:22 +0200
committerAlexandre Flament <alex@al-f.net>2020-09-22 18:59:51 +0200
commit2929495112e9869af24986b27066163572bc558a (patch)
tree988e17588dd5beb96a34e44ba7220828f1253b2e /searx/webadapter.py
parent2dbc0de0cd000459ebfdb3d015be8684e737e95c (diff)
[mod] add searx.search.EngineRef
was previously a Dict with two or three keys: name, category, from_bang make clear that this is a engine reference (see tests/unit/test_search.py for example) all variables using this class are renamed accordingly.
Diffstat (limited to 'searx/webadapter.py')
-rw-r--r--searx/webadapter.py36
1 files changed, 17 insertions, 19 deletions
diff --git a/searx/webadapter.py b/searx/webadapter.py
index cad834bb..97379b17 100644
--- a/searx/webadapter.py
+++ b/searx/webadapter.py
@@ -1,14 +1,14 @@
from searx.exceptions import SearxParameterException
from searx.query import RawTextQuery, VALID_LANGUAGE_CODE
from searx.engines import categories, engines
-from searx.search import SearchQuery
+from searx.search import SearchQuery, EngineRef
# remove duplicate queries.
# FIXME: does not fix "!music !soundcloud", because the categories are 'none' and 'music'
-def deduplicate_query_engines(query_engines):
- uniq_query_engines = {q["category"] + '|' + q["name"]: q for q in query_engines}
- return uniq_query_engines.values()
+def deduplicate_engineref_list(engineref_list):
+ engineref_dict = {q.category + '|' + q.name: q for q in engineref_list}
+ return engineref_dict.values()
def get_search_query_from_webapp(preferences, form):
@@ -68,7 +68,7 @@ def get_search_query_from_webapp(preferences, form):
raise SearxParameterException('time_range', query_time_range)
# query_engines
- query_engines = raw_text_query.engines
+ query_engineref_list = raw_text_query.enginerefs
# timeout_limit
query_timeout = raw_text_query.timeout_limit
@@ -87,13 +87,13 @@ def get_search_query_from_webapp(preferences, form):
# if engines are calculated from query,
# set categories by using that informations
- if query_engines and raw_text_query.specific:
+ if query_engineref_list and raw_text_query.specific:
additional_categories = set()
- for engine in query_engines:
- if 'from_bang' in engine and engine['from_bang']:
+ for engineref in query_engineref_list:
+ if engineref.from_bang:
additional_categories.add('none')
else:
- additional_categories.add(engine['category'])
+ additional_categories.add(engineref.category)
query_categories = list(additional_categories)
# otherwise, using defined categories to
@@ -105,11 +105,10 @@ def get_search_query_from_webapp(preferences, form):
if pd_name == 'categories':
query_categories.extend(categ for categ in map(str.strip, pd.split(',')) if categ in categories)
elif pd_name == 'engines':
- pd_engines = [{'category': engines[engine].categories[0],
- 'name': engine}
+ pd_engines = [EngineRef(engineref, engines[engineref].categories[0])
for engine in map(str.strip, pd.split(',')) if engine in engines]
if pd_engines:
- query_engines.extend(pd_engines)
+ query_engineref_list.extend(pd_engines)
load_default_categories = False
elif pd_name.startswith('category_'):
category = pd_name[9:]
@@ -128,7 +127,7 @@ def get_search_query_from_webapp(preferences, form):
if not load_default_categories:
if not query_categories:
query_categories = list(set(engine['category']
- for engine in query_engines))
+ for engine in query_engineref_list))
else:
# if no category is specified for this search,
# using user-defined default-configuration which
@@ -147,15 +146,14 @@ def get_search_query_from_webapp(preferences, form):
# using all engines for that search, which are
# declared under the specific categories
for categ in query_categories:
- query_engines.extend({'category': categ,
- 'name': engine.name}
- for engine in categories[categ]
- if (engine.name, categ) not in disabled_engines)
+ query_engineref_list.extend(EngineRef(engine.name, categ)
+ for engine in categories[categ]
+ if (engine.name, categ) not in disabled_engines)
- query_engines = deduplicate_query_engines(query_engines)
+ query_engineref_list = deduplicate_engineref_list(query_engineref_list)
external_bang = raw_text_query.external_bang
- return (SearchQuery(query, query_engines, query_categories,
+ return (SearchQuery(query, query_engineref_list, query_categories,
query_lang, query_safesearch, query_pageno,
query_time_range, query_timeout, preferences,
external_bang=external_bang),