diff options
| author | asciimoo <asciimoo@gmail.com> | 2013-10-17 21:06:28 +0200 |
|---|---|---|
| committer | asciimoo <asciimoo@gmail.com> | 2013-10-17 21:06:28 +0200 |
| commit | f76d80de543996f9a90eaf46e226354ad4681731 (patch) | |
| tree | 1bc3f1df732b38ed56725c9dff9b14d15600c719 /searx/webapp.py | |
| parent | 1aff439931e134a7f01bf1fdfb9f4af3e81a990c (diff) | |
[enh] category support
Diffstat (limited to 'searx/webapp.py')
| -rw-r--r-- | searx/webapp.py | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/searx/webapp.py b/searx/webapp.py index 02fb92058..a3b42f253 100644 --- a/searx/webapp.py +++ b/searx/webapp.py @@ -25,7 +25,7 @@ if __name__ == "__main__": from flask import Flask, request, flash, render_template, url_for, Response import ConfigParser from os import getenv -from searx.engines import search, engines +from searx.engines import search, categories import json cfg = ConfigParser.SafeConfigParser() @@ -51,27 +51,36 @@ opensearch_xml = '''<?xml version="1.0" encoding="utf-8"?> ''' def render(template_name, **kwargs): - kwargs['engines'] = engines.keys() + global categories + kwargs['categories'] = categories.keys() + if not 'selected_categories' in kwargs: + kwargs['selected_categories'] = ['general'] return render_template(template_name, **kwargs) @app.route('/', methods=['GET', 'POST']) def index(): + global categories if request.method=='POST': if not request.form.get('q'): flash('Wrong post data') return render('index.html') selected_engines = [] + selected_categories = [] for pd_name,pd in request.form.items(): - if pd_name.startswith('engine_'): - selected_engines.append(pd_name[7:]) + if pd_name.startswith('category_'): + category = pd_name[9:] + if not category in categories: + continue + selected_categories.append(category) + selected_engines.extend(x.name for x in categories[category]) if not len(selected_engines): - selected_engines = engines.keys() + selected_engines = [x.name for x in categories['general']] query = request.form['q'].encode('utf-8') results = search(query, request, selected_engines) if request.form.get('format') == 'json': # TODO HTTP headers return json.dumps({'query': query, 'results': results}) - return render('results.html', results=results, q=query.decode('utf-8')) + return render('results.html', results=results, q=query.decode('utf-8'), selected_categories=selected_categories) return render('index.html') @app.route('/favicon.ico', methods=['GET']) |