This commit is contained in:
@@ -0,0 +1,88 @@
|
||||
from importlib import import_module
|
||||
|
||||
from django.conf import settings
|
||||
|
||||
BOOTSTRAP5_DEFAULTS = {
|
||||
"css_url": {
|
||||
"href": "https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css",
|
||||
"integrity": "sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3",
|
||||
"crossorigin": "anonymous",
|
||||
},
|
||||
"javascript_url": {
|
||||
"url": "https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js",
|
||||
"integrity": "sha384-ka7Sk0Gln4gmtz2MlQnikT1wXgYsOg+OMhuP+IlRH9sENBO0LRn5q+8nbTov4+1p",
|
||||
"crossorigin": "anonymous",
|
||||
},
|
||||
"theme_url": None,
|
||||
"javascript_in_head": False,
|
||||
"use_i18n": False,
|
||||
"horizontal_label_class": "col-md-3",
|
||||
"horizontal_field_class": "col-md-9",
|
||||
"set_placeholder": True,
|
||||
"required_css_class": "",
|
||||
"error_css_class": "is-invalid",
|
||||
"success_css_class": "is-valid",
|
||||
"formset_renderers": {"default": "bootstrap5.renderers.FormsetRenderer"},
|
||||
"form_renderers": {"default": "bootstrap5.renderers.FormRenderer"},
|
||||
"field_renderers": {
|
||||
"default": "bootstrap5.renderers.FieldRenderer",
|
||||
"inline": "bootstrap5.renderers.InlineFieldRenderer",
|
||||
"horizontal": "bootstrap5.renderers.HorizontalFieldRenderer",
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
def get_bootstrap_setting(name, default=None):
|
||||
"""Read a setting."""
|
||||
# Start with a copy of default settings
|
||||
BOOTSTRAP5 = BOOTSTRAP5_DEFAULTS.copy()
|
||||
|
||||
# Override with user settings from settings.py
|
||||
BOOTSTRAP5.update(getattr(settings, "BOOTSTRAP5", {}))
|
||||
|
||||
# Update use_i18n
|
||||
BOOTSTRAP5["use_i18n"] = i18n_enabled()
|
||||
|
||||
return BOOTSTRAP5.get(name, default)
|
||||
|
||||
|
||||
def javascript_url():
|
||||
"""Return the full url to the Bootstrap JavaScript file."""
|
||||
return get_bootstrap_setting("javascript_url")
|
||||
|
||||
|
||||
def css_url():
|
||||
"""Return the full url to the Bootstrap CSS file."""
|
||||
return get_bootstrap_setting("css_url")
|
||||
|
||||
|
||||
def theme_url():
|
||||
"""Return the full url to the theme CSS file."""
|
||||
return get_bootstrap_setting("theme_url")
|
||||
|
||||
|
||||
def i18n_enabled():
|
||||
"""Return the projects i18n setting."""
|
||||
return getattr(settings, "USE_I18N", False)
|
||||
|
||||
|
||||
def get_renderer(renderers, **kwargs):
|
||||
layout = kwargs.get("layout", "")
|
||||
path = renderers.get(layout, renderers["default"])
|
||||
mod, cls = path.rsplit(".", 1)
|
||||
return getattr(import_module(mod), cls)
|
||||
|
||||
|
||||
def get_formset_renderer(**kwargs):
|
||||
renderers = get_bootstrap_setting("formset_renderers")
|
||||
return get_renderer(renderers, **kwargs)
|
||||
|
||||
|
||||
def get_form_renderer(**kwargs):
|
||||
renderers = get_bootstrap_setting("form_renderers")
|
||||
return get_renderer(renderers, **kwargs)
|
||||
|
||||
|
||||
def get_field_renderer(**kwargs):
|
||||
renderers = get_bootstrap_setting("field_renderers")
|
||||
return get_renderer(renderers, **kwargs)
|
||||
Reference in New Issue
Block a user