|  | 
 |  | 
 | 
												
													
														| 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'])
 |