add calculator placeholder to cms_integration
This commit is contained in:
		
					parent
					
						
							
								67a6c8f2c2
							
						
					
				
			
			
				commit
				
					
						3bf064a017
					
				
			
		
					 13 changed files with 195 additions and 74 deletions
				
			
		|  | @ -26,6 +26,10 @@ class CMSIntegration(models.Model): | |||
|     navbar_placeholder = PlaceholderField( | ||||
|         'datacenterlight_navbar', related_name='dcl-navbar-placeholder+' | ||||
|     ) | ||||
|     calculator_placeholder = PlaceholderField( | ||||
|         'datacenterlight_calculator', | ||||
|         related_name='dcl-calculator-placeholder+' | ||||
|     ) | ||||
|     domain = models.ForeignKey(Site, null=True, blank=True) | ||||
| 
 | ||||
|     class Meta: | ||||
|  | @ -288,7 +292,7 @@ class DCLSectionPromoPluginModel(CMSPlugin): | |||
|         return extra_classes | ||||
| 
 | ||||
| 
 | ||||
| class DCLCustomPricingModel(CMSPlugin): | ||||
| class DCLCalculatorPluginModel(CMSPlugin): | ||||
|     pricing = models.ForeignKey( | ||||
|         VMPricing, | ||||
|         related_name="dcl_custom_pricing_vm_pricing", | ||||
|  |  | |||
|  | @ -1,3 +1,4 @@ | |||
| from cms.models.pluginmodel import CMSPlugin | ||||
| from cms.plugin_base import CMSPluginBase | ||||
| from cms.plugin_pool import plugin_pool | ||||
| 
 | ||||
|  | @ -6,7 +7,7 @@ from .cms_models import ( | |||
|     DCLFooterPluginModel, DCLLinkPluginModel, DCLNavbarDropdownPluginModel, | ||||
|     DCLSectionIconPluginModel, DCLSectionImagePluginModel, | ||||
|     DCLSectionPluginModel, DCLNavbarPluginModel, | ||||
|     DCLSectionPromoPluginModel, DCLCustomPricingModel | ||||
|     DCLSectionPromoPluginModel, DCLCalculatorPluginModel | ||||
| ) | ||||
| from .models import VMTemplate, VMPricing | ||||
| 
 | ||||
|  | @ -21,7 +22,7 @@ class DCLSectionPlugin(CMSPluginBase): | |||
|     allow_children = True | ||||
|     child_classes = [ | ||||
|         'DCLSectionIconPlugin', 'DCLSectionImagePlugin', | ||||
|         'DCLSectionPromoPlugin', 'UngleichHTMLPlugin' | ||||
|         'DCLSectionPromoPlugin', 'UngleichHTMLPlugin', 'DCLCalculatorPlugin' | ||||
|     ] | ||||
| 
 | ||||
|     def render(self, context, instance, placeholder): | ||||
|  | @ -30,14 +31,18 @@ class DCLSectionPlugin(CMSPluginBase): | |||
|         ) | ||||
|         context['children_to_side'] = [] | ||||
|         context['children_to_content'] = [] | ||||
|         context['children_calculator'] = [] | ||||
|         if instance.child_plugin_instances is not None: | ||||
|             right_children = [ | ||||
|                 'DCLSectionImagePluginModel', | ||||
|                 'DCLSectionIconPluginModel' | ||||
|                 'DCLSectionIconPluginModel', | ||||
|             ] | ||||
|             for child in instance.child_plugin_instances: | ||||
|                 print(child.__dict__) | ||||
|                 if child.__class__.__name__ in right_children: | ||||
|                     context['children_to_side'].append(child) | ||||
|                 elif child.__class__.__name__ == 'CMSPlugin': | ||||
|                     context['children_calculator'].append(child) | ||||
|                 else: | ||||
|                     context['children_to_content'].append(child) | ||||
|         return context | ||||
|  | @ -75,50 +80,42 @@ class DCLSectionPromoPlugin(CMSPluginBase): | |||
| @plugin_pool.register_plugin | ||||
| class DCLCalculatorPlugin(CMSPluginBase): | ||||
|     module = "Datacenterlight" | ||||
|     name = "DCL Calculator Section Plugin" | ||||
|     model = DCLSectionPluginModel | ||||
|     name = "DCL Calculator Plugin" | ||||
|     model = DCLCalculatorPluginModel | ||||
|     render_template = "datacenterlight/cms/calculator.html" | ||||
|     cache = False | ||||
|     allow_children = True | ||||
|     child_classes = [ | ||||
|         'DCLSectionPromoPlugin', 'UngleichHTMLPlugin', 'DCLCustomPricingPlugin' | ||||
|     ] | ||||
|     require_parent = True | ||||
| 
 | ||||
|     def render(self, context, instance, placeholder): | ||||
|         context = super(DCLCalculatorPlugin, self).render( | ||||
|             context, instance, placeholder | ||||
|         ) | ||||
|         context['templates'] = VMTemplate.objects.all() | ||||
|         context['children_to_content'] = [] | ||||
|         pricing_plugin_model = None | ||||
|         if instance.child_plugin_instances is not None: | ||||
|             context['children_to_content'].extend( | ||||
|                 instance.child_plugin_instances | ||||
|             ) | ||||
|             for child in instance.child_plugin_instances: | ||||
|                 if child.__class__.__name__ == 'DCLCustomPricingModel': | ||||
|                     # The second clause is just to make sure we pick up the | ||||
|                     # most recent CustomPricing, if more than one is present | ||||
|                     if (pricing_plugin_model is None or child.pricing_id > | ||||
|                             pricing_plugin_model.model.pricing_id): | ||||
|                         pricing_plugin_model = child | ||||
| 
 | ||||
|         if pricing_plugin_model: | ||||
|             context['vm_pricing'] = VMPricing.get_vm_pricing_by_name( | ||||
|                 name=pricing_plugin_model.pricing.name | ||||
|             ) | ||||
|         else: | ||||
|             context['vm_pricing'] = VMPricing.get_default_pricing() | ||||
|     #     pricing_plugin_model = None | ||||
|     #     if instance.child_plugin_instances is not None: | ||||
|     #         for child in instance.child_plugin_instances: | ||||
|     #             if child.__class__.__name__ == 'DCLCustomPricingModel': | ||||
|     #                 # The second clause is just to make sure we pick up the | ||||
|     #                 # most recent CustomPricing, if more than one is present | ||||
|     #                 if (pricing_plugin_model is None or child.pricing_id > | ||||
|     #                         pricing_plugin_model.model.pricing_id): | ||||
|     #                     pricing_plugin_model = child | ||||
| 
 | ||||
|     #     if pricing_plugin_model: | ||||
|     #         context['vm_pricing'] = VMPricing.get_vm_pricing_by_name( | ||||
|     #             name=pricing_plugin_model.pricing.name | ||||
|     #         ) | ||||
|     #     else: | ||||
|     #         context['vm_pricing'] = VMPricing.get_default_pricing() | ||||
|         return context | ||||
| 
 | ||||
| 
 | ||||
| @plugin_pool.register_plugin | ||||
| class DCLCustomPricingPlugin(CMSPluginBase): | ||||
|     module = "Datacenterlight" | ||||
|     name = "DCL Custom Pricing Plugin" | ||||
|     model = DCLCustomPricingModel | ||||
|     render_plugin = False | ||||
| # @plugin_pool.register_plugin | ||||
| # class DCLCustomPricingPlugin(CMSPluginBase): | ||||
| #     module = "Datacenterlight" | ||||
| #     name = "DCL Custom Pricing Plugin" | ||||
| #     model = DCLCustomPricingModel | ||||
| #     render_plugin = False | ||||
| 
 | ||||
| 
 | ||||
| @plugin_pool.register_plugin | ||||
|  |  | |||
|  | @ -0,0 +1,28 @@ | |||
| # -*- coding: utf-8 -*- | ||||
| # Generated by Django 1.9.4 on 2018-04-25 09:20 | ||||
| from __future__ import unicode_literals | ||||
| 
 | ||||
| import cms.models.fields | ||||
| from django.db import migrations | ||||
| import django.db.models.deletion | ||||
| 
 | ||||
| 
 | ||||
| class Migration(migrations.Migration): | ||||
| 
 | ||||
|     dependencies = [ | ||||
|         ('datacenterlight', '0020_merge'), | ||||
|         ('cms', '0014_auto_20160404_1908'), | ||||
|     ] | ||||
| 
 | ||||
|     operations = [ | ||||
|         migrations.AddField( | ||||
|             model_name='cmsintegration', | ||||
|             name='calculator_placeholder', | ||||
|             field=cms.models.fields.PlaceholderField(editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, | ||||
|                                                      related_name='dcl-calculator-placeholder+', slotname='datacenterlight_calculator', to='cms.Placeholder'), | ||||
|         ), | ||||
|         migrations.RenameModel( | ||||
|             old_name='DCLCustomPricingModel', | ||||
|             new_name='DCLCalculatorPluginModel', | ||||
|         ), | ||||
|     ] | ||||
|  | @ -776,7 +776,7 @@ textarea { | |||
|   width: 100%; | ||||
|   margin: 0 auto; | ||||
|   background: #fff; | ||||
|   box-shadow: 0 10px 20px rgba(0, 0, 0, 0.19), 0 6px 6px rgba(0, 0, 0, 0.23); | ||||
|   box-shadow: 0 5px 15px rgba(0, 0, 0, 0.1), 0 0 6px rgba(0, 0, 0, 0.15); | ||||
|   padding-bottom: 40px; | ||||
|   border-radius: 7px; | ||||
|   text-align: center; | ||||
|  | @ -929,7 +929,7 @@ textarea { | |||
| } | ||||
| 
 | ||||
| 
 | ||||
| @media(max-width:991px) { | ||||
| @media(max-width:767px) { | ||||
|   .section-sm-center .split-text, | ||||
|   .section-sm-center .space { | ||||
|     text-align: center !important; | ||||
|  |  | |||
|  | @ -1,16 +1,5 @@ | |||
| <div class="split-section {{ instance.get_extra_classes }}" id="{{ instance.html_id }}"> | ||||
|   <div class="container"> | ||||
|     <div class="row"> | ||||
|       <div class="col-sm-6 {% if instance.text_direction == 'right' %}col-sm-push-6{% endif %} split-text"> | ||||
|         {% include "datacenterlight/cms/includes/_section_split_content.html" %} | ||||
|       </div> | ||||
|       <div class="col-sm-6 {% if instance.text_direction == 'right' %}col-sm-pull-6{% endif %}"> | ||||
|         <div class="price-calc-section"> | ||||
|           <div class="card"> | ||||
|             {% include "datacenterlight/includes/_calculator_form.html" %} | ||||
|           </div> | ||||
|         </div> | ||||
|       </div> | ||||
|     </div> | ||||
| <div class="price-calc-section"> | ||||
|   <div class="card"> | ||||
|     {% include "datacenterlight/includes/_calculator_form.html" with vm_pricing=instance.pricing %} | ||||
|   </div> | ||||
| </div> | ||||
|  | @ -2,17 +2,24 @@ | |||
| 
 | ||||
| <section class="split-section {{ instance.get_extra_classes }}" id="{{ instance.html_id }}"> | ||||
|   <div class="container"> | ||||
|     {% if children_to_side|length %} | ||||
|     {% if children_to_side|length or children_calculator|length %} | ||||
|       <div class="row"> | ||||
|         <div class="col-sm-6 {% if instance.text_direction == 'right' %}col-sm-push-6{% endif %} split-text"> | ||||
|           {% include "datacenterlight/cms/includes/_section_split_content.html" %} | ||||
|         </div> | ||||
|         <div class="col-sm-6 {% if instance.text_direction == 'right' %}col-sm-pull-6{% endif %} split-figure"> | ||||
|           <div class="section-figure"> | ||||
|             {% for plugin in children_to_side %} | ||||
|           {% if children_calculator|length %} | ||||
|             {% for plugin in children_calculator %} | ||||
|               {% render_plugin plugin %} | ||||
|             {% endfor %} | ||||
|           </div> | ||||
|           {% endif %} | ||||
|           {% if children_to_side %} | ||||
|             <div class="section-figure"> | ||||
|               {% for plugin in children_to_side %} | ||||
|                 {% render_plugin plugin %} | ||||
|               {% endfor %} | ||||
|             </div> | ||||
|           {% endif %} | ||||
|         </div> | ||||
|       </div> | ||||
|     {% else %} | ||||
|  |  | |||
|  | @ -17,7 +17,7 @@ | |||
|         <h3>{% trans "VM hosting" %} </h3> | ||||
|     </div> | ||||
|     <div class="price"> | ||||
|         <span id="total">15</span> | ||||
|         <span id="total"></span> | ||||
|         <span>CHF/{% trans "month" %}</span> | ||||
|         {% if vm_pricing.vat_inclusive %} | ||||
|         <div class="price-text"> | ||||
|  | @ -94,4 +94,4 @@ | |||
|     </div> | ||||
|     <input type="hidden" name="pricing_name" value="{% if vm_pricing.name %}{{vm_pricing.name}}{% else %}unknown{% endif%}"></input> | ||||
|     <input type="submit" class="btn btn-primary disabled" value="{% trans 'Continue' %}"></input> | ||||
| </form> | ||||
| </form> | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue