Merge pull request #2300 from dalf/fix-webapp-index

[fix] fix of / and /search
This commit is contained in:
Alexandre Flament 2020-11-14 13:23:03 +01:00 committed by GitHub
commit ebed1461bc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 29 additions and 4 deletions

View File

@ -547,10 +547,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),
) )
@ -566,8 +568,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',

View File

@ -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'})