summaryrefslogtreecommitdiff
path: root/searx/webapp.py
diff options
context:
space:
mode:
authorasciimoo <asciimoo@gmail.com>2013-10-17 21:06:28 +0200
committerasciimoo <asciimoo@gmail.com>2013-10-17 21:06:28 +0200
commitf76d80de543996f9a90eaf46e226354ad4681731 (patch)
tree1bc3f1df732b38ed56725c9dff9b14d15600c719 /searx/webapp.py
parent1aff439931e134a7f01bf1fdfb9f4af3e81a990c (diff)
[enh] category support
Diffstat (limited to 'searx/webapp.py')
-rw-r--r--searx/webapp.py21
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'])