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