forked from zaclys/searxng
[fix] fix of / and /search
* URL / : the index page displayed the selected or the default category. * URL / : when the q parameter is set using the URL, the redirect includes the URL query. * URL /search : an empty query doesn't raise an exception.
This commit is contained in:
parent
c03e4c86bc
commit
b3a3ccf2db
|
@ -537,10 +537,12 @@ def index():
|
||||||
|
|
||||||
# redirect to search if there's a query in the request
|
# redirect to search if there's a query in the request
|
||||||
if request.form.get('q'):
|
if request.form.get('q'):
|
||||||
return redirect(url_for('search'), 308)
|
query = ('?' + request.query_string.decode()) if request.query_string else ''
|
||||||
|
return redirect(url_for('search') + query, 308)
|
||||||
|
|
||||||
return render(
|
return render(
|
||||||
'index.html',
|
'index.html',
|
||||||
|
selected_categories=get_selected_categories(request.preferences, request.form),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -556,8 +558,8 @@ def search():
|
||||||
if output_format not in ['html', 'csv', 'json', 'rss']:
|
if output_format not in ['html', 'csv', 'json', 'rss']:
|
||||||
output_format = 'html'
|
output_format = 'html'
|
||||||
|
|
||||||
# check if there is query
|
# check if there is query (not None and not an empty string)
|
||||||
if request.form.get('q') is None:
|
if not request.form.get('q'):
|
||||||
if output_format == 'html':
|
if output_format == 'html':
|
||||||
return render(
|
return render(
|
||||||
'index.html',
|
'index.html',
|
||||||
|
|
|
@ -75,9 +75,32 @@ class ViewsTestCase(SearxTestCase):
|
||||||
self.assertEqual(result.status_code, 200)
|
self.assertEqual(result.status_code, 200)
|
||||||
self.assertIn(b'<div class="title"><h1>searx</h1></div>', result.data)
|
self.assertIn(b'<div class="title"><h1>searx</h1></div>', result.data)
|
||||||
|
|
||||||
def test_index_html(self):
|
def test_index_html_post(self):
|
||||||
result = self.app.post('/', data={'q': 'test'})
|
result = self.app.post('/', data={'q': 'test'})
|
||||||
self.assertEqual(result.status_code, 308)
|
self.assertEqual(result.status_code, 308)
|
||||||
|
self.assertEqual(result.location, 'http://localhost/search')
|
||||||
|
|
||||||
|
def test_index_html_get(self):
|
||||||
|
result = self.app.post('/?q=test')
|
||||||
|
self.assertEqual(result.status_code, 308)
|
||||||
|
self.assertEqual(result.location, 'http://localhost/search?q=test')
|
||||||
|
|
||||||
|
def test_search_empty_html(self):
|
||||||
|
result = self.app.post('/search', data={'q': ''})
|
||||||
|
self.assertEqual(result.status_code, 200)
|
||||||
|
self.assertIn(b'<div class="title"><h1>searx</h1></div>', result.data)
|
||||||
|
|
||||||
|
def test_search_empty_json(self):
|
||||||
|
result = self.app.post('/search', data={'q': '', 'format': 'json'})
|
||||||
|
self.assertEqual(result.status_code, 400)
|
||||||
|
|
||||||
|
def test_search_empty_csv(self):
|
||||||
|
result = self.app.post('/search', data={'q': '', 'format': 'csv'})
|
||||||
|
self.assertEqual(result.status_code, 400)
|
||||||
|
|
||||||
|
def test_search_empty_rss(self):
|
||||||
|
result = self.app.post('/search', data={'q': '', 'format': 'rss'})
|
||||||
|
self.assertEqual(result.status_code, 400)
|
||||||
|
|
||||||
def test_search_html(self):
|
def test_search_html(self):
|
||||||
result = self.app.post('/search', data={'q': 'test'})
|
result = self.app.post('/search', data={'q': 'test'})
|
||||||
|
|
Loading…
Reference in New Issue