on master help sign in
Merge pull request #61 from matejc/optional_search_get
44d3af9Adam Tauber
searx/templates/preferences.html+9
@@ -43,6 +43,15 @@
43 </select>
43 </select>
44 </p>
44 </p>
45 </fieldset>
45 </fieldset>
46+ <fieldset>
47+ <legend>{{ _('Method') }}</legend>
48+ <p>
49+ <select name='method'>
50+ <option value="POST" {% if method == 'POST' %}selected="selected"{% endif %}>POST</option>
51+ <option value="GET" {% if method == 'GET' %}selected="selected"{% endif %}>GET</option>
52+ </select>
53+ </p>
54+ </fieldset>
46 <fieldset>
55 <fieldset>
47 <legend>{{ _('Currently used search engines') }}</legend>
56 <legend>{{ _('Currently used search engines') }}</legend>
48
57
searx/templates/results.html+4−4
@@ -10,7 +10,7 @@
10 {% if suggestions %}
10 {% if suggestions %}
11 <div id="suggestions"><span>{{ _('Suggestions') }}</span>
11 <div id="suggestions"><span>{{ _('Suggestions') }}</span>
12 {% for suggestion in suggestions %}
12 {% for suggestion in suggestions %}
13− <form method="post" action="{{ url_for('index') }}">
13+ <form method="{{ method or 'POST' }}" action="{{ url_for('index') }}">
14 <input type="hidden" name="q" value="{{ suggestion }}">
14 <input type="hidden" name="q" value="{{ suggestion }}">
15 <input type="submit" value="{{ suggestion }}" />
15 <input type="submit" value="{{ suggestion }}" />
16 </form>
16 </form>
@@ -25,7 +25,7 @@
25 <div id="apis">
25 <div id="apis">
26 {{ _('Download results') }}
26 {{ _('Download results') }}
27 {% for output_type in ('csv', 'json', 'rss') %}
27 {% for output_type in ('csv', 'json', 'rss') %}
28− <form method="post" action="{{ url_for('index') }}">
28+ <form method="{{ method or 'POST' }}" action="{{ url_for('index') }}">
29 <div class="left">
29 <div class="left">
30 <input type="hidden" name="q" value="{{ q }}" />
30 <input type="hidden" name="q" value="{{ q }}" />
31 <input type="hidden" name="format" value="{{ output_type }}" />
31 <input type="hidden" name="format" value="{{ output_type }}" />
@@ -52,7 +52,7 @@
52 {% if paging %}
52 {% if paging %}
53 <div id="pagination">
53 <div id="pagination">
54 {% if pageno > 1 %}
54 {% if pageno > 1 %}
55− <form method="post" action="{{ url_for('index') }}">
55+ <form method="{{ method or 'POST' }}" action="{{ url_for('index') }}">
56 <div class="left">
56 <div class="left">
57 <input type="hidden" name="q" value="{{ q }}" />
57 <input type="hidden" name="q" value="{{ q }}" />
58 {% for category in selected_categories %}
58 {% for category in selected_categories %}
@@ -63,7 +63,7 @@
63 </div>
63 </div>
64 </form>
64 </form>
65 {% endif %}
65 {% endif %}
66− <form method="post" action="{{ url_for('index') }}">
66+ <form method="{{ method or 'POST' }}" action="{{ url_for('index') }}">
67 <div class="left">
67 <div class="left">
68 {% for category in selected_categories %}
68 {% for category in selected_categories %}
69 <input type="hidden" name="category_{{ category }}" value="1"/>
69 <input type="hidden" name="category_{{ category }}" value="1"/>
searx/templates/search.html+1−1
@@ -1,4 +1,4 @@
1−<form method="post" action="{{ url_for('index') }}" id="search_form">
1+<form method="{{ method or 'POST' }}" action="{{ url_for('index') }}" id="search_form">
2 <div id="search_wrapper">
2 <div id="search_wrapper">
3 <input type="text" placeholder="{{ _('Search for...') }}" id="q" class="q" name="q" tabindex="1" autocomplete="off" {% if q %}value="{{ q }}"{% endif %}/>
3 <input type="text" placeholder="{{ _('Search for...') }}" id="q" class="q" name="q" tabindex="1" autocomplete="off" {% if q %}value="{{ q }}"{% endif %}/>
4 <input type="submit" value="search" id="search_submit" />
4 <input type="submit" value="search" id="search_submit" />
searx/webapp.py+7
@@ -123,6 +123,8 @@ def render(template_name, **kwargs):
123 if not 'autocomplete' in kwargs:
123 if not 'autocomplete' in kwargs:
124 kwargs['autocomplete'] = autocomplete
124 kwargs['autocomplete'] = autocomplete
125
125
126+ kwargs['method'] = request.cookies.get('method', 'POST')
127+
126 return render_template(template_name, **kwargs)
128 return render_template(template_name, **kwargs)
127
129
128
130
@@ -291,6 +293,7 @@ def preferences():
291 selected_categories = []
293 selected_categories = []
292 locale = None
294 locale = None
293 autocomplete = ''
295 autocomplete = ''
296+ method = 'POST'
294 for pd_name, pd in request.form.items():
297 for pd_name, pd in request.form.items():
295 if pd_name.startswith('category_'):
298 if pd_name.startswith('category_'):
296 category = pd_name[9:]
299 category = pd_name[9:]
@@ -305,6 +308,8 @@ def preferences():
305 pd in (x[0] for
308 pd in (x[0] for
306 x in language_codes)):
309 x in language_codes)):
307 lang = pd
310 lang = pd
311+ elif pd_name == 'method':
312+ method = pd
308 elif pd_name.startswith('engine_'):
313 elif pd_name.startswith('engine_'):
309 engine_name = pd_name.replace('engine_', '', 1)
314 engine_name = pd_name.replace('engine_', '', 1)
310 if engine_name in engines:
315 if engine_name in engines:
@@ -344,6 +349,8 @@ def preferences():
344 max_age=cookie_max_age
349 max_age=cookie_max_age
345 )
350 )
346
351
352+ resp.set_cookie('method', method, max_age=cookie_max_age)
353+
347 return resp
354 return resp
348 return render('preferences.html',
355 return render('preferences.html',
349 locales=settings['locales'],
356 locales=settings['locales'],
versions.cfg+9−1
@@ -1,4 +1,5 @@
1[versions]
1[versions]
2+Babel = 1.3
2Flask = 0.10.1
3Flask = 0.10.1
3Flask-Babel = 0.9
4Flask-Babel = 0.9
4Jinja2 = 2.7.2
5Jinja2 = 2.7.2
@@ -14,9 +15,11 @@ docutils = 0.11
14flake8 = 2.1.0
15flake8 = 2.1.0
15itsdangerous = 0.23
16itsdangerous = 0.23
16mccabe = 0.2.1
17mccabe = 0.2.1
18+mock = 1.0.1
17pep8 = 1.4.6
19pep8 = 1.4.6
18plone.testing = 4.0.8
20plone.testing = 4.0.8
19pyflakes = 0.7.3
21pyflakes = 0.7.3
22+pytz = 2013b
20pyyaml = 3.10
23pyyaml = 3.10
21requests = 2.2.0
24requests = 2.2.0
22robotframework-debuglibrary = 0.3
25robotframework-debuglibrary = 0.3
@@ -24,6 +27,7 @@ robotframework-httplibrary = 0.4.2
24robotframework-selenium2library = 1.5.0
27robotframework-selenium2library = 1.5.0
25robotsuite = 1.4.2
28robotsuite = 1.4.2
26selenium = 2.39.0
29selenium = 2.39.0
30+speaklater = 1.3
27unittest2 = 0.5.1
31unittest2 = 0.5.1
28waitress = 0.8.8
32waitress = 0.8.8
29zc.recipe.testrunner = 2.0.0
33zc.recipe.testrunner = 2.0.0
@@ -72,7 +76,7 @@ setuptools = 2.1
72
76
73# Required by:
77# Required by:
74# zope.testrunner==4.4.1
78# zope.testrunner==4.4.1
75−six = 1.5.2
79+six = 1.6.1
76
80
77# Required by:
81# Required by:
78# collective.recipe.omelette==0.16
82# collective.recipe.omelette==0.16
@@ -93,3 +97,7 @@ zope.testing = 4.1.2
93# Required by:
97# Required by:
94# zc.recipe.testrunner==2.0.0
98# zc.recipe.testrunner==2.0.0
95zope.testrunner = 4.4.1
99zope.testrunner = 4.4.1
100+
101+# Required by:
102+# searx==0.3.0
103+python-dateutil = 2.2