about summary refs log tree commit diff
diff options
context:
space:
mode:
authorFrederick Muriuki Muriithi2026-01-07 14:59:26 -0600
committerFrederick Muriuki Muriithi2026-01-07 14:59:26 -0600
commit873647fc7ecb2f50e228829e3bf8b407e11b58bb (patch)
treec0a5be0990b0a5fdb66607ca461127cea9f45896
parent227dfc8e8f68bf0f79a67feed46ce5dbce31b88e (diff)
downloadgn-uploader-873647fc7ecb2f50e228829e3bf8b407e11b58bb.tar.gz
Extend flask's `render_template` function.
-rw-r--r--uploader/flask_extensions.py40
-rw-r--r--uploader/templates/base.html13
2 files changed, 42 insertions, 11 deletions
diff --git a/uploader/flask_extensions.py b/uploader/flask_extensions.py
index 30fbad7..83d25aa 100644
--- a/uploader/flask_extensions.py
+++ b/uploader/flask_extensions.py
@@ -2,19 +2,16 @@
 import logging
 from typing import Any, Optional
 
-from flask import (request, current_app as app, url_for as flask_url_for)
+from flask import (
+    request,
+    current_app as app,
+    url_for as flask_url_for,
+    render_template as flask_render_template)
 
 logger = logging.getLogger(__name__)
 
 
-def url_for(
-        endpoint: str,
-        _anchor: Optional[str] = None,
-        _method: Optional[str] = None,
-        _scheme: Optional[str] = None,
-        _external: Optional[bool] = None,
-        **values: Any) -> str:
-    """Extension to flask's `url_for` function."""
+def __fetch_flags__():
     flags = {}
     for flag in app.config["FEATURE_FLAGS_HTTP"]:
         flag_value = (request.args.get(flag) or request.form.get(flag) or "").strip()
@@ -22,12 +19,33 @@ def url_for(
             flags[flag] = flag_value
             continue
         continue
+    logger.debug("HTTP FEATURE FLAGS: %s", flags)
+    return flags
 
-    logger.debug("HTTP FEATURE FLAGS: %s, other variables: %s", flags, values)
+
+def url_for(
+        endpoint: str,
+        _anchor: Optional[str] = None,
+        _method: Optional[str] = None,
+        _scheme: Optional[str] = None,
+        _external: Optional[bool] = None,
+        **values: Any) -> str:
+    """Extension to flask's `url_for` function."""
+    logger.debug("other variables: %s", values)
     return flask_url_for(endpoint=endpoint,
                          _anchor=_anchor,
                          _method=_method,
                          _scheme=_scheme,
                          _external=_external,
                          **values,
-                         **flags)
+                         **__fetch_flags__())
+
+
+def render_template(template_name_or_list, **context: Any) -> str:
+    """Extend flask's `render_template` function"""
+    return flask_render_template(
+        template_name_or_list,
+        **{
+            **context,
+            **__fetch_flags__() # override any flag values
+        })
diff --git a/uploader/templates/base.html b/uploader/templates/base.html
index 47c01c8..fd345b9 100644
--- a/uploader/templates/base.html
+++ b/uploader/templates/base.html
@@ -32,6 +32,19 @@
       <nav id="header-nav">
         <ul class="nav">
           {%if user_logged_in()%}
+          {%if view_under_construction%}
+          <li>
+            <a href="#"
+               title="User's background jobs.">
+              <!-- https://icons.getbootstrap.com/icons/back/ -->
+              <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-back" viewBox="0 0 16 16">
+                <path d="M0 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v2h2a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2v-2H2a2 2 0 0 1-2-2zm2-1a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1z"/>
+              </svg>
+              Background jobs
+            </a>
+          </li>
+          {%endif%}
+
           <li>
             <a href="{{url_for('oauth2.logout')}}"
                title="Log out of the system">