def create_plugins(page, count=5):
    placeholders = page.placeholders.all()

    for placeholder in placeholders:
        for language in page.get_languages():
            data = {
                'language': language,
                'plugin_type': 'CMSToolsNode',
                'placeholder': placeholder,
            }

            for i in range(0, count):
                # Depth 1
                parent = CMSPlugin.add_root(position=i, **data)
                # Depth 2
                child = parent.add_child(position=i, parent=parent, **data)
                # Depth 3
                child.add_child(position=i, parent=child, **data)
예제 #2
0
 def create_module_plugin(cls, name, category, plugins):
     placeholder = category.modules
     position = placeholder.get_plugins().filter(
         parent__isnull=True).count()
     plugin_kwargs = {
         'plugin_type': cls.__name__,
         'placeholder_id': category.modules_id,
         'language': settings.LANGUAGE_CODE,
         'position': position,
     }
     plugin = CMSPlugin.add_root(**plugin_kwargs)
     instance = cls.model(module_name=name, module_category=category)
     plugin.set_base_attr(instance)
     instance.save()
     copy_plugins_to_placeholder(
         plugins,
         placeholder=placeholder,
         language=plugin.language,
         root_plugin=plugin,
     )
예제 #3
0
    def restore(self, placeholder, language, parent=None):
        plugin_kwargs = {
            'pk': self.pk,
            'plugin_type': self.plugin_type,
            'placeholder': placeholder,
            'language': language,
            'parent': parent,
            'position': self.position,
        }

        if parent:
            plugin = parent.add_child(**plugin_kwargs)
        else:
            plugin = CMSPlugin.add_root(**plugin_kwargs)

        if self.plugin_type != 'CMSPlugin':
            _d_instance = self.deserialized_instance
            _d_instance.object._no_reorder = True
            plugin.set_base_attr(_d_instance.object)
            _d_instance.save()
        return plugin
예제 #4
0
    def restore(self, placeholder, language, parent=None, with_data=True):
        parent_id = parent.pk if parent else None
        plugin_kwargs = {
            'plugin_type': self.plugin_type,
            'placeholder': placeholder,
            'language': language,
            'parent_id': parent_id,
            'position': self.position,
        }

        if parent:
            plugin = parent.add_child(**plugin_kwargs)
        else:
            plugin = CMSPlugin.add_root(**plugin_kwargs)

        if with_data and self.plugin_type != 'CMSPlugin':
            _d_instance = self.deserialized_instance
            _d_instance.object._no_reorder = True
            _d_instance.object.cmsplugin_ptr = plugin
            plugin.set_base_attr(_d_instance.object)
            _d_instance.save()
            return _d_instance.object
        return plugin