@@ -36,27 +36,14 @@ def validate_engineref_list(engineref_list, preferences):
3636 return valid, unknown, no_token
3737
3838
39−def get_search_query_from_webapp(preferences, 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
39+def parse_pageno(form):
5540 pageno_param = form.get('pageno', '1')
5641 if not pageno_param.isdigit() or int(pageno_param) < 1:
5742 raise SearxParameterException('pageno', pageno_param)
58− query_pageno = int(pageno_param)
43+ return int(pageno_param)
5944
45+
46+def parse_lang(raw_text_query, form, preferences):
6047 # get language
6148 # set specific language if set on request, query or preferences
6249 # TODO support search with multible languages
@@ -71,7 +58,10 @@ def get_search_query_from_webapp(preferences, form):
7158 if not VALID_LANGUAGE_CODE.match(query_lang):
7259 raise SearxParameterException('language', query_lang)
7360
74− # get safesearch
61+ return query_lang
62+
63+
64+def parse_safesearch(form, preferences):
7565 if 'safesearch' in form:
7666 query_safesearch = form.get('safesearch')
7767 # first check safesearch
@@ -85,30 +75,54 @@ def get_search_query_from_webapp(preferences, form):
8575 if query_safesearch < 0 or query_safesearch > 2:
8676 raise SearxParameterException('safesearch', query_safesearch)
8777
88− # get time_range
89− query_time_range = form.get('time_range')
78+ return query_safesearch
79+
9080
81+def parse_time_range(form):
82+ query_time_range = form.get('time_range')
9183 # check time_range
9284 query_time_range = None if query_time_range in ('', 'None') else query_time_range
9385 if query_time_range not in (None, 'day', 'week', 'month', 'year'):
9486 raise SearxParameterException('time_range', query_time_range)
87+ return query_time_range
9588
96− # query_engines
97− query_engineref_list = raw_text_query.enginerefs
9889
99− # timeout_limit
90+def parse_timeout(raw_text_query, form):
10091 query_timeout = raw_text_query.timeout_limit
10192 if query_timeout is None and 'timeout_limit' in form:
10293 raw_time_limit = form.get('timeout_limit')
10394 if raw_time_limit in ['None', '']:
104− raw_time_limit = None
95+ return None
10596 else:
10697 try:
107− query_timeout = float(raw_time_limit)
98+ return float(raw_time_limit)
10899 except ValueError:
109100 raise SearxParameterException('timeout_limit', raw_time_limit)
110101
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+
111124 # query_categories
125+ query_engineref_list = raw_text_query.enginerefs
112126 query_categories = []
113127
114128 # if engines are calculated from query,