"""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)