浏览代码

[enh] storing search categories in cookies

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

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

22
     from os.path import realpath, dirname
22
     from os.path import realpath, dirname
23
     path.append(realpath(dirname(realpath(__file__))+'/../'))
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
 import ConfigParser
26
 import ConfigParser
27
 from os import getenv
27
 from os import getenv
28
 from searx.engines import search, categories
28
 from searx.engines import search, categories
54
     global categories
54
     global categories
55
     kwargs['categories'] = categories.keys()
55
     kwargs['categories'] = categories.keys()
56
     if not 'selected_categories' in kwargs:
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
     return render_template(template_name, **kwargs)
64
     return render_template(template_name, **kwargs)
59
 
65
 
60
 @app.route('/', methods=['GET', 'POST'])
66
 @app.route('/', methods=['GET', 'POST'])
74
                 selected_categories.append(category)
80
                 selected_categories.append(category)
75
                 selected_engines.extend(x.name for x in categories[category])
81
                 selected_engines.extend(x.name for x in categories[category])
76
         if not len(selected_engines):
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
         query = request.form['q'].encode('utf-8')
88
         query = request.form['q'].encode('utf-8')
79
         results = search(query, request, selected_engines)
89
         results = search(query, request, selected_engines)
80
         if request.form.get('format') == 'json':
90
         if request.form.get('format') == 'json':
81
             # TODO HTTP headers
91
             # TODO HTTP headers
82
             return json.dumps({'query': query, 'results': results})
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
     return render('index.html')
97
     return render('index.html')
85
 
98
 
86
 @app.route('/favicon.ico', methods=['GET'])
99
 @app.route('/favicon.ico', methods=['GET'])