diff options
Diffstat (limited to 'uploader/flask_extensions.py')
| -rw-r--r-- | uploader/flask_extensions.py | 33 |
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) |
