1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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)
|