Browse Source

[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>
Markus Heiser 3 years ago
parent
commit
3e50e8de3e
5 changed files with 68 additions and 32 deletions
  1. 24 17
      docs/conf.py
  2. 21 0
      searx/__init__.py
  3. 4 4
      setup.py
  4. 18 10
      utils/build_env.py
  5. 1 1
      utils/templates/etc/searx/use_default_settings.yml

+ 24 - 17
docs/conf.py

@@ -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['patch'] = (brand.GIT_URL + '/commit/%s', '#')
-extlinks['search'] = (brand.SEARX_URL + '/%s', '#')
-extlinks['docs'] = (brand.DOCS_URL + '/%s', 'docs: ')
+extlinks['origin'] = (GIT_URL + '/blob/' + GIT_BRANCH + '/%s', 'git://')
+extlinks['patch'] = (GIT_URL + '/commit/%s', '#')
+extlinks['search'] = (SEARX_URL + '/%s', '#')
+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", brand.GIT_URL))
-if brand.WIKI_URL:
-    html_context["project_links"].append(ProjectLink("Wiki", brand.WIKI_URL))
-if brand.PUBLIC_INSTANCES:
-    html_context["project_links"].append(ProjectLink("Public instances", brand.PUBLIC_INSTANCES))
-if brand.TWITTER_URL:
-    html_context["project_links"].append(ProjectLink("Twitter", brand.TWITTER_URL))
-if brand.ISSUE_URL:
-    html_context["project_links"].append(ProjectLink("Issue Tracker", brand.ISSUE_URL))
-if brand.CONTACT_URL:
-    html_context["project_links"].append(ProjectLink("Contact", brand.CONTACT_URL))
+html_context["project_links"].append(ProjectLink("Source", GIT_URL + '/tree/' + GIT_BRANCH))
+
+if WIKI_URL:
+    html_context["project_links"].append(ProjectLink("Wiki", WIKI_URL))
+if PUBLIC_INSTANCES:
+    html_context["project_links"].append(ProjectLink("Public instances", PUBLIC_INSTANCES))
+if ISSUE_URL:
+    html_context["project_links"].append(ProjectLink("Issue Tracker", ISSUE_URL))
+if CONTACT_URL:
+    html_context["project_links"].append(ProjectLink("Contact", CONTACT_URL))
 
 
 html_sidebars = {
 html_sidebars = {
     "**": ["project.html", "relations.html", "searchbox.html"],
     "**": ["project.html", "relations.html", "searchbox.html"],

+ 21 - 0
searx/__init__.py

@@ -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
 
 

+ 4 - 4
setup.py

@@ -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,
-        "Issue tracker": brand.ISSUE_URL
+        "Code": get_setting('brand.git_url'),
+        "Issue tracker": get_setting('brand.issue_url')
     },
     },
     classifiers=[
     classifiers=[
         "Development Status :: 4 - Beta",
         "Development Status :: 4 - Beta",

+ 18 - 10
utils/build_env.py

@@ -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),
-    ('GIT_URL'                , brand.GIT_URL),
-    ('GIT_BRANCH'             , brand.GIT_BRANCH),
-    ('ISSUE_URL'              , brand.ISSUE_URL),
-    ('DOCS_URL'               , brand.DOCS_URL),
-    ('PUBLIC_INSTANCES'       , brand.PUBLIC_INSTANCES),
-    ('CONTACT_URL'            , brand.CONTACT_URL),
-    ('WIKI_URL'               , brand.WIKI_URL),
-    ('TWITTER_URL'            , brand.TWITTER_URL),
+    ('SEARX_URL'              , _env('server.base_url','')),
+    ('GIT_URL'                , _env('brand.git_url', '')),
+    ('GIT_BRANCH'             , _env('brand.git_branch', '')),
+    ('ISSUE_URL'              , _env('brand.issue_url', '')),
+    ('DOCS_URL'               , _env('brand.docs_url', '')),
+    ('PUBLIC_INSTANCES'       , _env('brand.public_instances', '')),
+    ('CONTACT_URL'            , _env('general.contact_url', '')),
+    ('WIKI_URL'               , _env('brand.wiki_url', '')),
+    ('TWITTER_URL'            , _env('brand.twitter_url', '')),
 ]
 ]
 
 
 brand_env = 'utils' + sep + 'brand.env'
 brand_env = 'utils' + sep + 'brand.env'

+ 1 - 1
utils/templates/etc/searx/use_default_settings.yml

@@ -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