on master help sign in
[enh] better result template handling
commit2f9a386c0db884ffbea27f43bdcff5bfd1876ad1 authorAdam Tauber <asciimoo@gmail.com> dateThu 1 Jan 2015, 18:59 (12 years ago) parent20c4de8
5 files changed+34−6
searx/templates/courgette/results.html+1−1 searx/templates/default/results.html+1−1 searx/templates/oscar/results.html+5−1 searx/utils.py+15−2 searx/webapp.py+12−1
searx/templates/courgette/results.html+1−1
@@ -43,7 +43,7 @@
4343
4444 {% for result in results %}
4545 {% if result['template'] %}
46− {% include 'courgette/result_templates/'+result['template'] %}
46+ {% include get_result_template('courgette', result['template']) %}
4747 {% else %}
4848 {% include 'courgette/result_templates/default.html' %}
4949 {% endif %}
searx/templates/default/results.html+1−1
@@ -59,7 +59,7 @@
5959
6060 {% for result in results %}
6161 {% if result['template'] %}
62− {% include 'default/result_templates/'+result['template'] %}
62+ {% include get_result_template('default', result['template']) %}
6363 {% else %}
6464 {% include 'default/result_templates/default.html' %}
6565 {% endif %}
searx/templates/oscar/results.html+5−1
@@ -17,7 +17,11 @@
1717 {% for result in results %}
1818 <div class="result {% if result['template'] %}result-{{ result.template|replace('.html', '') }}{% else %}result-default{% endif %}">
1919 {% set index = loop.index %}
20− {% if result.template %}{% include 'oscar/result_templates/'+result['template'] %}{% else %}{% include 'oscar/result_templates/default.html' %}{% endif %}
20+ {% if result.template %}
21+ {% include get_result_template('oscar', result['template']) %}
22+ {% else %}
23+ {% include 'oscar/result_templates/default.html' %}
24+ {% endif %}
2125 </div>
2226 {% endfor %}
2327
searx/utils.py+15−2
@@ -161,10 +161,23 @@ def get_themes(root):
161161
162162
163163def get_static_files(base_path):
164+ base_path = os.path.join(base_path, 'static')
164165 static_files = set()
165− base_path_length = len(base_path+'/static') + 1
166− for directory, _, files in os.walk(os.path.join(base_path, 'static')):
166+ base_path_length = len(base_path) + 1
167+ for directory, _, files in os.walk(base_path):
167168 for filename in files:
168169 f = os.path.join(directory[base_path_length:], filename)
169170 static_files.add(f)
170171 return static_files
172+
173+
174+def get_result_templates(base_path):
175+ base_path = os.path.join(base_path, 'templates')
176+ result_templates = set()
177+ base_path_length = len(base_path) + 1
178+ for directory, _, files in os.walk(base_path):
179+ if directory.endswith('result_templates'):
180+ for filename in files:
181+ f = os.path.join(directory[base_path_length:], filename)
182+ result_templates.add(f)
183+ return result_templates
searx/webapp.py+12−1
@@ -39,7 +39,7 @@ from searx.engines import (
3939)
4040from searx.utils import (
4141 UnicodeWriter, highlight_content, html_to_text, get_themes,
42− get_static_files
42+ get_static_files, get_result_templates
4343)
4444from searx.version import VERSION_STRING
4545from searx.languages import language_codes
@@ -58,6 +58,8 @@ default_theme = settings['server'].get('default_theme', 'default')
5858
5959static_files = get_static_files(searx_dir)
6060
61+result_templates = get_result_templates(searx_dir)
62+
6163app = Flask(
6264 __name__,
6365 static_folder=static_path,
@@ -125,6 +127,13 @@ def get_current_theme_name(override=None):
125127 return theme_name
126128
127129
130+def get_result_template(theme, template_name):
131+ themed_path = theme + '/result_templates/' + template_name
132+ if themed_path in result_templates:
133+ return themed_path
134+ return 'result_templates/' + template_name
135+
136+
128137def url_for_theme(endpoint, override_theme=None, **values):
129138 if endpoint == 'static' and values.get('filename'):
130139 theme_name = get_current_theme_name(override=override_theme)
@@ -180,6 +189,8 @@ def render(template_name, override_theme=None, **kwargs):
180189 # override url_for function in templates
181190 kwargs['url_for'] = url_for_theme
182191
192+ kwargs['get_result_template'] = get_result_template
193+
183194 kwargs['theme'] = get_current_theme_name(override=override_theme)
184195
185196 kwargs['template_name'] = template_name