diff --git a/src/cmsplugin_blurp/renderers/data_source.py b/src/cmsplugin_blurp/renderers/data_source.py index 32603de..8734ca2 100644 --- a/src/cmsplugin_blurp/renderers/data_source.py +++ b/src/cmsplugin_blurp/renderers/data_source.py @@ -16,6 +16,11 @@ from . import signature, template log = logging.getLogger(__name__) +try: + from collections import OrderedDict +except ImportError: + OrderedDict = dict + class Renderer(template.TemplateRenderer): '''Data source renderer the expected configuration looks like @@ -105,6 +110,20 @@ class Renderer(template.TemplateRenderer): context[slug] = source return super(Renderer, self).render(context) + +class DictRenderer(Renderer): + """ + Aggregates all data from the sources into a dict and expose it to the + template with the name of its slug + """ + def render(self, context): + context = super(Renderer, self).render(context) + context[self.slug] = OrderedDict() + for slug, data in self.get_sources(context): + context[self.slug][slug] = data + return context + + class Data(object): '''Encapsulate data from a source'''