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…
Reference in a new issue