183 lines
5.8 KiB
Python
183 lines
5.8 KiB
Python
|
from cms.plugin_base import CMSPluginBase
|
||
|
from cms.plugin_pool import plugin_pool
|
||
|
from django.conf import settings
|
||
|
|
||
|
from .cms_models import (
|
||
|
DCLBannerItemPluginModel, DCLBannerListPluginModel, DCLContactPluginModel,
|
||
|
DCLFooterPluginModel, DCLLinkPluginModel, DCLNavbarDropdownPluginModel,
|
||
|
DCLSectionIconPluginModel, DCLSectionImagePluginModel,
|
||
|
DCLSectionPluginModel, DCLNavbarPluginModel,
|
||
|
DCLSectionPromoPluginModel, DCLCalculatorPluginModel
|
||
|
)
|
||
|
from .models import VMTemplate
|
||
|
from datacenterlight.utils import clear_all_session_vars
|
||
|
|
||
|
|
||
|
@plugin_pool.register_plugin
|
||
|
class DCLSectionPlugin(CMSPluginBase):
|
||
|
module = "Datacenterlight"
|
||
|
name = "DCL Section Plugin"
|
||
|
model = DCLSectionPluginModel
|
||
|
render_template = "datacenterlight/cms/section.html"
|
||
|
cache = False
|
||
|
allow_children = True
|
||
|
child_classes = [
|
||
|
'DCLSectionIconPlugin', 'DCLSectionImagePlugin',
|
||
|
'DCLSectionPromoPlugin', 'UngleichHTMLPlugin', 'DCLCalculatorPlugin'
|
||
|
]
|
||
|
|
||
|
def render(self, context, instance, placeholder):
|
||
|
context = super(DCLSectionPlugin, self).render(
|
||
|
context, instance, placeholder
|
||
|
)
|
||
|
context['children_to_side'] = []
|
||
|
context['children_to_content'] = []
|
||
|
context['children_calculator'] = []
|
||
|
if instance.child_plugin_instances is not None:
|
||
|
right_children = [
|
||
|
'DCLSectionImagePluginModel',
|
||
|
'DCLSectionIconPluginModel',
|
||
|
]
|
||
|
for child in instance.child_plugin_instances:
|
||
|
if child.__class__.__name__ in right_children:
|
||
|
context['children_to_side'].append(child)
|
||
|
elif child.plugin_type == 'DCLCalculatorPlugin':
|
||
|
context['children_calculator'].append(child)
|
||
|
else:
|
||
|
context['children_to_content'].append(child)
|
||
|
return context
|
||
|
|
||
|
|
||
|
@plugin_pool.register_plugin
|
||
|
class DCLSectionIconPlugin(CMSPluginBase):
|
||
|
module = "Datacenterlight"
|
||
|
name = "DCL Section Icon Plugin"
|
||
|
model = DCLSectionIconPluginModel
|
||
|
render_template = "datacenterlight/cms/section_icon.html"
|
||
|
cache = False
|
||
|
require_parent = True
|
||
|
|
||
|
|
||
|
@plugin_pool.register_plugin
|
||
|
class DCLSectionImagePlugin(CMSPluginBase):
|
||
|
module = "Datacenterlight"
|
||
|
name = "DCL Section Image Plugin"
|
||
|
model = DCLSectionImagePluginModel
|
||
|
render_template = "datacenterlight/cms/section_image.html"
|
||
|
cache = False
|
||
|
require_parent = True
|
||
|
|
||
|
|
||
|
@plugin_pool.register_plugin
|
||
|
class DCLSectionPromoPlugin(CMSPluginBase):
|
||
|
module = "Datacenterlight"
|
||
|
name = "DCL Section Promo Plugin"
|
||
|
model = DCLSectionPromoPluginModel
|
||
|
render_template = "datacenterlight/cms/section_promo.html"
|
||
|
cache = False
|
||
|
|
||
|
|
||
|
@plugin_pool.register_plugin
|
||
|
class DCLCalculatorPlugin(CMSPluginBase):
|
||
|
module = "Datacenterlight"
|
||
|
name = "DCL Calculator Plugin"
|
||
|
model = DCLCalculatorPluginModel
|
||
|
render_template = "datacenterlight/cms/calculator.html"
|
||
|
cache = False
|
||
|
require_parent = True
|
||
|
|
||
|
def render(self, context, instance, placeholder):
|
||
|
clear_all_session_vars(context['request'])
|
||
|
context = super(DCLCalculatorPlugin, self).render(
|
||
|
context, instance, placeholder
|
||
|
)
|
||
|
ids = instance.vm_templates_to_show
|
||
|
if ids:
|
||
|
context['templates'] = VMTemplate.objects.filter(
|
||
|
vm_type=instance.vm_type
|
||
|
).filter(opennebula_vm_template_id__in=ids).order_by('name')
|
||
|
else:
|
||
|
context['templates'] = VMTemplate.objects.filter(
|
||
|
vm_type=instance.vm_type
|
||
|
).order_by('name')
|
||
|
context['instance'] = instance
|
||
|
context['vm_base_price'] = settings.VM_BASE_PRICE
|
||
|
context['min_ram'] = 0.5 if instance.enable_512mb_ram else 1
|
||
|
return context
|
||
|
|
||
|
|
||
|
@plugin_pool.register_plugin
|
||
|
class DCLBannerListPlugin(CMSPluginBase):
|
||
|
module = "Datacenterlight"
|
||
|
name = "DCL Banner List Plugin"
|
||
|
model = DCLBannerListPluginModel
|
||
|
render_template = "datacenterlight/cms/banner_list.html"
|
||
|
cache = False
|
||
|
allow_children = True
|
||
|
child_classes = ['DCLBannerItemPlugin']
|
||
|
|
||
|
|
||
|
@plugin_pool.register_plugin
|
||
|
class DCLBannerItemPlugin(CMSPluginBase):
|
||
|
module = "Datacenterlight"
|
||
|
name = "DCL Banner Item Plugin"
|
||
|
model = DCLBannerItemPluginModel
|
||
|
render_template = "datacenterlight/cms/banner_item.html"
|
||
|
cache = False
|
||
|
require_parent = True
|
||
|
parent_classes = ['DCLBannerListPlugin']
|
||
|
|
||
|
|
||
|
@plugin_pool.register_plugin
|
||
|
class DCLNavbarPlugin(CMSPluginBase):
|
||
|
module = "Datacenterlight"
|
||
|
name = "DCL Navbar Plugin"
|
||
|
model = DCLNavbarPluginModel
|
||
|
render_template = "datacenterlight/cms/navbar.html"
|
||
|
cache = False
|
||
|
allow_children = True
|
||
|
child_classes = ['DCLLinkPlugin', 'DCLNavbarDropdownPlugin']
|
||
|
|
||
|
|
||
|
@plugin_pool.register_plugin
|
||
|
class DCLNavbarDropdownPlugin(CMSPluginBase):
|
||
|
module = "Datacenterlight"
|
||
|
name = "DCL Navbar Dropdown Plugin"
|
||
|
model = DCLNavbarDropdownPluginModel
|
||
|
render_template = "datacenterlight/cms/navbar_dropdown.html"
|
||
|
cache = False
|
||
|
allow_children = True
|
||
|
child_classes = ['DCLLinkPlugin']
|
||
|
require_parent = True
|
||
|
parent_classes = ['DCLNavbarPlugin']
|
||
|
|
||
|
|
||
|
@plugin_pool.register_plugin
|
||
|
class DCLLinkPlugin(CMSPluginBase):
|
||
|
module = "Datacenterlight"
|
||
|
name = "DCL Link Plugin"
|
||
|
model = DCLLinkPluginModel
|
||
|
render_template = "datacenterlight/cms/link.html"
|
||
|
cache = False
|
||
|
require_parent = True
|
||
|
|
||
|
|
||
|
@plugin_pool.register_plugin
|
||
|
class DCLContactPlugin(CMSPluginBase):
|
||
|
module = "Datacenterlight"
|
||
|
name = "DCL Contact Plugin"
|
||
|
model = DCLContactPluginModel
|
||
|
render_template = "datacenterlight/cms/contact.html"
|
||
|
cache = False
|
||
|
|
||
|
|
||
|
@plugin_pool.register_plugin
|
||
|
class DCLFooterPlugin(CMSPluginBase):
|
||
|
module = "Datacenterlight"
|
||
|
name = "DCL Footer Plugin"
|
||
|
model = DCLFooterPluginModel
|
||
|
render_template = "datacenterlight/cms/footer.html"
|
||
|
cache = False
|
||
|
allow_children = True
|
||
|
child_classes = ['DCLLinkPlugin']
|