- Add semantic_search setting to toggle AI-powered search on/off - Skip embedding generation, hybrid search, and model preloading when disabled - Use site owner's meta description as snippet instead of heuristic extraction - Remove _generate_summary() and snippet() - no more generated snippets - Show reranker/reindex controls grayed out when semantic search is off - AI dependencies (onnxruntime, hnswlib, etc.) are now fully optional
32 lines
959 B
Python
32 lines
959 B
Python
import html
|
|
from db import get_setting
|
|
|
|
|
|
def esc(s):
|
|
return html.escape(str(s))
|
|
|
|
|
|
|
|
DEFAULT_TEMPLATE = "<html>\n<head>\n</head>\n<body>\n{{content}}\n</body>\n</html>"
|
|
|
|
|
|
def _default_template():
|
|
name = esc(get_setting("site_name", "tinyweb"))
|
|
return (
|
|
"<html>\n<head>\n</head>\n<body>\n"
|
|
f'<p><b><a href="/">{name}</a></b>'
|
|
' | <a href="/">search</a> | <a href="/pages">browse</a>'
|
|
' | <a href="/tags">tags</a> | <a href="/subscriptions">subscriptions</a>'
|
|
' | <a href="/style">customize</a> | <a href="/about">about</a></p>\n'
|
|
"<hr>\n{{content}}\n</body>\n</html>"
|
|
)
|
|
|
|
|
|
def wrap_page(body_html, use_default=False):
|
|
if use_default:
|
|
template = _default_template()
|
|
else:
|
|
template = get_setting("custom_template") or _default_template()
|
|
if "{{content}}" not in template:
|
|
template = _default_template()
|
|
return template.replace("{{content}}", body_html)
|