From be5531a3bd4981e53cef807785027f07163c0c22 Mon Sep 17 00:00:00 2001 From: Fabian Lehner Date: Sat, 23 Jan 2016 13:05:36 +0100 Subject: [PATCH 1/2] fixes TypeError when creating new empty SectionContainer plugins --- cmsplugin_sections/cms_plugins.py | 32 ++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/cmsplugin_sections/cms_plugins.py b/cmsplugin_sections/cms_plugins.py index 9c55259..aa266ec 100644 --- a/cmsplugin_sections/cms_plugins.py +++ b/cmsplugin_sections/cms_plugins.py @@ -33,21 +33,22 @@ def get_children(self, instance): children = [] - for i, child in enumerate(instance.child_plugin_instances): - prev_child = None - next_child = None + if instance.child_plugin_instances is not None: + for i, child in enumerate(instance.child_plugin_instances): + prev_child = None + next_child = None - if i > 0: - prev_child = instance.child_plugin_instances[i-1] + if i > 0: + prev_child = instance.child_plugin_instances[i-1] - if i < len(instance.child_plugin_instances) - 1: - next_child = instance.child_plugin_instances[i+1] + if i < len(instance.child_plugin_instances) - 1: + next_child = instance.child_plugin_instances[i+1] - children.append({ - 'prev': prev_child, - 'child': child, - 'next': next_child, - }) + children.append({ + 'prev': prev_child, + 'child': child, + 'next': next_child, + }) return children @@ -55,9 +56,10 @@ def render(self, context, instance, placeholder): section_menu_items = [] - for child in instance.child_plugin_instances: - if child.show_in_menu: - section_menu_items.append(child) + if instance.child_plugin_instances is not None: + for child in instance.child_plugin_instances: + if child.show_in_menu: + section_menu_items.append(child) context['children'] = self.get_children(instance) context['sections'] = section_menu_items From 5c16bfe224091f58c54cfe1741a70ca40f320685 Mon Sep 17 00:00:00 2001 From: Fabian Lehner Date: Thu, 28 Jan 2016 14:54:42 +0100 Subject: [PATCH 2/2] restrict SectionContainer children --- cmsplugin_sections/cms_plugins.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/cmsplugin_sections/cms_plugins.py b/cmsplugin_sections/cms_plugins.py index aa266ec..92a0da2 100644 --- a/cmsplugin_sections/cms_plugins.py +++ b/cmsplugin_sections/cms_plugins.py @@ -5,6 +5,7 @@ from cms.models import CMSPlugin from cms.plugin_pool import plugin_pool from cms.plugin_base import CMSPluginBase +from django.conf import settings from .models import SectionBasePluginModel @@ -17,7 +18,9 @@ class SectionContainerPlugin(CMSPluginBase): allow_children = True cache = True # TODO: Complete this, or set it in settings. - # child_classes = ['...'] + # Is anything wrong with just allowing SectionPlugins here? + # Other section plugin subclasses should be + child_classes = getattr(settings, 'CMSPLUGIN_SECTIONS_CONTAINER_CHILD_CLASSES', ['SectionPlugin', ]) model = CMSPlugin module = 'Sections' name = 'Section Container'