Skip to content

Commit

Permalink
feat: config to customize bootstrap data overrides (apache#16386)
Browse files Browse the repository at this point in the history
* feat: config to customize bootstrap data overrides

* comments
  • Loading branch information
suddjian authored and Emmanuel Bavoux committed Nov 14, 2021
1 parent 62f0b57 commit 9875959
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 1 deletion.
14 changes: 14 additions & 0 deletions superset/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -428,6 +428,20 @@ def _try_json_readsha(filepath: str, length: int) -> Optional[str]:
# return feature_flags_dict
GET_FEATURE_FLAGS_FUNC: Optional[Callable[[Dict[str, bool]], Dict[str, bool]]] = None

# A function that expands/overrides the frontend `bootstrap_data.common` object.
# Can be used to implement custom frontend functionality,
# or dynamically change certain configs.
#
# Values in `bootstrap_data.common` should have these characteristics:
# - They are not specific to a page the user is visiting
# - They do not contain secrets
#
# Takes as a parameter the common bootstrap payload before transformations.
# Returns a dict containing data that should be added or overridden to the payload.
COMMON_BOOTSTRAP_OVERRIDES_FUNC: Callable[
[Dict[str, Any]], Dict[str, Any]
] = lambda data: {} # default: empty dict

# EXTRA_CATEGORICAL_COLOR_SCHEMES is used for adding custom categorical color schemes
# example code for "My custom warm to hot" color scheme
# EXTRA_CATEGORICAL_COLOR_SCHEMES = [
Expand Down
4 changes: 3 additions & 1 deletion superset/views/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -346,7 +346,7 @@ def common_bootstrap_payload() -> Dict[str, Any]:
messages = get_flashed_messages(with_categories=True)
locale = str(get_locale())

return {
bootstrap_data = {
"flash_messages": messages,
"conf": {k: conf.get(k) for k in FRONTEND_CONF_KEYS},
"locale": locale,
Expand All @@ -357,6 +357,8 @@ def common_bootstrap_payload() -> Dict[str, Any]:
"theme_overrides": conf["THEME_OVERRIDES"],
"menu_data": menu_data(),
}
bootstrap_data.update(conf["COMMON_BOOTSTRAP_OVERRIDES_FUNC"](bootstrap_data))
return bootstrap_data


# pylint: disable=invalid-name
Expand Down

0 comments on commit 9875959

Please sign in to comment.