on master help sign in
[mod] searx/webadapter.py: each web parameter has a dedicated function (parse_pageno, page_lang,....).
d5b5e48Alexandre Flament
searx/webadapter.py+39−25
@@ -36,27 +36,14 @@ def validate_engineref_list(engineref_list, preferences):
36 return valid, unknown, no_token
36 return valid, unknown, no_token
37
37
38
38
39−def get_search_query_from_webapp(preferences, form):
39+def parse_pageno(form):
40− # no text for the query ?
41− if not form.get('q'):
42− raise SearxParameterException('q', '')
43−
44− # set blocked engines
45− disabled_engines = preferences.engines.get_disabled()
46−
47− # parse query, if tags are set, which change
48− # the serch engine or search-language
49− raw_text_query = RawTextQuery(form['q'], disabled_engines)
50−
51− # set query
52− query = raw_text_query.getQuery()
53−
54− # get and check page number
55 pageno_param = form.get('pageno', '1')
40 pageno_param = form.get('pageno', '1')
56 if not pageno_param.isdigit() or int(pageno_param) < 1:
41 if not pageno_param.isdigit() or int(pageno_param) < 1:
57 raise SearxParameterException('pageno', pageno_param)
42 raise SearxParameterException('pageno', pageno_param)
58− query_pageno = int(pageno_param)
43+ return int(pageno_param)
59
44
45+
46+def parse_lang(raw_text_query, form, preferences):
60 # get language
47 # get language
61 # set specific language if set on request, query or preferences
48 # set specific language if set on request, query or preferences
62 # TODO support search with multible languages
49 # TODO support search with multible languages
@@ -71,7 +58,10 @@ def get_search_query_from_webapp(preferences, form):
71 if not VALID_LANGUAGE_CODE.match(query_lang):
58 if not VALID_LANGUAGE_CODE.match(query_lang):
72 raise SearxParameterException('language', query_lang)
59 raise SearxParameterException('language', query_lang)
73
60
74− # get safesearch
61+ return query_lang
62+
63+
64+def parse_safesearch(form, preferences):
75 if 'safesearch' in form:
65 if 'safesearch' in form:
76 query_safesearch = form.get('safesearch')
66 query_safesearch = form.get('safesearch')
77 # first check safesearch
67 # first check safesearch
@@ -85,30 +75,54 @@ def get_search_query_from_webapp(preferences, form):
85 if query_safesearch < 0 or query_safesearch > 2:
75 if query_safesearch < 0 or query_safesearch > 2:
86 raise SearxParameterException('safesearch', query_safesearch)
76 raise SearxParameterException('safesearch', query_safesearch)
87
77
88− # get time_range
78+ return query_safesearch
89− query_time_range = form.get('time_range')
79+
90
80
81+def parse_time_range(form):
82+ query_time_range = form.get('time_range')
91 # check time_range
83 # check time_range
92 query_time_range = None if query_time_range in ('', 'None') else query_time_range
84 query_time_range = None if query_time_range in ('', 'None') else query_time_range
93 if query_time_range not in (None, 'day', 'week', 'month', 'year'):
85 if query_time_range not in (None, 'day', 'week', 'month', 'year'):
94 raise SearxParameterException('time_range', query_time_range)
86 raise SearxParameterException('time_range', query_time_range)
87+ return query_time_range
95
88
96− # query_engines
97− query_engineref_list = raw_text_query.enginerefs
98
89
99− # timeout_limit
90+def parse_timeout(raw_text_query, form):
100 query_timeout = raw_text_query.timeout_limit
91 query_timeout = raw_text_query.timeout_limit
101 if query_timeout is None and 'timeout_limit' in form:
92 if query_timeout is None and 'timeout_limit' in form:
102 raw_time_limit = form.get('timeout_limit')
93 raw_time_limit = form.get('timeout_limit')
103 if raw_time_limit in ['None', '']:
94 if raw_time_limit in ['None', '']:
104− raw_time_limit = None
95+ return None
105 else:
96 else:
106 try:
97 try:
107− query_timeout = float(raw_time_limit)
98+ return float(raw_time_limit)
108 except ValueError:
99 except ValueError:
109 raise SearxParameterException('timeout_limit', raw_time_limit)
100 raise SearxParameterException('timeout_limit', raw_time_limit)
110
101
102+
103+def get_search_query_from_webapp(preferences, form):
104+ # no text for the query ?
105+ if not form.get('q'):
106+ raise SearxParameterException('q', '')
107+
108+ # set blocked engines
109+ disabled_engines = preferences.engines.get_disabled()
110+
111+ # parse query, if tags are set, which change
112+ # the serch engine or search-language
113+ raw_text_query = RawTextQuery(form['q'], disabled_engines)
114+
115+ # set query
116+ query = raw_text_query.getQuery()
117+ query_pageno = parse_pageno(form)
118+ query_lang = parse_lang(raw_text_query, form, preferences)
119+ query_safesearch = parse_safesearch(form, preferences)
120+ query_time_range = parse_time_range(form)
121+ query_timeout = parse_timeout(raw_text_query, form)
122+ external_bang = raw_text_query.external_bang
123+
111 # query_categories
124 # query_categories
125+ query_engineref_list = raw_text_query.enginerefs
112 query_categories = []
126 query_categories = []
113
127
114 # if engines are calculated from query,
128 # if engines are calculated from query,