from django.template.loader import render_to_string from .component_registry import ComponentRegistry, AlreadyRegistered, NotRegistered # NOQA class Component(object): CSS_TEMPLATE = '' JS_TEMPLATE = '' def context(self): return {} @classmethod def render_dependencies(cls): out = [] for css_media, css_path in cls.Media.css.items(): out.append(cls.CSS_TEMPLATE.format(css_path, css_media)) for js_path in cls.Media.js: out.append(cls.JS_TEMPLATE.format(js_path)) return "\n".join(out) def render(self, *args, **kwargs): return render_to_string(self.Media.template, self.context(*args, **kwargs)) class Media: template = None css = {} js = () # This variable represents the global component registry registry = ComponentRegistry()