Pass context params to various landing templates
This commit is contained in:
parent
957cec00a0
commit
23bd0fa147
1 changed files with 32 additions and 8 deletions
|
@ -19,11 +19,11 @@ from hosting.models import HostingOrder
|
||||||
from membership.models import CustomUser, StripeCustomer
|
from membership.models import CustomUser, StripeCustomer
|
||||||
from opennebula_api.serializers import VMTemplateSerializer
|
from opennebula_api.serializers import VMTemplateSerializer
|
||||||
from utils.forms import BillingAddressForm, BillingAddressFormSignup
|
from utils.forms import BillingAddressForm, BillingAddressFormSignup
|
||||||
from utils.hosting_utils import get_vm_price
|
from utils.hosting_utils import get_vm_price, get_vm_price_with_vat
|
||||||
from utils.stripe_utils import StripeUtils
|
from utils.stripe_utils import StripeUtils
|
||||||
from utils.tasks import send_plain_email_task
|
from utils.tasks import send_plain_email_task
|
||||||
from .forms import ContactForm
|
from .forms import ContactForm
|
||||||
from .models import VMTemplate
|
from .models import VMTemplate, VMPricing
|
||||||
from .utils import get_cms_integration
|
from .utils import get_cms_integration
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
@ -93,7 +93,8 @@ class IndexView(CreateView):
|
||||||
|
|
||||||
@cache_control(no_cache=True, must_revalidate=True, no_store=True)
|
@cache_control(no_cache=True, must_revalidate=True, no_store=True)
|
||||||
def get(self, request, *args, **kwargs):
|
def get(self, request, *args, **kwargs):
|
||||||
for session_var in ['specs', 'user', 'billing_address_data']:
|
for session_var in ['specs', 'user', 'billing_address_data',
|
||||||
|
'pricing_name']:
|
||||||
if session_var in request.session:
|
if session_var in request.session:
|
||||||
del request.session[session_var]
|
del request.session[session_var]
|
||||||
return HttpResponseRedirect(reverse('datacenterlight:cms_index'))
|
return HttpResponseRedirect(reverse('datacenterlight:cms_index'))
|
||||||
|
@ -106,13 +107,30 @@ class IndexView(CreateView):
|
||||||
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'))
|
||||||
vm_pricing_name = request.POST.get('pricing_name')
|
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
|
opennebula_vm_template_id=template_id
|
||||||
).first()
|
).first()
|
||||||
template_data = VMTemplateSerializer(template).data
|
template_data = VMTemplateSerializer(template).data
|
||||||
referer_url = request.META['HTTP_REFERER']
|
referer_url = request.META['HTTP_REFERER']
|
||||||
|
|
||||||
|
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 HttpResponseRedirect(referer_url + "#order_form")
|
||||||
|
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:
|
||||||
|
@ -140,7 +158,7 @@ class IndexView(CreateView):
|
||||||
)
|
)
|
||||||
return HttpResponseRedirect(referer_url + "#order_form")
|
return HttpResponseRedirect(referer_url + "#order_form")
|
||||||
|
|
||||||
amount_to_be_charged = get_vm_price(
|
amount_to_be_charged, vat = get_vm_price_with_vat(
|
||||||
cpu=cores,
|
cpu=cores,
|
||||||
memory=memory,
|
memory=memory,
|
||||||
disk_size=storage,
|
disk_size=storage,
|
||||||
|
@ -150,7 +168,10 @@ class IndexView(CreateView):
|
||||||
'cpu': cores,
|
'cpu': cores,
|
||||||
'memory': memory,
|
'memory': memory,
|
||||||
'disk_size': storage,
|
'disk_size': storage,
|
||||||
'price': amount_to_be_charged
|
'price': amount_to_be_charged,
|
||||||
|
'vat': vat,
|
||||||
|
'total_price': amount_to_be_charged + vat,
|
||||||
|
'pricing_name': vm_pricing_name
|
||||||
}
|
}
|
||||||
request.session['specs'] = specs
|
request.session['specs'] = specs
|
||||||
request.session['template'] = template_data
|
request.session['template'] = template_data
|
||||||
|
@ -224,7 +245,10 @@ class PaymentOrderView(FormView):
|
||||||
'site_url': reverse('datacenterlight:index'),
|
'site_url': reverse('datacenterlight:index'),
|
||||||
'login_form': HostingUserLoginForm(prefix='login_form'),
|
'login_form': HostingUserLoginForm(prefix='login_form'),
|
||||||
'billing_address_form': billing_address_form,
|
'billing_address_form': billing_address_form,
|
||||||
'cms_integration': get_cms_integration('default')
|
'cms_integration': get_cms_integration('default'),
|
||||||
|
'vm_pricing': VMPricing.get_vm_pricing_by_name(
|
||||||
|
self.request.session['specs']['pricing_name']
|
||||||
|
)
|
||||||
})
|
})
|
||||||
return context
|
return context
|
||||||
|
|
||||||
|
@ -493,7 +517,7 @@ class OrderConfirmationView(DetailView):
|
||||||
stripe_subscription_obj.id, card_details_dict)
|
stripe_subscription_obj.id, card_details_dict)
|
||||||
for session_var in ['specs', 'template', 'billing_address',
|
for session_var in ['specs', 'template', 'billing_address',
|
||||||
'billing_address_data',
|
'billing_address_data',
|
||||||
'token', 'customer']:
|
'token', 'customer', 'pricing_name']:
|
||||||
if session_var in request.session:
|
if session_var in request.session:
|
||||||
del request.session[session_var]
|
del request.session[session_var]
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue