hosting payment page
This commit is contained in:
		
					parent
					
						
							
								3b3b73a2ce
							
						
					
				
			
			
				commit
				
					
						f66d768ecb
					
				
			
		
					 6 changed files with 41 additions and 16 deletions
				
			
		| 
						 | 
					@ -175,7 +175,7 @@
 | 
				
			||||||
            window.coresUnitPrice = 5;
 | 
					            window.coresUnitPrice = 5;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        if(typeof window.ramUnitPrice === 'undefined'){
 | 
					        if(typeof window.ramUnitPrice === 'undefined'){
 | 
				
			||||||
            window.coresUnitPrice = 2;
 | 
					            window.ramUnitPrice = 2;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        if(typeof window.ssdUnitPrice === 'undefined'){
 | 
					        if(typeof window.ssdUnitPrice === 'undefined'){
 | 
				
			||||||
            window.ssdUnitPrice = 0.6;
 | 
					            window.ssdUnitPrice = 0.6;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -61,6 +61,7 @@
 | 
				
			||||||
        </div>
 | 
					        </div>
 | 
				
			||||||
    {% endplaceholder %}
 | 
					    {% endplaceholder %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    {% url 'datacenterlight:index' as calculator_form_url %}
 | 
				
			||||||
    {% placeholder 'Datacenterlight Content' %}
 | 
					    {% placeholder 'Datacenterlight Content' %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    {% placeholder 'datacenterlight_footer'%}
 | 
					    {% placeholder 'datacenterlight_footer'%}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -11,7 +11,7 @@
 | 
				
			||||||
    </script>
 | 
					    </script>
 | 
				
			||||||
{% endif %}
 | 
					{% endif %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<form id="order_form" method="POST" action="{% url 'datacenterlight:index' %}" data-toggle="validator" role="form">
 | 
					<form id="order_form" method="POST" action="{{calculator_form_url}}" data-toggle="validator" role="form">
 | 
				
			||||||
    {% csrf_token %}
 | 
					    {% csrf_token %}
 | 
				
			||||||
    <div class="title">
 | 
					    <div class="title">
 | 
				
			||||||
        <h3>{% trans "VM hosting" %} </h3>
 | 
					        <h3>{% trans "VM hosting" %} </h3>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -219,12 +219,11 @@ $( document ).ready(function() {
 | 
				
			||||||
            window.coresUnitPrice = 5;
 | 
					            window.coresUnitPrice = 5;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        if(typeof window.ramUnitPrice === 'undefined'){
 | 
					        if(typeof window.ramUnitPrice === 'undefined'){
 | 
				
			||||||
            window.coresUnitPrice = 2;
 | 
					            window.ramUnitPrice = 2;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        if(typeof window.ssdUnitPrice === 'undefined'){
 | 
					        if(typeof window.ssdUnitPrice === 'undefined'){
 | 
				
			||||||
            window.ssdUnitPrice = 0.6;
 | 
					            window.ssdUnitPrice = 0.6;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        console.log(coresUnitPrice, ramUnitPrice, ssdUnitPrice, cardPricing)
 | 
					 | 
				
			||||||
        var total = (cardPricing['cpu'].value * window.coresUnitPrice) +
 | 
					        var total = (cardPricing['cpu'].value * window.coresUnitPrice) +
 | 
				
			||||||
                    (cardPricing['ram'].value * window.ramUnitPrice) +
 | 
					                    (cardPricing['ram'].value * window.ramUnitPrice) +
 | 
				
			||||||
                    (cardPricing['storage'].value * window.ssdUnitPrice);
 | 
					                    (cardPricing['storage'].value * window.ssdUnitPrice);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -42,12 +42,13 @@
 | 
				
			||||||
                </div>
 | 
					                </div>
 | 
				
			||||||
                <div class="col-xs-12 col-sm-12 col-md-12 col-lg-12 dcl-order-table-total">
 | 
					                <div class="col-xs-12 col-sm-12 col-md-12 col-lg-12 dcl-order-table-total">
 | 
				
			||||||
                    <div class="col-xs-6 col-sm-6 col-md-6 col-lg-6 tbl-tot tbl-no-padding">
 | 
					                    <div class="col-xs-6 col-sm-6 col-md-6 col-lg-6 tbl-tot tbl-no-padding">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                        {%trans "Total" %} <span>{%trans "including VAT" %}</span>
 | 
					                        {%trans "Total" %} <span>{%trans "including VAT" %}</span>
 | 
				
			||||||
                    </div>
 | 
					                    </div>
 | 
				
			||||||
                    <div class="col-xs-6 col-sm-6 col-md-6 col-lg-6 tbl-no-padding">
 | 
					                    <div class="col-xs-6 col-sm-6 col-md-6 col-lg-6 tbl-no-padding">
 | 
				
			||||||
                        <div class="col-xs-12 col-sm-4 col-md-4 col-lg-4"></div>
 | 
					                        <div class="col-xs-12 col-sm-4 col-md-4 col-lg-4"></div>
 | 
				
			||||||
                        <div class="col-xs-12 col-sm-6 col-md-6 col-lg-6 tbl-total">{{request.session.specs.price|intcomma}}
 | 
					                        <div class="col-xs-12 col-sm-6 col-md-6 col-lg-6 tbl-total">
 | 
				
			||||||
                            CHF<span class="dcl-price-month">/{% trans "Month" %}</span>
 | 
					                            {{request.session.specs.price|intcomma}} CHF/{% trans "Month" %}
 | 
				
			||||||
                        </div>
 | 
					                        </div>
 | 
				
			||||||
                    </div>
 | 
					                    </div>
 | 
				
			||||||
                </div>
 | 
					                </div>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -30,7 +30,7 @@ from stored_messages.api import mark_read
 | 
				
			||||||
from stored_messages.models import Message
 | 
					from stored_messages.models import Message
 | 
				
			||||||
from stored_messages.settings import stored_messages_settings
 | 
					from stored_messages.settings import stored_messages_settings
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from datacenterlight.models import VMTemplate
 | 
					from datacenterlight.models import VMTemplate, VMPricing
 | 
				
			||||||
from datacenterlight.tasks import create_vm_task
 | 
					from datacenterlight.tasks import create_vm_task
 | 
				
			||||||
from datacenterlight.utils import get_cms_integration
 | 
					from datacenterlight.utils import get_cms_integration
 | 
				
			||||||
from membership.models import CustomUser, StripeCustomer
 | 
					from membership.models import CustomUser, StripeCustomer
 | 
				
			||||||
| 
						 | 
					@ -1020,18 +1020,34 @@ class CreateVirtualMachinesView(LoginRequiredMixin, View):
 | 
				
			||||||
        storage = request.POST.get('storage')
 | 
					        storage = request.POST.get('storage')
 | 
				
			||||||
        storage_field = forms.IntegerField(validators=[self.validate_storage])
 | 
					        storage_field = forms.IntegerField(validators=[self.validate_storage])
 | 
				
			||||||
        template_id = int(request.POST.get('config'))
 | 
					        template_id = int(request.POST.get('config'))
 | 
				
			||||||
 | 
					        pricing_name = request.POST.get('pricing_name')
 | 
				
			||||||
 | 
					        vm_pricing = VMPricing.get_vm_pricing_by_name(pricing_name)
 | 
				
			||||||
        template = VMTemplate.objects.filter(
 | 
					        template = VMTemplate.objects.filter(
 | 
				
			||||||
            opennebula_vm_template_id=template_id).first()
 | 
					            opennebula_vm_template_id=template_id).first()
 | 
				
			||||||
        template_data = VMTemplateSerializer(template).data
 | 
					        template_data = VMTemplateSerializer(template).data
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if vm_pricing is None:
 | 
				
			||||||
 | 
					            vm_pricing_name_msg = _(
 | 
				
			||||||
 | 
					                "Incorrect pricing name. Please contact support"
 | 
				
			||||||
 | 
					                "{support_email}".format(
 | 
				
			||||||
 | 
					                    support_email=settings.DCL_SUPPORT_FROM_ADDRESS
 | 
				
			||||||
 | 
					                )
 | 
				
			||||||
 | 
					            )
 | 
				
			||||||
 | 
					            messages.add_message(
 | 
				
			||||||
 | 
					                self.request, messages.ERROR, vm_pricing_name_msg,
 | 
				
			||||||
 | 
					                extra_tags='pricing'
 | 
				
			||||||
 | 
					            )
 | 
				
			||||||
 | 
					            return redirect(CreateVirtualMachinesView.as_view())
 | 
				
			||||||
 | 
					        else:
 | 
				
			||||||
 | 
					            vm_pricing_name = vm_pricing.name
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        try:
 | 
					        try:
 | 
				
			||||||
            cores = cores_field.clean(cores)
 | 
					            cores = cores_field.clean(cores)
 | 
				
			||||||
        except ValidationError as err:
 | 
					        except ValidationError as err:
 | 
				
			||||||
            msg = '{} : {}.'.format(cores, str(err))
 | 
					            msg = '{} : {}.'.format(cores, str(err))
 | 
				
			||||||
            messages.add_message(self.request, messages.ERROR, msg,
 | 
					            messages.add_message(self.request, messages.ERROR, msg,
 | 
				
			||||||
                                 extra_tags='cores')
 | 
					                                 extra_tags='cores')
 | 
				
			||||||
            return HttpResponseRedirect(
 | 
					            return redirect(CreateVirtualMachinesView.as_view())
 | 
				
			||||||
                reverse('datacenterlight:index') + "#order_form")
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        try:
 | 
					        try:
 | 
				
			||||||
            memory = memory_field.clean(memory)
 | 
					            memory = memory_field.clean(memory)
 | 
				
			||||||
| 
						 | 
					@ -1039,8 +1055,7 @@ class CreateVirtualMachinesView(LoginRequiredMixin, View):
 | 
				
			||||||
            msg = '{} : {}.'.format(memory, str(err))
 | 
					            msg = '{} : {}.'.format(memory, str(err))
 | 
				
			||||||
            messages.add_message(self.request, messages.ERROR, msg,
 | 
					            messages.add_message(self.request, messages.ERROR, msg,
 | 
				
			||||||
                                 extra_tags='memory')
 | 
					                                 extra_tags='memory')
 | 
				
			||||||
            return HttpResponseRedirect(
 | 
					            return redirect(CreateVirtualMachinesView.as_view())
 | 
				
			||||||
                reverse('datacenterlight:index') + "#order_form")
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        try:
 | 
					        try:
 | 
				
			||||||
            storage = storage_field.clean(storage)
 | 
					            storage = storage_field.clean(storage)
 | 
				
			||||||
| 
						 | 
					@ -1048,15 +1063,24 @@ class CreateVirtualMachinesView(LoginRequiredMixin, View):
 | 
				
			||||||
            msg = '{} : {}.'.format(storage, str(err))
 | 
					            msg = '{} : {}.'.format(storage, str(err))
 | 
				
			||||||
            messages.add_message(self.request, messages.ERROR, msg,
 | 
					            messages.add_message(self.request, messages.ERROR, msg,
 | 
				
			||||||
                                 extra_tags='storage')
 | 
					                                 extra_tags='storage')
 | 
				
			||||||
            return HttpResponseRedirect(
 | 
					            return redirect(CreateVirtualMachinesView.as_view())
 | 
				
			||||||
                reverse('datacenterlight:index') + "#order_form")
 | 
					
 | 
				
			||||||
        price = get_vm_price(cpu=cores, memory=memory,
 | 
					        price, vat, vat_percent = get_vm_price_with_vat(
 | 
				
			||||||
                             disk_size=storage)
 | 
					            cpu=cores,
 | 
				
			||||||
 | 
					            memory=memory,
 | 
				
			||||||
 | 
					            ssd_size=storage,
 | 
				
			||||||
 | 
					            pricing_name=vm_pricing_name
 | 
				
			||||||
 | 
					        )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        specs = {
 | 
					        specs = {
 | 
				
			||||||
            'cpu': cores,
 | 
					            'cpu': cores,
 | 
				
			||||||
            'memory': memory,
 | 
					            'memory': memory,
 | 
				
			||||||
            'disk_size': storage,
 | 
					            'disk_size': storage,
 | 
				
			||||||
            'price': price
 | 
					            'price': price,
 | 
				
			||||||
 | 
					            'vat': vat,
 | 
				
			||||||
 | 
					            'vat_percent': vat_percent,
 | 
				
			||||||
 | 
					            'total_price': price + vat,
 | 
				
			||||||
 | 
					            'pricing_name': vm_pricing_name
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        request.session['specs'] = specs
 | 
					        request.session['specs'] = specs
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue