django-cms / django-classy-tags

Class based template tags for django

Home Page:http://django-classy-tags.rtfd.org

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

0.7.1 introduces error in flattening

radiac opened this issue · comments

Under django 1.8.8 using django cms, my templates are failing with the error dictionary update sequence element #0 has length 0; 2 is required. Problem went away when I reverted to 0.7.0. The failing traceback (below) had calls to the functions modified in 0.7.1 just before it fails.

We've got a complex codebase using django cms, and I'm afraid I don't have time to come up with a standalone proof of this failure, but it's triggering on a view where an InclusionTag includes a template which has more classy-tags.

Traceback:
File "venv/lib/python3.4/site-packages/django/core/handlers/base.py" in get_response
  164.                 response = response.render()
File "venv/lib/python3.4/site-packages/django/template/response.py" in render
  158.             self.content = self.rendered_content
File "venv/lib/python3.4/site-packages/django/template/response.py" in rendered_content
  135.         content = template.render(context, self._request)
File "venv/lib/python3.4/site-packages/django/template/backends/django.py" in render
  74.         return self.template.render(context)
File "venv/lib/python3.4/site-packages/django/template/base.py" in render
  210.                     return self._render(context)
File "venv/lib/python3.4/site-packages/django/test/utils.py" in instrumented_test_render
  96.     return self.nodelist.render(context)
File "venv/lib/python3.4/site-packages/django/template/base.py" in render
  905.                 bit = self.render_node(node, context)
File "venv/lib/python3.4/site-packages/django/template/debug.py" in render_node
  79.             return node.render(context)
File "venv/lib/python3.4/site-packages/django/template/loader_tags.py" in render
  135.         return compiled_parent._render(context)
File "venv/lib/python3.4/site-packages/django/test/utils.py" in instrumented_test_render
  96.     return self.nodelist.render(context)
File "venv/lib/python3.4/site-packages/django/template/base.py" in render
  905.                 bit = self.render_node(node, context)
File "venv/lib/python3.4/site-packages/django/template/debug.py" in render_node
  79.             return node.render(context)
File "venv/lib/python3.4/site-packages/classytags/core.py" in render
  146.         return self.render_tag(context, **kwargs)
File "venv/lib/python3.4/site-packages/sekizai/templatetags/sekizai_tags.py" in render_tag
  83.         rendered_contents = nodelist.render(context)
File "venv/lib/python3.4/site-packages/django/template/base.py" in render
  905.                 bit = self.render_node(node, context)
File "venv/lib/python3.4/site-packages/django/template/debug.py" in render_node
  79.             return node.render(context)
File "venv/lib/python3.4/site-packages/classytags/core.py" in render
  146.         return self.render_tag(context, **kwargs)
File "venv/lib/python3.4/site-packages/cms/templatetags/cms_tags.py" in render_tag
  672.         rendered_contents = nodelist.render(context)
File "venv/lib/python3.4/site-packages/django/template/base.py" in render
  905.                 bit = self.render_node(node, context)
File "venv/lib/python3.4/site-packages/django/template/debug.py" in render_node
  79.             return node.render(context)
File "venv/lib/python3.4/site-packages/django/template/loader_tags.py" in render
  65.                 result = block.nodelist.render(context)
File "venv/lib/python3.4/site-packages/django/template/base.py" in render
  905.                 bit = self.render_node(node, context)
File "venv/lib/python3.4/site-packages/django/template/debug.py" in render_node
  79.             return node.render(context)
File "venv/lib/python3.4/site-packages/django/template/loader_tags.py" in render
  65.                 result = block.nodelist.render(context)
File "venv/lib/python3.4/site-packages/django/template/base.py" in render
  905.                 bit = self.render_node(node, context)
File "venv/lib/python3.4/site-packages/django/template/debug.py" in render_node
  79.             return node.render(context)
File "venv/lib/python3.4/site-packages/classytags/core.py" in render
  146.         return self.render_tag(context, **kwargs)
File "venv/lib/python3.4/site-packages/cms/templatetags/cms_tags.py" in render_tag
  301.             content = get_placeholder_content(context, request, page, name, inherit, nodelist)
File "venv/lib/python3.4/site-packages/cms/templatetags/cms_tags.py" in get_placeholder_content
  233.         content = render_placeholder(placeholder, context, name)
File "venv/lib/python3.4/site-packages/cms/plugin_rendering.py" in render_placeholder
  163.     content.extend(render_plugins(plugins, context, placeholder, processors))
File "venv/lib/python3.4/site-packages/cms/plugin_rendering.py" in render_plugins
  92.         out.append(plugin.render_plugin(context, placeholder, processors=processors))
File "venv/lib/python3.4/site-packages/cms/models/pluginmodel.py" in render_plugin
  186.             return render_plugin(context, instance, placeholder, template, processors, context.current_app)
File "venv/lib/python3.4/site-packages/cms/plugin_rendering.py" in render_plugin
  62.         content = render_to_string(template, context)
File "venv/lib/python3.4/site-packages/django/template/loader.py" in render_to_string
  99.         return template.render(context, request)
File "venv/lib/python3.4/site-packages/django/template/backends/django.py" in render
  74.         return self.template.render(context)
File "venv/lib/python3.4/site-packages/django/template/base.py" in render
  210.                     return self._render(context)
File "venv/lib/python3.4/site-packages/django/test/utils.py" in instrumented_test_render
  96.     return self.nodelist.render(context)
File "venv/lib/python3.4/site-packages/django/template/base.py" in render
  905.                 bit = self.render_node(node, context)
File "venv/lib/python3.4/site-packages/django/template/debug.py" in render_node
  79.             return node.render(context)
File "venv/lib/python3.4/site-packages/classytags/core.py" in render
  146.         return self.render_tag(context, **kwargs)
File "venv/lib/python3.4/site-packages/classytags/helpers.py" in render_tag
  88.                 flatten_context(self.get_context(context, **kwargs))
File "venv/lib/python3.4/site-packages/classytags/utils.py" in flatten_context
  90.         return context.flatten()
File "venv/lib/python3.4/site-packages/django/template/context.py" in flatten
  110.             flat.update(d)

Exception Type: ValueError at /path/
Exception Value: dictionary update sequence element #0 has length 0; 2 is required

Fixed in #35.

Um I have a django 1.4 project and then got this error, I then reverted to classy-tags 0.7.0 and it worked! Thank You!!!

@zinglax just for your information, 0.7.2 is out for a few days now that also fixes this, so downgrading is no longer required.

Oh nice that's good to hear. thanks for the update @ojii