mirror of https://github.com/searxng/searxng.git
[enh] better result template handling
This commit is contained in:
parent
20c4de8f06
commit
2f9a386c0d
|
@ -43,7 +43,7 @@
|
||||||
|
|
||||||
{% for result in results %}
|
{% for result in results %}
|
||||||
{% if result['template'] %}
|
{% if result['template'] %}
|
||||||
{% include 'courgette/result_templates/'+result['template'] %}
|
{% include get_result_template('courgette', result['template']) %}
|
||||||
{% else %}
|
{% else %}
|
||||||
{% include 'courgette/result_templates/default.html' %}
|
{% include 'courgette/result_templates/default.html' %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
|
@ -59,7 +59,7 @@
|
||||||
|
|
||||||
{% for result in results %}
|
{% for result in results %}
|
||||||
{% if result['template'] %}
|
{% if result['template'] %}
|
||||||
{% include 'default/result_templates/'+result['template'] %}
|
{% include get_result_template('default', result['template']) %}
|
||||||
{% else %}
|
{% else %}
|
||||||
{% include 'default/result_templates/default.html' %}
|
{% include 'default/result_templates/default.html' %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
|
@ -17,7 +17,11 @@
|
||||||
{% for result in results %}
|
{% for result in results %}
|
||||||
<div class="result {% if result['template'] %}result-{{ result.template|replace('.html', '') }}{% else %}result-default{% endif %}">
|
<div class="result {% if result['template'] %}result-{{ result.template|replace('.html', '') }}{% else %}result-default{% endif %}">
|
||||||
{% set index = loop.index %}
|
{% set index = loop.index %}
|
||||||
{% if result.template %}{% include 'oscar/result_templates/'+result['template'] %}{% else %}{% include 'oscar/result_templates/default.html' %}{% endif %}
|
{% if result.template %}
|
||||||
|
{% include get_result_template('oscar', result['template']) %}
|
||||||
|
{% else %}
|
||||||
|
{% include 'oscar/result_templates/default.html' %}
|
||||||
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
||||||
|
|
|
@ -161,10 +161,23 @@ def get_themes(root):
|
||||||
|
|
||||||
|
|
||||||
def get_static_files(base_path):
|
def get_static_files(base_path):
|
||||||
|
base_path = os.path.join(base_path, 'static')
|
||||||
static_files = set()
|
static_files = set()
|
||||||
base_path_length = len(base_path+'/static') + 1
|
base_path_length = len(base_path) + 1
|
||||||
for directory, _, files in os.walk(os.path.join(base_path, 'static')):
|
for directory, _, files in os.walk(base_path):
|
||||||
for filename in files:
|
for filename in files:
|
||||||
f = os.path.join(directory[base_path_length:], filename)
|
f = os.path.join(directory[base_path_length:], filename)
|
||||||
static_files.add(f)
|
static_files.add(f)
|
||||||
return static_files
|
return static_files
|
||||||
|
|
||||||
|
|
||||||
|
def get_result_templates(base_path):
|
||||||
|
base_path = os.path.join(base_path, 'templates')
|
||||||
|
result_templates = set()
|
||||||
|
base_path_length = len(base_path) + 1
|
||||||
|
for directory, _, files in os.walk(base_path):
|
||||||
|
if directory.endswith('result_templates'):
|
||||||
|
for filename in files:
|
||||||
|
f = os.path.join(directory[base_path_length:], filename)
|
||||||
|
result_templates.add(f)
|
||||||
|
return result_templates
|
||||||
|
|
|
@ -39,7 +39,7 @@ from searx.engines import (
|
||||||
)
|
)
|
||||||
from searx.utils import (
|
from searx.utils import (
|
||||||
UnicodeWriter, highlight_content, html_to_text, get_themes,
|
UnicodeWriter, highlight_content, html_to_text, get_themes,
|
||||||
get_static_files
|
get_static_files, get_result_templates
|
||||||
)
|
)
|
||||||
from searx.version import VERSION_STRING
|
from searx.version import VERSION_STRING
|
||||||
from searx.languages import language_codes
|
from searx.languages import language_codes
|
||||||
|
@ -58,6 +58,8 @@ default_theme = settings['server'].get('default_theme', 'default')
|
||||||
|
|
||||||
static_files = get_static_files(searx_dir)
|
static_files = get_static_files(searx_dir)
|
||||||
|
|
||||||
|
result_templates = get_result_templates(searx_dir)
|
||||||
|
|
||||||
app = Flask(
|
app = Flask(
|
||||||
__name__,
|
__name__,
|
||||||
static_folder=static_path,
|
static_folder=static_path,
|
||||||
|
@ -125,6 +127,13 @@ def get_current_theme_name(override=None):
|
||||||
return theme_name
|
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):
|
def url_for_theme(endpoint, override_theme=None, **values):
|
||||||
if endpoint == 'static' and values.get('filename'):
|
if endpoint == 'static' and values.get('filename'):
|
||||||
theme_name = get_current_theme_name(override=override_theme)
|
theme_name = get_current_theme_name(override=override_theme)
|
||||||
|
@ -180,6 +189,8 @@ def render(template_name, override_theme=None, **kwargs):
|
||||||
# override url_for function in templates
|
# override url_for function in templates
|
||||||
kwargs['url_for'] = url_for_theme
|
kwargs['url_for'] = url_for_theme
|
||||||
|
|
||||||
|
kwargs['get_result_template'] = get_result_template
|
||||||
|
|
||||||
kwargs['theme'] = get_current_theme_name(override=override_theme)
|
kwargs['theme'] = get_current_theme_name(override=override_theme)
|
||||||
|
|
||||||
kwargs['template_name'] = template_name
|
kwargs['template_name'] = template_name
|
||||||
|
|
Loading…
Reference in New Issue