from cms.plugin_base import CMSPluginBase from cms.plugin_pool import plugin_pool from .models import ( UngelichContactUsSection, UngelichTextSection, Service, ServiceItem, About, AboutItem, SectionWithImage ) def get_section_id(plugin_instance, default): """ A helper function to get the section id from a given menu text :param plugin_instance: :param default: The default section id to return in case a section id is not found :return: The section id for the plugin_instance """ section_id = default if hasattr(plugin_instance, 'menu_text'): menu_words = plugin_instance.menu_text.split() if len(menu_words) > 0: section_id = menu_words[0] return section_id @plugin_pool.register_plugin class SectionWithImagePlugin(CMSPluginBase): model = SectionWithImage render_template = "ungleich_page/glasfaser/section_with_image.html" cache = False def render(self, context, instance, placeholder): context.update({ 'image': instance.image, 'object': instance, 'placeholder': placeholder }) return context @plugin_pool.register_plugin class SectionContact(CMSPluginBase): model = UngelichContactUsSection render_template = "ungleich_page/glasfaser/section_contact.html" cache = False def render(self, context, instance, placeholder): context = super(SectionContact, self).render( context, instance, placeholder ) context['instance'] = instance context['section_id'] = get_section_id(instance, 'contact') return context @plugin_pool.register_plugin class SectionTextParagraphDCL(CMSPluginBase): model = UngelichTextSection render_template = "ungleich_page/glasfaser/section_text_dcl.html" cache = False def render(self, context, instance, placeholder): context = super(SectionTextParagraphDCL, self).render( context, instance, placeholder ) context['instance'] = instance context['section_id'] = get_section_id(instance, 'your') return context @plugin_pool.register_plugin class SectionTextParagraphGlasfaser(CMSPluginBase): model = UngelichTextSection render_template = "ungleich_page/glasfaser/section_text_glasfaser.html" cache = False def render(self, context, instance, placeholder): context = super(SectionTextParagraphGlasfaser, self).render( context, instance, placeholder ) context['instance'] = instance context['section_id'] = get_section_id(instance, 'our') return context @plugin_pool.register_plugin class GlasfaserServicesPlugin(CMSPluginBase): name = "Glasfaser Services Plugin" model = Service render_template = "ungleich_page/glasfaser/section_services.html" cache = False allow_children = True child_classes = ['GlasfaserServicesItemPlugin'] def render(self, context, instance, placeholder): context['service_instance'] = instance context['section_id'] = get_section_id(instance, 'services') return context @plugin_pool.register_plugin class GlasfaserServicesItemPlugin(CMSPluginBase): name = "Glasfaser Service Item Plugin" model = ServiceItem render_template = "ungleich_page/glasfaser/_services_item.html" cache = False require_parent = True parent_classes = ['GlasfaserServicesPlugin'] def render(self, context, instance, placeholder): context = super(GlasfaserServicesItemPlugin, self).render( context, instance, placeholder ) context['instance'] = instance return context @plugin_pool.register_plugin class GlasfaserAboutPlugin(CMSPluginBase): name = "Glasfaser About Plugin" model = About render_template = "ungleich_page/glasfaser/section_about.html" cache = False allow_children = True child_classes = ['GlasfaserAboutItemPlugin'] def render(self, context, instance, placeholder): context['about_instance'] = instance context['section_id'] = get_section_id(instance, 'about') return context @plugin_pool.register_plugin class GlasfaserAboutItemPlugin(CMSPluginBase): name = "Glasfaser About Item Plugin" model = AboutItem render_template = "ungleich_page/glasfaser/_about_item.html" cache = False require_parent = True parent_classes = ['GlasfaserAboutPlugin'] def render(self, context, instance, placeholder): context = super(GlasfaserAboutItemPlugin, self).render( context, instance, placeholder ) context['instance'] = instance return context