Created generic view for vm pricing widget, Added VM configuration info on VM detail view, Fixed template bugs. Fixed Blog urls bugs
This commit is contained in:
		
					parent
					
						
							
								9aa732626f
							
						
					
				
			
			
				commit
				
					
						e90c5fece0
					
				
			
		
					 7 changed files with 99 additions and 14 deletions
				
			
		|  | @ -1,18 +1,21 @@ | |||
| from django.shortcuts import redirect | ||||
| from django.core.urlresolvers import reverse | ||||
| from .models import VirtualMachinePlan | ||||
| 
 | ||||
| 
 | ||||
| class ProcessVMSelectionMixin(object): | ||||
| 
 | ||||
|     def post(self, request, *args, **kwargs): | ||||
|         hosting = request.POST.get('configuration') | ||||
|         configuration_detail = dict(VirtualMachinePlan.VM_CONFIGURATION).get(hosting) | ||||
|         vm_specs = { | ||||
|             'cores': request.POST.get('cores'), | ||||
|             'memory': request.POST.get('memory'), | ||||
|             'disk_size': request.POST.get('disk_space'), | ||||
|             'hosting_company': request.POST.get('hosting_company'), | ||||
|             'location_code': request.POST.get('location_code'), | ||||
|             'configuration': request.POST.get('configuration'), | ||||
|             'configuration_detail': request.POST.get('configuration_detail'), | ||||
|             'configuration': hosting, | ||||
|             'configuration_detail': configuration_detail, | ||||
|             'final_price': request.POST.get('final_price') | ||||
|         } | ||||
|         request.session['vm_specs'] = vm_specs | ||||
|  |  | |||
							
								
								
									
										44
									
								
								hosting/templates/hosting/hosting_pricing.html
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								hosting/templates/hosting/hosting_pricing.html
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,44 @@ | |||
| {% load staticfiles %} | ||||
| <!DOCTYPE html> | ||||
| <html> | ||||
| <head> | ||||
| 	<link href="{% static 'hosting/css/pricing.css' %}" rel="stylesheet" /> | ||||
| 	<title>Hosting</title> | ||||
|     <!-- Bootstrap Core CSS --> | ||||
|     <link href="{% static 'hosting/css/bootstrap.min.css' %}" rel="stylesheet"> | ||||
| 
 | ||||
|     <link href="{% static 'hosting/css/pricing.css' %}" rel="stylesheet"> | ||||
| 
 | ||||
| 
 | ||||
|     <!-- Custom CSS --> | ||||
|     <link href="{% static 'hosting/css/landing-page.css' %}" rel="stylesheet"> | ||||
| 
 | ||||
|     <!-- Custom Fonts --> | ||||
|     <link href='//fonts.googleapis.com/css?family=Raleway' rel='stylesheet' type='text/css'> | ||||
|     <link href="{% static 'hosting/font-awesome/css/font-awesome.min.css' %}" rel="stylesheet" type="text/css"> | ||||
|     <link href="//fonts.googleapis.com/css?family=Lato:300,400,700,300italic,400italic,700italic" rel="stylesheet" type="text/css"> | ||||
|     <link rel="shortcut icon" href="{% static 'hosting/img/favicon.ico' %}" type="image/x-icon" /> | ||||
| 
 | ||||
| </head> | ||||
| <body> | ||||
| 
 | ||||
| 	{% include "hosting/includes/_pricing.html" with select_configuration=True%} | ||||
| 
 | ||||
| 
 | ||||
|     <!-- Pricing data --> | ||||
|     {% if vm_types %} | ||||
|     <script type="text/javascript">  | ||||
|          (function () {window.VMTypesData = "{{vm_types|safe}}";})(); | ||||
|     </script> | ||||
|     {%endif%} | ||||
| 
 | ||||
|     <!-- Lodash --> | ||||
|     <script src="//cdnjs.cloudflare.com/ajax/libs/lodash.js/4.11.1/lodash.min.js"></script> | ||||
| 
 | ||||
|     <!-- jQuery --> | ||||
|     <script src="{% static 'hosting/js/jquery.js' %}"></script> | ||||
| 
 | ||||
|     <!-- Pricing --> | ||||
|     <script src="{% static 'hosting/js/pricing.js' %}"></script> | ||||
| </body> | ||||
| </html> | ||||
|  | @ -24,8 +24,7 @@ | |||
|                 {% csrf_token %} | ||||
|                 <input type="hidden" name="hosting_company" value="{{vm.hosting_company}}"> | ||||
|                 <input type="hidden" name="location_code" value="{{vm.location_code}}"> | ||||
|                 <input type="hidden" name="configuration_detail" value="{{configuration_detail}}"> | ||||
|                 <input type="hidden" name="configuration" value="{{hosting}}"> | ||||
|                 | ||||
|                  | ||||
|                  | ||||
|                 <ul class="pricing {% cycle 'p-red' 'p-black' 'p-red' 'p-yel' %}"> | ||||
|  | @ -46,13 +45,24 @@ | |||
|                     </div> | ||||
|                   </li> | ||||
|                   <li> | ||||
|                     <!-- Single button --> | ||||
|                     <div class="btn-group"> | ||||
|                       <div class="form-group"> | ||||
|                         <label for="cores">Configuration: </label> | ||||
|                         {{configuration_detail}} | ||||
|                   <label for="configuration">Configuration: </label> | ||||
|                     {% if select_configuration %} | ||||
|                         <select class="form-control" name="configuration" id="{{vm.hosting_company}}-configuration" data-vm-type="{{vm.hosting_company}}"> | ||||
|                         {% for key,value in configuration_options.items   %} | ||||
|                             <option  value="{{key}}">{{ value }}</option> | ||||
|                         {% endfor %} | ||||
|                         </select> | ||||
|                     {% else %} | ||||
|                       <input type="hidden" name="configuration_detail" value="{{configuration_detail}}"> | ||||
|                       <input type="hidden" name="configuration" value="{{hosting}}"> | ||||
|                       <!-- Single button --> | ||||
|                       <div class="btn-group"> | ||||
|                         <div class="form-group"> | ||||
|                           <label>Configuration: </label> | ||||
|                           {{configuration_detail}} | ||||
|                         </div> | ||||
|                       </div> | ||||
|                     </div> | ||||
|                     {% endif %} | ||||
|                   </li> | ||||
|                   <li> | ||||
|                     <!-- Single button --> | ||||
|  |  | |||
|  | @ -89,6 +89,11 @@ | |||
| 								    </div><!--/row-->     | ||||
| 								  </div><!--/col-12--> | ||||
| 								</div><!--/row--> | ||||
| 								<div class="row"> | ||||
| 									<div class="col-md-12"> | ||||
| 										Configuration: {{virtual_machine.get_configuration_display}} | ||||
| 									</div> | ||||
| 								</div> | ||||
| 
 | ||||
| 
 | ||||
| 				            </div> | ||||
|  |  | |||
|  | @ -4,13 +4,14 @@ from .views import DjangoHostingView, RailsHostingView, PaymentVMView,\ | |||
|     NodeJSHostingView, LoginView, SignupView, IndexView, \ | ||||
|     OrdersHostingListView, OrdersHostingDetailView, VirtualMachinesPlanListView,\ | ||||
|     VirtualMachineView, GenerateVMSSHKeysView, OrdersHostingDeleteView, NotificationsView, \ | ||||
|     MarkAsReadNotificationView, PasswordResetView, PasswordResetConfirmView | ||||
|     MarkAsReadNotificationView, PasswordResetView, PasswordResetConfirmView, HostingPricingView | ||||
| 
 | ||||
| urlpatterns = [ | ||||
|     url(r'index/?$', IndexView.as_view(), name='index'), | ||||
|     url(r'django/?$', DjangoHostingView.as_view(), name='djangohosting'), | ||||
|     url(r'nodejs/?$', NodeJSHostingView.as_view(), name='nodejshosting'), | ||||
|     url(r'rails/?$', RailsHostingView.as_view(), name='railshosting'), | ||||
|     url(r'pricing/?$', HostingPricingView.as_view(), name='pricing'), | ||||
|     url(r'payment/?$', PaymentVMView.as_view(), name='payment'), | ||||
|     url(r'orders/?$', OrdersHostingListView.as_view(), name='orders'), | ||||
|     url(r'orders/(?P<pk>\d+)/?$', OrdersHostingDetailView.as_view(), name='orders'), | ||||
|  |  | |||
|  | @ -99,6 +99,26 @@ class NodeJSHostingView(ProcessVMSelectionMixin, View): | |||
|         return render(request, self.template_name, context) | ||||
| 
 | ||||
| 
 | ||||
| class HostingPricingView(ProcessVMSelectionMixin, View): | ||||
|     template_name = "hosting/hosting_pricing.html" | ||||
| 
 | ||||
|     def get_context_data(self, **kwargs): | ||||
|         configuration_options = dict(VirtualMachinePlan.VM_CONFIGURATION) | ||||
|         context = { | ||||
|             'configuration_options': configuration_options, | ||||
|             'email': "info@django-hosting.ch", | ||||
|             'vm_types': VirtualMachineType.get_serialized_vm_types(), | ||||
|         } | ||||
| 
 | ||||
|         return context | ||||
| 
 | ||||
|     def get(self, request, *args, **kwargs): | ||||
|         request.session['hosting_url'] = reverse('hosting:djangohosting') | ||||
|         context = self.get_context_data() | ||||
| 
 | ||||
|         return render(request, self.template_name, context) | ||||
| 
 | ||||
| 
 | ||||
| class IndexView(View): | ||||
|     template_name = "hosting/index.html" | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue