浏览代码

[enh] storing search categories in cookies

asciimoo 11 年前
父节点
当前提交
9bc6865ddc
共有 1 个文件被更改,包括 17 次插入4 次删除
  1. 17
    4
      searx/webapp.py

+ 17
- 4
searx/webapp.py 查看文件

@@ -22,7 +22,7 @@ if __name__ == "__main__":
22 22
     from os.path import realpath, dirname
23 23
     path.append(realpath(dirname(realpath(__file__))+'/../'))
24 24
 
25
-from flask import Flask, request, flash, render_template, url_for, Response
25
+from flask import Flask, request, flash, render_template, url_for, Response, make_response
26 26
 import ConfigParser
27 27
 from os import getenv
28 28
 from searx.engines import search, categories
@@ -54,7 +54,13 @@ def render(template_name, **kwargs):
54 54
     global categories
55 55
     kwargs['categories'] = categories.keys()
56 56
     if not 'selected_categories' in kwargs:
57
-        kwargs['selected_categories'] = ['general']
57
+        kwargs['selected_categories'] = []
58
+        cookie_categories = request.cookies.get('categories', '').split(',')
59
+        for ccateg in cookie_categories:
60
+            if ccateg in categories:
61
+                kwargs['selected_categories'].append(ccateg)
62
+        if not len(kwargs['selected_categories']):
63
+            kwargs['selected_categories'] = ['general']
58 64
     return render_template(template_name, **kwargs)
59 65
 
60 66
 @app.route('/', methods=['GET', 'POST'])
@@ -74,13 +80,20 @@ def index():
74 80
                 selected_categories.append(category)
75 81
                 selected_engines.extend(x.name for x in categories[category])
76 82
         if not len(selected_engines):
77
-            selected_engines = [x.name for x in categories['general']]
83
+            cookie_categories = request.cookies.get('categories', '').split(',')
84
+            for ccateg in cookie_categories:
85
+                if ccateg in categories:
86
+                    selected_categories.append(ccateg)
87
+                    selected_engines.extend(x.name for x in categories[ccateg])
78 88
         query = request.form['q'].encode('utf-8')
79 89
         results = search(query, request, selected_engines)
80 90
         if request.form.get('format') == 'json':
81 91
             # TODO HTTP headers
82 92
             return json.dumps({'query': query, 'results': results})
83
-        return render('results.html', results=results, q=query.decode('utf-8'), selected_categories=selected_categories)
93
+        template = render('results.html', results=results, q=query.decode('utf-8'), selected_categories=selected_categories)
94
+        resp = make_response(template)
95
+        resp.set_cookie('categories', ','.join(selected_categories))
96
+        return resp
84 97
     return render('index.html')
85 98
 
86 99
 @app.route('/favicon.ico', methods=['GET'])