[mod] drop usage of the searx.brand namespace (python procs)

Added function searx.get_setting(name, default=_unset):
  Returns the value to which ``name`` point.  If there is no such name in the
  settings and the ``default`` is unset, a KeyError exception is raised.

In all the python processes ..

- make docs
- make buildenv
- make install (setup.py)

the usage of the 'brand.*' name space is replaced by 'searx.get_setting'
function.

- brand.SEARX_URL        --> get_setting('server.base_url')
- brand.GIT_URL          --> get_setting('brand.git_url')
- brand.GIT_BRANCH'      --> get_setting('server.base_url')
- brand.ISSUE_URL        --> get_setting('brand.issue_url')
- brand.DOCS_URL         --> get_setting('brand.docs_url')
- brand.PUBLIC_INSTANCES --> get_setting('brand.public_instances')
- brand.CONTACT_URL      --> get_setting('general.contact_url', '')
- brand.WIKI_URL         --> get_setting('brand.wiki_url')
- brand.TWITTER_URL      --> get_setting('brand.twitter_url', '')

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
This commit is contained in:
Markus Heiser 2021-07-17 19:03:54 +02:00
parent 197fa188c0
commit 3e50e8de3e
5 changed files with 68 additions and 32 deletions

View File

@ -4,7 +4,7 @@
import sys, os import sys, os
from pallets_sphinx_themes import ProjectLink from pallets_sphinx_themes import ProjectLink
from searx import brand from searx import get_setting
from searx.version import VERSION_STRING from searx.version import VERSION_STRING
# Project -------------------------------------------------------------- # Project --------------------------------------------------------------
@ -14,6 +14,15 @@ copyright = u'2015-2020, Adam Tauber, Noémi Ványi'
author = u'Adam Tauber' author = u'Adam Tauber'
release, version = VERSION_STRING, VERSION_STRING release, version = VERSION_STRING, VERSION_STRING
SEARX_URL = get_setting('server.base_url') or 'https://example.org/searx'
GIT_URL = get_setting('brand.git_url')
GIT_BRANCH = get_setting('brand.git_branch')
ISSUE_URL = get_setting('brand.issue_url')
DOCS_URL = get_setting('brand.docs_url')
PUBLIC_INSTANCES = get_setting('brand.public_instances')
CONTACT_URL = get_setting('general.contact_url')
WIKI_URL = get_setting('brand.wiki_url')
# hint: sphinx.ext.viewcode won't highlight when 'highlight_language' [1] is set # hint: sphinx.ext.viewcode won't highlight when 'highlight_language' [1] is set
# to string 'none' [2] # to string 'none' [2]
# #
@ -49,10 +58,10 @@ extlinks['pull'] = ('https://github.com/searxng/searxng/pull/%s', 'PR ')
extlinks['pull-searx'] = ('https://github.com/searx/searx/pull/%s', 'PR ') extlinks['pull-searx'] = ('https://github.com/searx/searx/pull/%s', 'PR ')
# links to custom brand # links to custom brand
extlinks['origin'] = (brand.GIT_URL + '/blob/' + brand.GIT_BRANCH + '/%s', 'git://') extlinks['origin'] = (GIT_URL + '/blob/' + GIT_BRANCH + '/%s', 'git://')
extlinks['patch'] = (brand.GIT_URL + '/commit/%s', '#') extlinks['patch'] = (GIT_URL + '/commit/%s', '#')
extlinks['search'] = (brand.SEARX_URL + '/%s', '#') extlinks['search'] = (SEARX_URL + '/%s', '#')
extlinks['docs'] = (brand.DOCS_URL + '/%s', 'docs: ') extlinks['docs'] = (DOCS_URL + '/%s', 'docs: ')
extlinks['pypi'] = ('https://pypi.org/project/%s', 'PyPi: ') extlinks['pypi'] = ('https://pypi.org/project/%s', 'PyPi: ')
extlinks['man'] = ('https://manpages.debian.org/jump?q=%s', '') extlinks['man'] = ('https://manpages.debian.org/jump?q=%s', '')
#extlinks['role'] = ( #extlinks['role'] = (
@ -108,18 +117,16 @@ imgmath_font_size = 14
html_theme_options = {"index_sidebar_logo": True} html_theme_options = {"index_sidebar_logo": True}
html_context = {"project_links": [] } html_context = {"project_links": [] }
if brand.GIT_URL: html_context["project_links"].append(ProjectLink("Source", GIT_URL + '/tree/' + GIT_BRANCH))
html_context["project_links"].append(ProjectLink("Source", brand.GIT_URL))
if brand.WIKI_URL: if WIKI_URL:
html_context["project_links"].append(ProjectLink("Wiki", brand.WIKI_URL)) html_context["project_links"].append(ProjectLink("Wiki", WIKI_URL))
if brand.PUBLIC_INSTANCES: if PUBLIC_INSTANCES:
html_context["project_links"].append(ProjectLink("Public instances", brand.PUBLIC_INSTANCES)) html_context["project_links"].append(ProjectLink("Public instances", PUBLIC_INSTANCES))
if brand.TWITTER_URL: if ISSUE_URL:
html_context["project_links"].append(ProjectLink("Twitter", brand.TWITTER_URL)) html_context["project_links"].append(ProjectLink("Issue Tracker", ISSUE_URL))
if brand.ISSUE_URL: if CONTACT_URL:
html_context["project_links"].append(ProjectLink("Issue Tracker", brand.ISSUE_URL)) html_context["project_links"].append(ProjectLink("Contact", CONTACT_URL))
if brand.CONTACT_URL:
html_context["project_links"].append(ProjectLink("Contact", brand.CONTACT_URL))
html_sidebars = { html_sidebars = {
"**": ["project.html", "relations.html", "searchbox.html"], "**": ["project.html", "relations.html", "searchbox.html"],

View File

@ -32,6 +32,27 @@ if max_request_timeout is None:
else: else:
logger.info('max_request_timeout=%i second(s)', max_request_timeout) logger.info('max_request_timeout=%i second(s)', max_request_timeout)
_unset = object()
def get_setting(name, default=_unset):
"""Returns the value to which ``name`` point. If there is no such name in the
settings and the ``default`` is unset, a :py:obj:`KeyError` is raised.
"""
value = settings
for a in name.split('.'):
if isinstance(value, dict):
value = value.get(a, _unset)
else:
value = _unset
if value is _unset:
if default is _unset:
raise KeyError(name)
value = default
break
return value
class _brand_namespace: # pylint: disable=invalid-name class _brand_namespace: # pylint: disable=invalid-name

View File

@ -8,7 +8,7 @@ import os
import sys import sys
from searx.version import VERSION_STRING from searx.version import VERSION_STRING
from searx import brand from searx import get_setting
with open('README.rst', encoding='utf-8') as f: with open('README.rst', encoding='utf-8') as f:
long_description = f.read() long_description = f.read()
@ -24,10 +24,10 @@ setup(
version=VERSION_STRING, version=VERSION_STRING,
description="A privacy-respecting, hackable metasearch engine", description="A privacy-respecting, hackable metasearch engine",
long_description=long_description, long_description=long_description,
url=brand.DOCS_URL, url=get_setting('brand.docs_url'),
project_urls={ project_urls={
"Code": brand.GIT_URL, "Code": get_setting('brand.git_url'),
"Issue tracker": brand.ISSUE_URL "Issue tracker": get_setting('brand.issue_url')
}, },
classifiers=[ classifiers=[
"Development Status :: 4 - Beta", "Development Status :: 4 - Beta",

View File

@ -16,18 +16,26 @@ os.environ['SEARX_SETTINGS_PATH'] = abspath(dirname(__file__) + '/settings.yml')
# from /etc/searx/settings.yml. # from /etc/searx/settings.yml.
os.environ['SEARX_SETTINGS_PATH'] = abspath(dirname(__file__) + sep + 'settings.yml') os.environ['SEARX_SETTINGS_PATH'] = abspath(dirname(__file__) + sep + 'settings.yml')
from searx import brand from searx import get_setting
def _env(*arg, **kwargs):
val = get_setting(*arg, **kwargs)
if val is True:
val = '1'
elif val is False:
val = ''
return val
name_val = [ name_val = [
('SEARX_URL' , brand.SEARX_URL), ('SEARX_URL' , _env('server.base_url','')),
('GIT_URL' , brand.GIT_URL), ('GIT_URL' , _env('brand.git_url', '')),
('GIT_BRANCH' , brand.GIT_BRANCH), ('GIT_BRANCH' , _env('brand.git_branch', '')),
('ISSUE_URL' , brand.ISSUE_URL), ('ISSUE_URL' , _env('brand.issue_url', '')),
('DOCS_URL' , brand.DOCS_URL), ('DOCS_URL' , _env('brand.docs_url', '')),
('PUBLIC_INSTANCES' , brand.PUBLIC_INSTANCES), ('PUBLIC_INSTANCES' , _env('brand.public_instances', '')),
('CONTACT_URL' , brand.CONTACT_URL), ('CONTACT_URL' , _env('general.contact_url', '')),
('WIKI_URL' , brand.WIKI_URL), ('WIKI_URL' , _env('brand.wiki_url', '')),
('TWITTER_URL' , brand.TWITTER_URL), ('TWITTER_URL' , _env('brand.twitter_url', '')),
] ]
brand_env = 'utils' + sep + 'brand.env' brand_env = 'utils' + sep + 'brand.env'

View File

@ -25,7 +25,7 @@ server:
secret_key: "ultrasecretkey" # change this! secret_key: "ultrasecretkey" # change this!
# Set custom base_url. Possible values: # Set custom base_url. Possible values:
# false or "https://your.custom.host/location/" # false or "https://your.custom.host/location/"
base_url: https://darmarit.org/searx # base_url: https://example.org/searx
# Proxying image results through searx # Proxying image results through searx
image_proxy: false image_proxy: false