about summary refs log tree commit diff
path: root/uploader/flask_extensions.py
diff options
context:
space:
mode:
Diffstat (limited to 'uploader/flask_extensions.py')
-rw-r--r--uploader/flask_extensions.py33
1 files changed, 33 insertions, 0 deletions
diff --git a/uploader/flask_extensions.py b/uploader/flask_extensions.py
new file mode 100644
index 0000000..30fbad7
--- /dev/null
+++ b/uploader/flask_extensions.py
@@ -0,0 +1,33 @@
+"""Custom extensions to the default flask functions/classes."""
+import logging
+from typing import Any, Optional
+
+from flask import (request, current_app as app, url_for as flask_url_for)
+
+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."""
+    flags = {}
+    for flag in app.config["FEATURE_FLAGS_HTTP"]:
+        flag_value = (request.args.get(flag) or request.form.get(flag) or "").strip()
+        if bool(flag_value):
+            flags[flag] = flag_value
+            continue
+        continue
+
+    logger.debug("HTTP FEATURE FLAGS: %s, other variables: %s", flags, values)
+    return flask_url_for(endpoint=endpoint,
+                         _anchor=_anchor,
+                         _method=_method,
+                         _scheme=_scheme,
+                         _external=_external,
+                         **values,
+                         **flags)