From 176574a9cce01b37aa68ffbb88e7f80291e30934 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emil=20Stenstro=CC=88m?= Date: Sun, 14 Jun 2015 14:29:20 +0200 Subject: [PATCH] Add component_dependencies template tag. --- django_components/templatetags/__init__.py | 0 .../templatetags/component_tags.py | 12 +++++++++ tests/test_templatetags.py | 27 +++++++++++++++++++ 3 files changed, 39 insertions(+) create mode 100644 django_components/templatetags/__init__.py create mode 100644 django_components/templatetags/component_tags.py create mode 100644 tests/test_templatetags.py diff --git a/django_components/templatetags/__init__.py b/django_components/templatetags/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/django_components/templatetags/component_tags.py b/django_components/templatetags/component_tags.py new file mode 100644 index 00000000..108a78f4 --- /dev/null +++ b/django_components/templatetags/component_tags.py @@ -0,0 +1,12 @@ +from django import template +from django_components.component import registry + +register = template.Library() + +@register.simple_tag(name="component_dependencies") +def component_dependencies_tag(): + out = [] + for comp in registry._registry.values(): + out.append(comp.render_dependencies()) + + return "\n".join(out) diff --git a/tests/test_templatetags.py b/tests/test_templatetags.py new file mode 100644 index 00000000..fb8a608f --- /dev/null +++ b/tests/test_templatetags.py @@ -0,0 +1,27 @@ +from textwrap import dedent +import unittest +from django.template import Template, Context +from django_components import component +from .django_test_setup import * # NOQA + +class SimpleComponent(component.Component): + def context(self, variable=None): + return { + "variable": variable, + } + + class Media: + template = "simple_template.html" + css = {"all": "style.css"} + js = ("script.js",) + +class ComponentTemplateTagTest(unittest.TestCase): + def test_component_dependencies(self): + component.registry.register(name="testcomponent", component=SimpleComponent) + + template = Template("{% load component_tags %}{% component_dependencies %}") + rendered = template.render(Context()) + self.assertEqual(rendered, dedent(""" + + + """).strip())