summaryrefslogtreecommitdiff
path: root/searx/webapp.py
diff options
context:
space:
mode:
authorThomas Pointhuber <thomas.pointhuber@gmx.at>2015-01-09 21:25:13 +0100
committerThomas Pointhuber <thomas.pointhuber@gmx.at>2015-01-09 21:30:09 +0100
commit400b54191c590663f0cfe91045f70a5d9223aa19 (patch)
tree08c71466ac8fbaf69872f114847baec762f5bd81 /searx/webapp.py
parentaf8dac93a8acff5042b7b399c38e348f0bdc32ad (diff)
parentc8be128e97479ea6c871c4b6fbf014fa8136e708 (diff)
Merge branch 'master' of https://github.com/asciimoo/searx into code_results
Conflicts: searx/engines/searchcode_code.py searx/engines/searchcode_doc.py searx/static/oscar/js/searx.min.js searx/templates/oscar/result_templates/default.html searx/templates/oscar/result_templates/images.html searx/templates/oscar/result_templates/map.html searx/templates/oscar/result_templates/torrent.html searx/templates/oscar/result_templates/videos.html
Diffstat (limited to 'searx/webapp.py')
-rw-r--r--searx/webapp.py45
1 files changed, 33 insertions, 12 deletions
diff --git a/searx/webapp.py b/searx/webapp.py
index ab1e2747f..f07a20eac 100644
--- a/searx/webapp.py
+++ b/searx/webapp.py
@@ -41,7 +41,8 @@ from searx.engines import (
categories, engines, get_engines_stats, engine_shortcuts
)
from searx.utils import (
- UnicodeWriter, highlight_content, html_to_text, get_themes
+ UnicodeWriter, highlight_content, html_to_text, get_themes,
+ get_static_files, get_result_templates
)
from searx.version import VERSION_STRING
from searx.languages import language_codes
@@ -49,8 +50,11 @@ from searx.https_rewrite import https_url_rewrite
from searx.search import Search
from searx.query import Query
from searx.autocomplete import backends as autocomplete_backends
+from searx import logger
+logger = logger.getChild('webapp')
+
static_path, templates_path, themes =\
get_themes(settings['themes_path']
if settings.get('themes_path')
@@ -58,6 +62,10 @@ static_path, templates_path, themes =\
default_theme = settings['server'].get('default_theme', 'default')
+static_files = get_static_files(searx_dir)
+
+result_templates = get_result_templates(searx_dir)
+
app = Flask(
__name__,
static_folder=static_path,
@@ -66,11 +74,16 @@ app = Flask(
app.secret_key = settings['server']['secret_key']
+app.logger.addHandler(logger)
+
babel = Babel(app)
-#TODO configurable via settings.yml
-favicons = ['wikipedia', 'youtube', 'vimeo', 'dailymotion', 'soundcloud',
- 'twitter', 'stackoverflow', 'github', 'deviantart', 'kickass']
+global_favicons = []
+for indice, theme in enumerate(themes):
+ global_favicons.append([])
+ theme_img_path = searx_dir+"/static/themes/"+theme+"/img/icons/"
+ for (dirpath, dirnames, filenames) in os.walk(theme_img_path):
+ global_favicons[indice].extend(filenames)
cookie_max_age = 60 * 60 * 24 * 365 * 23 # 23 years
@@ -170,10 +183,19 @@ def get_current_theme_name(override=None):
return theme_name
+def get_result_template(theme, template_name):
+ themed_path = theme + '/result_templates/' + template_name
+ if themed_path in result_templates:
+ return themed_path
+ return 'result_templates/' + template_name
+
+
def url_for_theme(endpoint, override_theme=None, **values):
- if endpoint == 'static' and values.get('filename', None):
+ if endpoint == 'static' and values.get('filename'):
theme_name = get_current_theme_name(override=override_theme)
- values['filename'] = "{}/{}".format(theme_name, values['filename'])
+ filename_with_theme = "themes/{}/{}".format(theme_name, values['filename'])
+ if filename_with_theme in static_files:
+ values['filename'] = filename_with_theme
return url_for(endpoint, **values)
@@ -223,6 +245,8 @@ def render(template_name, override_theme=None, **kwargs):
# override url_for function in templates
kwargs['url_for'] = url_for_theme
+ kwargs['get_result_template'] = get_result_template
+
kwargs['theme'] = get_current_theme_name(override=override_theme)
kwargs['template_name'] = template_name
@@ -284,10 +308,6 @@ def index():
else:
result['pretty_url'] = result['url']
- for engine in result['engines']:
- if engine in favicons:
- result['favicon'] = engine
-
# TODO, check if timezone is calculated right
if 'publishedDate' in result:
result['pubdate'] = result['publishedDate'].strftime('%Y-%m-%d %H:%M:%S%z')
@@ -340,7 +360,8 @@ def index():
suggestions=search.suggestions,
answers=search.answers,
infoboxes=search.infoboxes,
- theme=get_current_theme_name()
+ theme=get_current_theme_name(),
+ favicons=global_favicons[themes.index(get_current_theme_name())]
)
@@ -541,7 +562,7 @@ def opensearch():
@app.route('/favicon.ico')
def favicon():
return send_from_directory(os.path.join(app.root_path,
- 'static',
+ 'static/themes',
get_current_theme_name(),
'img'),
'favicon.png',