2017-04-29 12:39:55 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								from  collections  import  namedtuple  
						 
					
						
							
								
									
										
										
										
											2015-05-27 12:21:30 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
											
												Created signup view. Added login after signup.Added signup url to nosystem app urls.py.  Added logout view, Added logout button on nabber, Added password reset form, Added password view , Added password reset html, Added password reset email for nosystemd app. Added confirm_reset_password.html, Added confirm_ reset password  view, Added confirm reset password form, Fixed reset password token generation, Started donation view, Added donation view, Added donation.html, Added donation form, Adding donation.js lib in order to capture stripe payments for nosystem app.
											 
										 
										
											2016-07-22 01:24:32 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								from  django . shortcuts  import  render  
						 
					
						
							
								
									
										
										
										
											2017-05-08 19:02:29 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								from  django . http  import  Http404  
						 
					
						
							
								
									
										
										
										
											2016-04-20 01:03:32 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								from  django . core . urlresolvers  import  reverse_lazy ,  reverse  
						 
					
						
							
								
									
										
										
										
											2016-04-29 01:53:24 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								from  django . contrib . auth . mixins  import  LoginRequiredMixin  
						 
					
						
							
								
									
										
										
										
											2016-05-29 13:37:43 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								from  django . views . generic  import  View ,  CreateView ,  FormView ,  ListView ,  DetailView , \ 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    DeleteView ,  TemplateView ,  UpdateView 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								from  django . http  import  HttpResponseRedirect  
						 
					
						
							
								
									
										
										
										
											2016-04-20 01:03:32 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								from  django . contrib . auth  import  authenticate ,  login  
						 
					
						
							
								
									
										
										
										
											2017-05-06 15:28:18 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								from  django . contrib  import  messages  
						 
					
						
							
								
									
										
										
										
											2016-04-22 08:36:38 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								from  django . conf  import  settings  
						 
					
						
							
								
									
										
										
										
											2017-05-03 23:19:32 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								from  django . shortcuts  import  redirect  
						 
					
						
							
								
									
										
										
										
											2017-05-12 00:56:35 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								from  django . utils . http  import  urlsafe_base64_decode  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								from  django . contrib . auth . tokens  import  default_token_generator  
						 
					
						
							
								
									
										
										
										
											2016-05-29 13:37:43 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-07-10 22:08:51 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								from  guardian . mixins  import  PermissionRequiredMixin  
						 
					
						
							
								
									
										
										
										
											2016-05-29 13:37:43 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								from  stored_messages . settings  import  stored_messages_settings  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								from  stored_messages . models  import  Message  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								from  stored_messages . api  import  mark_read  
						 
					
						
							
								
									
										
										
										
											2017-06-11 05:18:06 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								from  django . utils . safestring  import  mark_safe  
						 
					
						
							
								
									
										
										
										
											2016-04-19 01:04:15 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-04-26 01:16:03 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								from  membership . models  import  CustomUser ,  StripeCustomer  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								from  utils . stripe_utils  import  StripeUtils  
						 
					
						
							
								
									
										
										
										
											2017-05-11 00:11:33 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								from  utils . forms  import  BillingAddressForm ,  PasswordResetRequestForm ,  UserBillingAddressForm  
						 
					
						
							
								
									
										
										
										
											2016-08-20 00:57:35 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								from  utils . views  import  PasswordResetViewMixin ,  PasswordResetConfirmViewMixin ,  LoginViewMixin  
						 
					
						
							
								
									
										
										
										
											2016-05-25 01:23:32 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								from  utils . mailer  import  BaseEmail  
						 
					
						
							
								
									
										
										
										
											2017-05-13 13:47:53 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								from  . models  import  HostingOrder ,  HostingBill ,  HostingPlan ,  UserHostingKey  
						 
					
						
							
								
									
										
										
										
											2017-05-03 23:19:32 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								from  . forms  import  HostingUserSignupForm ,  HostingUserLoginForm ,  UserHostingKeyForm  
						 
					
						
							
								
									
										
										
										
											2016-04-22 08:36:38 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								from  . mixins  import  ProcessVMSelectionMixin  
						 
					
						
							
								
									
										
										
										
											2017-05-12 12:07:05 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								from  opennebula_api . models  import  OpenNebulaManager  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								from  opennebula_api . serializers  import  VirtualMachineSerializer , \ 
						 
					
						
							
								
									
										
										
										
											2017-05-25 11:27:49 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    VirtualMachineTemplateSerializer 
							 
						 
					
						
							
								
									
										
										
										
											2017-06-11 05:18:06 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								from  django . utils . translation  import  ugettext_lazy  as  _  
						 
					
						
							
								
									
										
										
										
											2017-05-13 06:59:57 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-04-19 01:04:15 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-05-06 15:28:18 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								from  oca . exceptions  import  OpenNebulaException  
						 
					
						
							
								
									
										
										
										
											2017-06-15 07:30:47 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								from  oca . pool  import  WrongNameError ,  WrongIdError  
						 
					
						
							
								
									
										
										
										
											2017-05-06 15:28:18 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-05-14 12:22:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								CONNECTION_ERROR  =  " Your VMs cannot be displayed at the moment due to a backend  \
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    connection  error .  please  try  again  in  a  few  minutes . " 
							 
						 
					
						
							
								
									
										
										
										
											2016-04-19 01:04:15 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-05-25 11:27:49 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-04-22 08:36:38 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								class  DjangoHostingView ( ProcessVMSelectionMixin ,  View ) :  
						 
					
						
							
								
									
										
										
										
											2016-04-19 01:04:15 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    template_name  =  " hosting/django.html " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    def  get_context_data ( self ,  * * kwargs ) : 
							 
						 
					
						
							
								
									
										
										
										
											2016-06-07 00:29:22 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        HOSTING  =  ' django ' 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-13 00:31:29 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        templates  =  OpenNebulaManager ( ) . get_templates ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        data  =  VirtualMachineTemplateSerializer ( templates ,  many = True ) . data 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-21 22:01:26 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        configuration_options  =  HostingPlan . get_serialized_configs ( ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-13 00:31:29 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        # configuration_detail = dict(VirtualMachinePlan.VM_CONFIGURATION).get(HOSTING) 
							 
						 
					
						
							
								
									
										
										
										
											2016-04-22 08:36:38 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        context  =  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-06-07 00:29:22 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            ' hosting ' :  HOSTING , 
							 
						 
					
						
							
								
									
										
										
										
											2016-04-22 08:36:38 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            ' hosting_long ' :  " Django " , 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-13 00:31:29 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            # 'configuration_detail': configuration_detail, 
							 
						 
					
						
							
								
									
										
										
										
											2016-04-22 08:36:38 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            ' domain ' :  " django-hosting.ch " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' google_analytics ' :  " UA-62285904-6 " , 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-13 00:31:29 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            ' vm_types ' :  data , 
							 
						 
					
						
							
								
									
										
										
										
											2016-04-22 08:36:38 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            ' email ' :  " info@django-hosting.ch " , 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-21 22:01:26 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            ' configuration_options ' :  configuration_options , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' templates ' :  templates , 
							 
						 
					
						
							
								
									
										
										
										
											2016-04-22 08:36:38 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2016-05-19 01:47:16 -04:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-04-19 01:04:15 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  context 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    def  get ( self ,  request ,  * args ,  * * kwargs ) : 
							 
						 
					
						
							
								
									
										
										
										
											2016-05-19 01:47:16 -04:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        request . session [ ' hosting_url ' ]  =  reverse ( ' hosting:djangohosting ' ) 
							 
						 
					
						
							
								
									
										
										
										
											2016-04-19 01:04:15 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        context  =  self . get_context_data ( ) 
							 
						 
					
						
							
								
									
										
										
										
											2016-04-23 02:22:44 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-04-19 01:04:15 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  render ( request ,  self . template_name ,  context ) 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-30 19:07:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-05-27 12:21:30 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-04-22 08:36:38 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								class  RailsHostingView ( ProcessVMSelectionMixin ,  View ) :  
						 
					
						
							
								
									
										
										
										
											2016-04-20 01:03:32 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    template_name  =  " hosting/rails.html " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    def  get_context_data ( self ,  * * kwargs ) : 
							 
						 
					
						
							
								
									
										
										
										
											2016-06-07 00:29:22 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        HOSTING  =  ' rails ' 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-13 00:31:29 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        templates  =  OpenNebulaManager ( ) . get_templates ( ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-21 22:01:26 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        configuration_options  =  HostingPlan . get_serialized_configs ( ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-13 00:31:29 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-04-22 08:36:38 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        context  =  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-06-07 00:29:22 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            ' hosting ' :  HOSTING , 
							 
						 
					
						
							
								
									
										
										
										
											2016-04-22 08:36:38 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            ' hosting_long ' :  " Ruby On Rails " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' domain ' :  " rails-hosting.ch " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' google_analytics ' :  " UA-62285904-5 " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' email ' :  " info@rails-hosting.ch " , 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-21 22:01:26 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            ' configuration_options ' :  configuration_options , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' templates ' :  templates , 
							 
						 
					
						
							
								
									
										
										
										
											2016-04-22 08:36:38 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2016-04-20 01:03:32 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  context 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    def  get ( self ,  request ,  * args ,  * * kwargs ) : 
							 
						 
					
						
							
								
									
										
										
										
											2016-05-19 01:47:16 -04:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        request . session [ ' hosting_url ' ]  =  reverse ( ' hosting:railshosting ' ) 
							 
						 
					
						
							
								
									
										
										
										
											2016-04-20 01:03:32 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        context  =  self . get_context_data ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  render ( request ,  self . template_name ,  context ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-04-22 08:36:38 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								class  NodeJSHostingView ( ProcessVMSelectionMixin ,  View ) :  
						 
					
						
							
								
									
										
										
										
											2016-04-20 01:03:32 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    template_name  =  " hosting/nodejs.html " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    def  get_context_data ( self ,  * * kwargs ) : 
							 
						 
					
						
							
								
									
										
										
										
											2016-06-07 00:29:22 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        HOSTING  =  ' nodejs ' 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-13 00:31:29 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        # configuration_detail = dict(VirtualMachinePlan.VM_CONFIGURATION).get(HOSTING) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        templates  =  OpenNebulaManager ( ) . get_templates ( ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-21 22:01:26 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        configuration_options  =  HostingPlan . get_serialized_configs ( ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-13 00:31:29 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-04-22 08:36:38 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        context  =  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-13 00:31:29 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            ' hosting ' :  HOSTING , 
							 
						 
					
						
							
								
									
										
										
										
											2016-04-22 08:36:38 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            ' hosting_long ' :  " NodeJS " , 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-13 00:31:29 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            # 'configuration_detail': configuration_detail, 
							 
						 
					
						
							
								
									
										
										
										
											2016-04-22 08:36:38 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            ' domain ' :  " node-hosting.ch " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' google_analytics ' :  " UA-62285904-7 " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' email ' :  " info@node-hosting.ch " , 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-21 22:01:26 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            ' templates ' :  templates , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' configuration_options ' :  configuration_options , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-04-22 08:36:38 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2016-04-20 01:03:32 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  context 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    def  get ( self ,  request ,  * args ,  * * kwargs ) : 
							 
						 
					
						
							
								
									
										
										
										
											2016-05-19 01:47:16 -04:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        request . session [ ' hosting_url ' ]  =  reverse ( ' hosting:nodejshosting ' ) 
							 
						 
					
						
							
								
									
										
										
										
											2016-04-20 01:03:32 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        context  =  self . get_context_data ( ) 
							 
						 
					
						
							
								
									
										
										
										
											2016-04-23 02:22:44 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-04-20 01:03:32 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  render ( request ,  self . template_name ,  context ) 
							 
						 
					
						
							
								
									
										
										
										
											2016-06-30 01:23:14 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								class  HostingPricingView ( ProcessVMSelectionMixin ,  View ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    template_name  =  " hosting/hosting_pricing.html " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    def  get_context_data ( self ,  * * kwargs ) : 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-13 00:31:29 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        # configuration_options = dict(VirtualMachinePlan.VM_CONFIGURATION) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        templates  =  OpenNebulaManager ( ) . get_templates ( ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-21 22:01:26 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        configuration_options  =  HostingPlan . get_serialized_configs ( ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-13 00:31:29 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-06-30 01:23:14 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        context  =  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-13 00:31:29 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            # 'configuration_options': configuration_options, 
							 
						 
					
						
							
								
									
										
										
										
											2016-06-30 01:23:14 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            ' email ' :  " info@django-hosting.ch " , 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-21 22:01:26 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            ' templates ' :  templates , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' configuration_options ' :  configuration_options , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-06-30 01:23:14 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        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 ) 
							 
						 
					
						
							
								
									
										
										
										
											2016-04-20 01:03:32 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								class  IndexView ( View ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    template_name  =  " hosting/index.html " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    def  get_context_data ( self ,  * * kwargs ) : 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-13 00:31:29 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        templates  =  OpenNebulaManager ( ) . get_templates ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        data  =  VirtualMachineTemplateSerializer ( templates ,  many = True ) . data 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-04-22 08:36:38 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        context  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' hosting ' :  " nodejs " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' hosting_long ' :  " NodeJS " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' domain ' :  " node-hosting.ch " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' google_analytics ' :  " UA-62285904-7 " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' email ' :  " info@node-hosting.ch " , 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-13 00:31:29 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            ' vm_types ' :  data 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            # 'vm_types': VirtualMachineType.get_serialized_vm_types(), 
							 
						 
					
						
							
								
									
										
										
										
											2016-04-22 08:36:38 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2016-04-20 01:03:32 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  context 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    def  get ( self ,  request ,  * args ,  * * kwargs ) : 
							 
						 
					
						
							
								
									
										
										
										
											2016-04-23 02:22:44 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-04-20 01:03:32 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        context  =  self . get_context_data ( ) 
							 
						 
					
						
							
								
									
										
										
										
											2016-04-23 02:22:44 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-04-20 01:03:32 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  render ( request ,  self . template_name ,  context ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-20 00:57:35 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								class  LoginView ( LoginViewMixin ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    template_name  =  " hosting/login.html " 
							 
						 
					
						
							
								
									
										
										
										
											2016-04-20 01:03:32 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    form_class  =  HostingUserLoginForm 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-20 11:06:10 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    success_url  =  reverse_lazy ( ' hosting:virtual_machines ' ) 
							 
						 
					
						
							
								
									
										
										
										
											2016-06-04 02:59:37 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-30 19:07:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-04-20 01:03:32 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								class  SignupView ( CreateView ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    template_name  =  ' hosting/signup.html ' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    form_class  =  HostingUserSignupForm 
							 
						 
					
						
							
								
									
										
										
										
											2016-05-19 00:58:28 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    model  =  CustomUser 
							 
						 
					
						
							
								
									
										
										
										
											2017-06-03 15:03:55 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    success_url  =  reverse_lazy ( ' hosting:ssh_keys ' ) 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-30 19:07:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-04-20 01:03:32 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    def  get_success_url ( self ) : 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-25 11:27:49 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        next_url  =  self . request . session . get ( 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-25 16:23:31 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            ' next ' ,  self . success_url ) 
							 
						 
					
						
							
								
									
										
										
										
											2016-04-30 13:55:55 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  next_url 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-30 19:07:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-04-20 01:03:32 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    def  form_valid ( self ,  form ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        name  =  form . cleaned_data . get ( ' name ' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        email  =  form . cleaned_data . get ( ' email ' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        password  =  form . cleaned_data . get ( ' password ' ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-06-11 05:18:06 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        this_base_url  =  " {0} :// {1} " . format ( self . request . scheme ,  self . request . get_host ( ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        CustomUser . register ( name ,  password ,  email ,  app = ' dcl ' ,  base_url = this_base_url ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  HttpResponseRedirect ( reverse_lazy ( ' hosting:signup-validate ' ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-28 21:22:06 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-06-11 05:18:06 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								class  SignupValidateView ( TemplateView ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    template_name  =  " hosting/signup_validate.html " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    def  get_context_data ( self ,  * * kwargs ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        context  =  super ( SignupValidateView ,  self ) . get_context_data ( * * kwargs ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-06-17 19:38:22 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        login_url  =  ' <a href= " '  +  reverse ( ' hosting:login ' )  +  ' " > '  +  str ( _ ( ' login ' ) )  + ' </a> ' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        home_url  =  ' <a href= " '  +  reverse ( ' datacenterlight:index ' )  +  ' " >Data Center Light</a> ' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        message = ' {signup_success_message}   {lurl} </a>  \
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                 < br  / > { go_back }  { hurl } . ' .format( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                  signup_success_message  =  _ ( ' Thank you for signing up. We have sent an email to you. Please follow the instructions in it to activate your account. Once activated, you can login using ' ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                  go_back  =  _ ( ' Go back to ' ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                  lurl  =  login_url , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                  hurl  =  home_url 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                  ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-06-11 05:18:06 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        context [ ' message ' ]  =  mark_safe ( message ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-06-17 19:38:22 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        context [ ' section_title ' ]  =  _ ( ' Sign up ' ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-06-11 05:18:06 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  context 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-09 22:13:38 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-06-11 05:18:06 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								class  SignupValidatedView ( SignupValidateView ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    template_name  =  " hosting/signup_validate.html " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    def  get_context_data ( self ,  * * kwargs ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        context  =  super ( SignupValidateView ,  self ) . get_context_data ( * * kwargs ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        validated  =  CustomUser . validate_url ( self . kwargs [ ' validate_slug ' ] ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-06-17 19:38:22 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        login_url  =  ' <a href= " '  +  reverse ( ' hosting:login ' )  +  ' " > '  +  str ( _ ( ' login ' ) )  + ' </a> ' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        section_title = _ ( ' Account activation ' ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-06-11 05:18:06 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  validated : 
							 
						 
					
						
							
								
									
										
										
										
											2017-06-17 19:38:22 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            message = ' {account_activation_string}  <br />  {login_string}   {lurl} . ' . format ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                             account_activation_string  =  _ ( " Your account has been activated. " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                             login_string  =  _ ( " You can now " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                             lurl  =  login_url ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-06-11 05:18:06 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        else : 
							 
						 
					
						
							
								
									
										
										
										
											2017-06-17 19:38:22 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            home_url  =  ' <a href= " '  +  reverse ( ' datacenterlight:index ' )  +  ' " >Data Center Light</a> ' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            message  =  ' {sorry_message}  <br /> {go_back_to}   {hurl} ' . format ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    sorry_message  =  _ ( " Sorry. Your request is invalid. " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    go_back_to  =  _ ( ' Go back to ' ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    hurl  =  home_url 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-06-11 05:18:06 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        context [ ' message ' ]  =  mark_safe ( message ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        context [ ' section_title ' ]  =  section_title 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  context 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-30 19:07:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
											
												Created signup view. Added login after signup.Added signup url to nosystem app urls.py.  Added logout view, Added logout button on nabber, Added password reset form, Added password view , Added password reset html, Added password reset email for nosystemd app. Added confirm_reset_password.html, Added confirm_ reset password  view, Added confirm reset password form, Fixed reset password token generation, Started donation view, Added donation view, Added donation.html, Added donation form, Adding donation.js lib in order to capture stripe payments for nosystem app.
											 
										 
										
											2016-07-22 01:24:32 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								class  PasswordResetView ( PasswordResetViewMixin ) :  
						 
					
						
							
								
									
										
										
										
											2017-06-12 20:51:48 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    site  =  ' dcl ' 
							 
						 
					
						
							
								
									
										
										
										
											2016-06-21 00:10:38 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    template_name  =  ' hosting/reset_password.html ' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    form_class  =  PasswordResetRequestForm 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    success_url  =  reverse_lazy ( ' hosting:login ' ) 
							 
						 
					
						
							
								
									
										
										
											
												Created signup view. Added login after signup.Added signup url to nosystem app urls.py.  Added logout view, Added logout button on nabber, Added password reset form, Added password view , Added password reset html, Added password reset email for nosystemd app. Added confirm_reset_password.html, Added confirm_ reset password  view, Added confirm reset password form, Fixed reset password token generation, Started donation view, Added donation view, Added donation.html, Added donation form, Adding donation.js lib in order to capture stripe payments for nosystem app.
											 
										 
										
											2016-07-22 01:24:32 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    template_email_path  =  ' hosting/emails/ ' 
							 
						 
					
						
							
								
									
										
										
										
											2016-06-21 00:10:38 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
											
												Created signup view. Added login after signup.Added signup url to nosystem app urls.py.  Added logout view, Added logout button on nabber, Added password reset form, Added password view , Added password reset html, Added password reset email for nosystemd app. Added confirm_reset_password.html, Added confirm_ reset password  view, Added confirm reset password form, Fixed reset password token generation, Started donation view, Added donation view, Added donation.html, Added donation form, Adding donation.js lib in order to capture stripe payments for nosystem app.
											 
										 
										
											2016-07-22 01:24:32 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								class  PasswordResetConfirmView ( PasswordResetConfirmViewMixin ) :  
						 
					
						
							
								
									
										
										
										
											2016-06-21 00:10:38 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    template_name  =  ' hosting/confirm_reset_password.html ' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    success_url  =  reverse_lazy ( ' hosting:login ' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-05-12 00:56:35 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    def  post ( self ,  request ,  uidb64 = None ,  token = None ,  * arg ,  * * kwargs ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        try : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            uid  =  urlsafe_base64_decode ( uidb64 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            user  =  CustomUser . objects . get ( pk = uid ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            opennebula_client  =  OpenNebulaManager ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                email = user . email , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                password = user . password , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        except  ( TypeError ,  ValueError ,  OverflowError ,  CustomUser . DoesNotExist ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            user  =  None 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            opennebula_client  =  None 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        form  =  self . form_class ( request . POST ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  user  is  not  None  and  default_token_generator . check_token ( user ,  token ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  form . is_valid ( ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                new_password  =  form . cleaned_data [ ' new_password2 ' ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                user . set_password ( new_password ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                user . save ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                messages . success ( request ,  ' Password has been reset. ' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                # Change opennebula password 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                opennebula_client . change_user_password ( new_password ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  self . form_valid ( form ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            else : 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-25 11:27:49 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                messages . error ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    request ,  ' Password reset has not been successful. ' ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-12 00:56:35 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                form . add_error ( None ,  ' Password reset has not been successful. ' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  self . form_invalid ( form ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        else : 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-25 11:27:49 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            messages . error ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                request ,  ' The reset password link is no longer valid. ' ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-12 00:56:35 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            form . add_error ( None ,  ' The reset password link is no longer valid. ' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  self . form_invalid ( form ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-06-21 00:10:38 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-07-04 23:44:15 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								class  NotificationsView ( LoginRequiredMixin ,  TemplateView ) :  
						 
					
						
							
								
									
										
										
										
											2016-05-29 13:37:43 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    template_name  =  ' hosting/notifications.html ' 
							 
						 
					
						
							
								
									
										
										
										
											2016-07-04 23:44:15 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    login_url  =  reverse_lazy ( ' hosting:login ' ) 
							 
						 
					
						
							
								
									
										
										
										
											2016-05-29 13:37:43 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    def  get_context_data ( self ,  * * kwargs ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        context  =  super ( NotificationsView ,  self ) . get_context_data ( * * kwargs ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        backend  =  stored_messages_settings . STORAGE_BACKEND ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        unread_notifications  =  backend . inbox_list ( self . request . user ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        read_notifications  =  backend . archive_list ( self . request . user ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        context . update ( { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' unread_notifications ' :  unread_notifications , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' all_notifications ' :  read_notifications  +  unread_notifications 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  context 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								class  MarkAsReadNotificationView ( LoginRequiredMixin ,  UpdateView ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    model  =  Message 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    success_url  =  reverse_lazy ( ' hosting:notifications ' ) 
							 
						 
					
						
							
								
									
										
										
										
											2016-07-04 23:44:15 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    login_url  =  reverse_lazy ( ' hosting:login ' ) 
							 
						 
					
						
							
								
									
										
										
										
											2016-05-29 13:37:43 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    fields  =  ' __all__ ' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    def  post ( self ,  * args ,  * * kwargs ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        message  =  self . get_object ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        backend  =  stored_messages_settings . STORAGE_BACKEND ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        backend . archive_store ( [ self . request . user ] ,  message ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        mark_read ( self . request . user ,  message ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  HttpResponseRedirect ( reverse ( ' hosting:notifications ' ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-06-03 13:33:05 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								class  SSHKeyDeleteView ( LoginRequiredMixin ,  DeleteView ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    login_url  =  reverse_lazy ( ' hosting:login ' ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-06-03 15:03:55 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    success_url  =  reverse_lazy ( ' hosting:ssh_keys ' ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-06-03 13:33:05 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    model  =  UserHostingKey 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-06-03 15:03:55 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    def  delete ( self ,  request ,  * args ,  * * kwargs ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        owner  =  self . request . user 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        manager  =  OpenNebulaManager ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        pk  =  self . kwargs . get ( ' pk ' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        # Get user ssh key 
							 
						 
					
						
							
								
									
										
										
										
											2017-06-09 15:36:14 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        public_key  =  UserHostingKey . objects . get ( pk = pk ) . public_key 
							 
						 
					
						
							
								
									
										
										
										
											2017-06-03 15:03:55 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        # Add ssh key to user 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        try : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            manager . remove_public_key ( user = owner ,  public_key = public_key ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        except  ConnectionError : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            pass 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        except  WrongNameError : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            pass 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  super ( SSHKeyDeleteView ,  self ) . delete ( request ,  * args ,  * * kwargs ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								class  SSHKeyListView ( LoginRequiredMixin ,  ListView ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    template_name  =  " hosting/user_keys.html " 
							 
						 
					
						
							
								
									
										
										
										
											2016-07-04 23:44:15 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    login_url  =  reverse_lazy ( ' hosting:login ' ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-06-03 15:03:55 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    context_object_name  =  " keys " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    model  =  UserHostingKey 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    paginate_by  =  10 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ordering  =  ' -id ' 
							 
						 
					
						
							
								
									
										
										
										
											2016-05-20 16:41:42 -04:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-05-11 00:11:33 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-06-03 15:03:55 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    def  get_queryset ( self ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        user  =  self . request . user 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        self . queryset  =  UserHostingKey . objects . filter ( user = user ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  super ( SSHKeyListView ,  self ) . get_queryset ( ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-03 23:19:32 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-06-03 15:03:55 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    def  render_to_response ( self ,  context ,  * * response_kwargs ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  not  self . queryset : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  HttpResponseRedirect ( reverse ( ' hosting:create_ssh_key ' ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  super ( SSHKeyListView ,  self ) . render_to_response ( context ,  * * response_kwargs ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								class  SSHKeyCreateView ( LoginRequiredMixin ,  FormView ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    form_class  =  UserHostingKeyForm 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    model  =  UserHostingKey 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    template_name  =  ' hosting/user_key.html ' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    login_url  =  reverse_lazy ( ' hosting:login ' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    context_object_name  =  " virtual_machine " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    success_url  =  reverse_lazy ( ' hosting:ssh_keys ' ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-03 23:19:32 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    def  get_form_kwargs ( self ) : 
							 
						 
					
						
							
								
									
										
										
										
											2017-06-03 15:03:55 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        kwargs  =  super ( SSHKeyCreateView ,  self ) . get_form_kwargs ( ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-03 23:19:32 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        kwargs . update ( { ' request ' :  self . request } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  kwargs 
							 
						 
					
						
							
								
									
										
										
										
											2016-05-20 16:41:42 -04:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-05-03 23:19:32 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    def  form_valid ( self ,  form ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        form . save ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        context  =  self . get_context_data ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-05-24 10:58:16 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        next_url  =  self . request . session . get ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' next ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            reverse ( ' hosting:create_virtual_machine ' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ' next '  in  self . request . session : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            context . update ( { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                ' next_url ' :  next_url 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            del  ( self . request . session [ ' next ' ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-05-03 23:19:32 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  form . cleaned_data . get ( ' private_key ' ) : 
							 
						 
					
						
							
								
									
										
										
										
											2016-05-24 01:19:49 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            context . update ( { 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-03 23:19:32 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                ' private_key ' :  form . cleaned_data . get ( ' private_key ' ) , 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-11 00:11:33 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                ' key_name ' :  form . cleaned_data . get ( ' name ' ) , 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-21 22:35:43 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                ' form ' :  UserHostingKeyForm ( request = self . request ) , 
							 
						 
					
						
							
								
									
										
										
										
											2016-05-24 01:19:49 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            } ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-03 23:19:32 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-05-25 15:50:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        owner  =  self . request . user 
							 
						 
					
						
							
								
									
										
										
										
											2017-06-03 15:03:55 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        manager  =  OpenNebulaManager ( ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-25 15:50:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        # Get user ssh key 
							 
						 
					
						
							
								
									
										
										
										
											2017-06-11 11:44:14 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        public_key  =  form . cleaned_data . get ( ' public_key ' ,  ' ' ) . decode ( ' utf-8 ' ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-25 15:50:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        # Add ssh key to user 
							 
						 
					
						
							
								
									
										
										
										
											2017-06-03 15:03:55 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        try : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            manager . add_public_key ( user = owner ,  public_key = public_key ,  merge = True ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        except  ConnectionError : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            pass 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        except  WrongNameError : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            pass 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-25 15:50:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-06-03 15:03:55 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  HttpResponseRedirect ( self . success_url ) 
							 
						 
					
						
							
								
									
										
										
										
											2016-05-20 16:41:42 -04:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-05-11 00:11:33 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    def  post ( self ,  request ,  * args ,  * * kwargs ) : 
							 
						 
					
						
							
								
									
										
										
										
											2017-06-03 15:03:55 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        print ( self . request . POST . dict ( ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-11 00:11:33 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        form  =  self . get_form ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  form . is_valid ( ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  self . form_valid ( form ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        else : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  self . form_invalid ( form ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-05-20 16:43:17 -04:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-05-12 01:57:34 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								class  PaymentVMView ( LoginRequiredMixin ,  FormView ) :  
						 
					
						
							
								
									
										
										
										
											2016-04-22 08:36:38 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    template_name  =  ' hosting/payment.html ' 
							 
						 
					
						
							
								
									
										
										
										
											2016-05-12 01:57:34 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    login_url  =  reverse_lazy ( ' hosting:login ' ) 
							 
						 
					
						
							
								
									
										
										
										
											2016-04-23 02:22:44 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    form_class  =  BillingAddressForm 
							 
						 
					
						
							
								
									
										
										
										
											2016-04-22 08:36:38 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-05-11 00:11:33 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    def  get_form_kwargs ( self ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        current_billing_address  =  self . request . user . billing_addresses . first ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        form_kwargs  =  super ( PaymentVMView ,  self ) . get_form_kwargs ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  not  current_billing_address : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  form_kwargs 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        form_kwargs . update ( { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' initial ' :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                ' street_address ' :  current_billing_address . street_address , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                ' city ' :  current_billing_address . city , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                ' postal_code ' :  current_billing_address . postal_code , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                ' country ' :  current_billing_address . country , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  form_kwargs 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-04-22 08:36:38 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    def  get_context_data ( self ,  * * kwargs ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        context  =  super ( PaymentVMView ,  self ) . get_context_data ( * * kwargs ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-11 00:11:33 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        # Get user 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        user  =  self . request . user 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        # Get user last order 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-25 11:27:49 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        last_hosting_order  =  HostingOrder . objects . filter ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            customer__user = user ) . last ( ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-11 00:11:33 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-05-25 11:27:49 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        # If user has already an hosting order, get the credit card data from 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        # it 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-11 00:11:33 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  last_hosting_order : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            credit_card_data  =  last_hosting_order . get_cc_data ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            context . update ( { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                ' credit_card_data ' :  credit_card_data  if  credit_card_data  else  None , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-04-22 08:36:38 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        context . update ( { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' stripe_key ' :  settings . STRIPE_API_PUBLIC_KEY 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ) 
							 
						 
					
						
							
								
									
										
										
										
											2016-05-25 01:23:32 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-04-22 08:36:38 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  context 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-05-12 00:56:35 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    def  get ( self ,  request ,  * args ,  * * kwargs ) : 
							 
						 
					
						
							
								
									
										
										
										
											2017-06-02 00:49:17 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  not  UserHostingKey . objects . filter (  user = self . request . user ) . exists ( ) : 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-12 00:56:35 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            messages . success ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                request , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                ' In order to create a VM, you create/upload your SSH KEY first. ' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-06-03 15:03:55 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            return  HttpResponseRedirect ( reverse ( ' hosting:ssh_keys ' ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-12 00:56:35 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-05-24 10:58:16 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ' next '  in  request . session : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            del  request . session [ ' next ' ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-05-12 00:56:35 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  self . render_to_response ( self . get_context_data ( ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-04-23 02:22:44 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    def  post ( self ,  request ,  * args ,  * * kwargs ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        form  =  self . get_form ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  form . is_valid ( ) : 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-11 00:11:33 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            # Get billing address data 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            billing_address_data  =  form . cleaned_data 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-04-27 01:54:15 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            context  =  self . get_context_data ( ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-11 00:11:33 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-05-13 13:47:53 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            template  =  request . session . get ( ' template ' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            specs  =  request . session . get ( ' specs ' ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-29 12:39:55 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-05-13 13:47:53 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            vm_template_id  =  template . get ( ' id ' ,  1 ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-29 12:39:55 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-05-13 13:47:53 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            final_price  =  specs . get ( ' price ' ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-29 12:39:55 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-04-26 01:16:03 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            token  =  form . cleaned_data . get ( ' token ' ) 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-09 22:13:38 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-05-12 12:07:05 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            owner  =  self . request . user 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-04-26 01:16:03 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            # Get or create stripe customer 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-12 12:07:05 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            customer  =  StripeCustomer . get_or_create ( email = owner . email , 
							 
						 
					
						
							
								
									
										
										
										
											2016-04-26 01:16:03 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                                                    token = token ) 
							 
						 
					
						
							
								
									
										
										
										
											2016-05-21 00:03:17 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            if  not  customer : 
							 
						 
					
						
							
								
									
										
										
										
											2016-05-25 01:23:32 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                form . add_error ( " __all__ " ,  " Invalid credit card " ) 
							 
						 
					
						
							
								
									
										
										
										
											2016-05-21 00:03:17 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                return  self . render_to_response ( self . get_context_data ( form = form ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-04-26 01:16:03 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            # Create Billing Address 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            billing_address  =  form . save ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            # Make stripe charge to a customer 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            stripe_utils  =  StripeUtils ( ) 
							 
						 
					
						
							
								
									
										
										
										
											2016-04-27 01:54:15 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            charge_response  =  stripe_utils . make_charge ( amount = final_price , 
							 
						 
					
						
							
								
									
										
										
										
											2016-04-30 13:55:55 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                                                       customer = customer . stripe_id ) 
							 
						 
					
						
							
								
									
										
										
										
											2016-04-27 01:54:15 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            charge  =  charge_response . get ( ' response_object ' ) 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-22 05:37:22 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-04-30 13:55:55 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            # Check if the payment was approved 
							 
						 
					
						
							
								
									
										
										
										
											2016-04-27 01:54:15 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            if  not  charge : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                context . update ( { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    ' paymentError ' :  charge_response . get ( ' error ' ) , 
							 
						 
					
						
							
								
									
										
										
										
											2016-04-30 13:55:55 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    ' form ' :  form 
							 
						 
					
						
							
								
									
										
										
										
											2016-04-27 01:54:15 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  render ( request ,  self . template_name ,  context ) 
							 
						 
					
						
							
								
									
										
										
										
											2016-04-26 01:16:03 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-04-27 01:54:15 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            charge  =  charge_response . get ( ' response_object ' ) 
							 
						 
					
						
							
								
									
										
										
										
											2016-04-26 01:16:03 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-05-12 12:13:18 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            # Create OpenNebulaManager 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-12 12:07:05 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            manager  =  OpenNebulaManager ( email = owner . email , 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-13 05:50:56 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                                        password = owner . password ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-12 00:56:35 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            # Get user ssh key 
							 
						 
					
						
							
								
									
										
										
										
											2017-06-02 00:49:17 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            if  not  UserHostingKey . objects . filter (  user = self . request . user ) . exists ( ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                context . update ( { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    ' sshError ' :  ' error ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    ' form ' :  form 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  render ( request ,  self . template_name ,  context ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            # For now just get first one 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            user_key  =  UserHostingKey . objects . filter ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    user = self . request . user ) . first ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            
							 
						 
					
						
							
								
									
										
										
										
											2017-05-08 21:54:12 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            # Create a vm using logged user 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-12 12:13:18 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            vm_id  =  manager . create_vm ( 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-13 06:59:57 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                template_id = vm_template_id , 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-25 11:27:49 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                # XXX: Confi 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-13 13:47:53 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                specs = specs , 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-13 06:59:57 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                ssh_key = user_key . public_key , 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-12 12:13:18 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-05-12 12:07:05 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            # Create a Hosting Order 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-12 12:13:18 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            order  =  HostingOrder . create ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                price = final_price , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                vm_id = vm_id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                customer = customer , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                billing_address = billing_address 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-08 21:49:40 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-05-12 12:07:05 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            # Create a Hosting Bill 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-25 11:27:49 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            bill  =  HostingBill . create ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                customer = customer ,  billing_address = billing_address ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-12 12:07:05 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-05-12 12:13:18 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            # Create Billing Address for User if he does not have one 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  not  customer . user . billing_addresses . count ( ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                billing_address_data . update ( { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    ' user ' :  customer . user . id 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-25 11:27:49 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                billing_address_user_form  =  UserBillingAddressForm ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    billing_address_data ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-12 12:13:18 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                billing_address_user_form . is_valid ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                billing_address_user_form . save ( ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-12 12:07:05 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-04-27 01:54:15 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            # Associate an order with a stripe payment 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            order . set_stripe_charge ( charge ) 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-30 01:09:23 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-04-27 01:54:15 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            # If the Stripe payment was successed, set order status approved 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            order . set_approved ( ) 
							 
						 
					
						
							
								
									
										
										
										
											2016-05-25 01:23:32 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-05-12 12:07:05 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            vm  =  VirtualMachineSerializer ( manager . get_vm ( vm_id ) ) . data 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-29 12:39:55 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-05-25 01:23:32 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            # Send notification to ungleich as soon as VM has been booked 
							 
						 
					
						
							
								
									
										
										
										
											2016-06-05 15:49:51 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            context  =  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-12 12:07:05 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                ' vm ' :  vm , 
							 
						 
					
						
							
								
									
										
										
										
											2016-06-16 01:04:48 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                ' order ' :  order , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                ' base_url ' :  " {0} :// {1} " . format ( request . scheme ,  request . get_host ( ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-06-05 15:49:51 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2016-05-25 01:23:32 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            email_data  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                ' subject ' :  ' New VM request ' , 
							 
						 
					
						
							
								
									
										
										
										
											2016-06-16 01:04:48 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                ' to ' :  request . user . email , 
							 
						 
					
						
							
								
									
										
										
										
											2016-06-05 15:49:51 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                ' context ' :  context , 
							 
						 
					
						
							
								
									
										
										
										
											2016-05-25 01:23:32 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                ' template_name ' :  ' new_booked_vm ' , 
							 
						 
					
						
							
								
									
										
										
											
												Created signup view. Added login after signup.Added signup url to nosystem app urls.py.  Added logout view, Added logout button on nabber, Added password reset form, Added password view , Added password reset html, Added password reset email for nosystemd app. Added confirm_reset_password.html, Added confirm_ reset password  view, Added confirm reset password form, Fixed reset password token generation, Started donation view, Added donation view, Added donation.html, Added donation form, Adding donation.js lib in order to capture stripe payments for nosystem app.
											 
										 
										
											2016-07-22 01:24:32 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                ' template_path ' :  ' hosting/emails/ ' 
							 
						 
					
						
							
								
									
										
										
										
											2016-05-25 01:23:32 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            email  =  BaseEmail ( * * email_data ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            email . send ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-05-03 00:59:40 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            return  HttpResponseRedirect ( reverse ( ' hosting:orders ' ,  kwargs = { ' pk ' :  order . id } ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2016-04-23 02:22:44 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        else : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  self . form_invalid ( form ) 
							 
						 
					
						
							
								
									
										
										
										
											2016-04-27 01:54:15 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-04-30 13:55:55 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-07-10 22:08:51 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								class  OrdersHostingDetailView ( PermissionRequiredMixin ,  LoginRequiredMixin ,  DetailView ) :  
						 
					
						
							
								
									
										
										
										
											2016-05-03 00:59:40 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    template_name  =  " hosting/order_detail.html " 
							 
						 
					
						
							
								
									
										
										
										
											2016-05-14 02:12:42 -04:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    context_object_name  =  " order " 
							 
						 
					
						
							
								
									
										
										
										
											2016-04-29 01:53:24 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    login_url  =  reverse_lazy ( ' hosting:login ' ) 
							 
						 
					
						
							
								
									
										
										
										
											2016-07-10 22:08:51 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    permission_required  =  [ ' view_hostingorder ' ] 
							 
						 
					
						
							
								
									
										
										
										
											2016-05-03 00:59:40 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    model  =  HostingOrder 
							 
						 
					
						
							
								
									
										
										
										
											2016-04-27 01:54:15 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-05-12 12:07:05 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    def  get_context_data ( self ,  * * kwargs ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        # Get context 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        context  =  super ( DetailView ,  self ) . get_context_data ( * * kwargs ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        obj  =  self . get_object ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        owner  =  self . request . user 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        manager  =  OpenNebulaManager ( email = owner . email , 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-13 05:50:56 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                                    password = owner . password ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-14 12:22:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        try : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            vm  =  manager . get_vm ( obj . vm_id ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            context [ ' vm ' ]  =  VirtualMachineSerializer ( vm ) . data 
							 
						 
					
						
							
								
									
										
										
										
											2017-06-15 07:30:47 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        except  WrongIdError : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            messages . error ( self . request , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                           ' The VM you are looking for is unavailable at the moment.  \
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            Please  contact  Data  Center  Light  support . ' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                           ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            self . kwargs [ ' error ' ]  =  ' WrongIdError ' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            context [ ' error ' ]  =  ' WrongIdError ' 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-14 12:22:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        except  ConnectionRefusedError : 
							 
						 
					
						
							
								
									
										
										
										
											2017-06-15 07:30:47 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            messages . error ( self . request , 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-25 11:27:49 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                           ' In order to create a VM, you need to create/upload your SSH KEY first. ' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                           ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-12 12:13:18 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  context 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-12 12:07:05 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-05-11 00:11:33 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-05-03 00:59:40 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								class  OrdersHostingListView ( LoginRequiredMixin ,  ListView ) :  
						 
					
						
							
								
									
										
										
										
											2016-04-29 01:53:24 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    template_name  =  " hosting/orders.html " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    login_url  =  reverse_lazy ( ' hosting:login ' ) 
							 
						 
					
						
							
								
									
										
										
										
											2016-05-03 00:59:40 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    context_object_name  =  " orders " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    model  =  HostingOrder 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    paginate_by  =  10 
							 
						 
					
						
							
								
									
										
										
										
											2016-05-14 02:12:42 -04:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ordering  =  ' -id ' 
							 
						 
					
						
							
								
									
										
										
										
											2016-04-29 01:53:24 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-05-03 00:59:40 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    def  get_queryset ( self ) : 
							 
						 
					
						
							
								
									
										
										
										
											2016-04-29 01:53:24 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        user  =  self . request . user 
							 
						 
					
						
							
								
									
										
										
										
											2016-05-03 00:59:40 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        self . queryset  =  HostingOrder . objects . filter ( customer__user = user ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  super ( OrdersHostingListView ,  self ) . get_queryset ( ) 
							 
						 
					
						
							
								
									
										
										
										
											2016-04-29 01:53:24 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-05-24 01:19:49 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								class  OrdersHostingDeleteView ( LoginRequiredMixin ,  DeleteView ) :  
						 
					
						
							
								
									
										
										
										
											2016-05-29 13:37:43 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    login_url  =  reverse_lazy ( ' hosting:login ' ) 
							 
						 
					
						
							
								
									
										
										
										
											2016-05-19 00:58:28 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    success_url  =  reverse_lazy ( ' hosting:orders ' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    model  =  HostingOrder 
							 
						 
					
						
							
								
									
										
										
										
											2016-04-29 01:53:24 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-05-29 13:37:43 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-05-03 00:59:40 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								class  VirtualMachinesPlanListView ( LoginRequiredMixin ,  ListView ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    template_name  =  " hosting/virtual_machines.html " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    login_url  =  reverse_lazy ( ' hosting:login ' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    context_object_name  =  " vms " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    paginate_by  =  10 
							 
						 
					
						
							
								
									
										
										
										
											2016-05-14 02:12:42 -04:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ordering  =  ' -id ' 
							 
						 
					
						
							
								
									
										
										
										
											2016-04-29 01:53:24 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-05-03 00:59:40 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    def  get_queryset ( self ) : 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-12 12:07:05 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        owner  =  self . request . user 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        manager  =  OpenNebulaManager ( email = owner . email , 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-13 05:50:56 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                                    password = owner . password ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-14 12:22:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        try : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            queryset  =  manager . get_vms ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            serializer  =  VirtualMachineSerializer ( queryset ,  many = True ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  serializer . data 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        except  ConnectionRefusedError : 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-25 11:27:49 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            messages . error ( self . request , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                           ' We could not load your VMs due to a backend connection  \
 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-14 12:22:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                error .  Please  try  again  in  a  few  minutes ' 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-25 11:27:49 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                           ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-14 12:22:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            self . kwargs [ ' error ' ]  =  ' connection ' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  [ ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    def  get_context_data ( self ,  * * kwargs ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        error  =  self . kwargs . get ( ' error ' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  error  is  not  None : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            print ( error ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-25 11:27:49 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            context  =  { ' error ' :  ' connection ' } 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-14 12:22:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        else : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            context  =  super ( ListView ,  self ) . get_context_data ( * * kwargs ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  context 
							 
						 
					
						
							
								
									
										
										
										
											2016-05-04 00:16:41 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-05-03 23:19:32 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								class  CreateVirtualMachinesView ( LoginRequiredMixin ,  View ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    template_name  =  " hosting/create_virtual_machine.html " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    login_url  =  reverse_lazy ( ' hosting:login ' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    def  get ( self ,  request ,  * args ,  * * kwargs ) : 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-12 00:56:35 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-06-02 00:49:17 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  not  UserHostingKey . objects . filter (  user = self . request . user ) . exists ( ) : 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-12 00:56:35 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            messages . success ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                request , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                ' In order to create a VM, you need to create/upload your SSH KEY first. ' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-06-03 15:03:55 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            return  HttpResponseRedirect ( reverse ( ' hosting:ssh_keys ' ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-12 00:56:35 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-05-14 12:22:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        try : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            manager  =  OpenNebulaManager ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            templates  =  manager . get_templates ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            configuration_options  =  HostingPlan . get_serialized_configs ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            context  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                ' templates ' :  VirtualMachineTemplateSerializer ( templates ,  many = True ) . data , 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-24 10:58:16 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                ' configuration_options ' :  configuration_options , 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-14 12:22:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        except : 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-24 10:58:16 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            messages . error ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                request , 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-14 12:22:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                ' We could not load the VM templates due to a backend connection  \
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                error .  Please  try  again  in  a  few  minutes ' 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-24 10:58:16 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-14 12:22:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            context  =  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-24 10:58:16 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                ' error ' :  ' connection ' 
							 
						 
					
						
							
								
									
										
										
										
											2017-06-02 00:49:17 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            }         
							 
						 
					
						
							
								
									
										
										
										
											2017-05-12 12:13:18 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-05-03 23:19:32 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  render ( request ,  self . template_name ,  context ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    def  post ( self ,  request ) : 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-13 06:59:57 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        manager  =  OpenNebulaManager ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        template_id  =  request . POST . get ( ' vm_template_id ' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        template  =  manager . get_template ( template_id ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-13 13:47:53 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        configuration_id  =  int ( request . POST . get ( ' configuration ' ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        configuration  =  HostingPlan . objects . get ( id = configuration_id ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-25 11:27:49 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        request . session [ ' template ' ]  =  VirtualMachineTemplateSerializer ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            template ) . data 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-13 13:47:53 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-05-25 11:27:49 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        request . session [ ' specs ' ]  =  configuration . serialize ( ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-03 23:19:32 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  redirect ( reverse ( ' hosting:payment ' ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-05-12 12:07:05 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								class  VirtualMachineView ( LoginRequiredMixin ,  View ) :  
						 
					
						
							
								
									
										
										
										
											2016-05-04 00:16:41 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    template_name  =  " hosting/virtual_machine_detail.html " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    login_url  =  reverse_lazy ( ' hosting:login ' ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-08 19:02:29 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-05-12 00:56:35 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    def  get_object ( self ) : 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-12 12:07:05 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        owner  =  self . request . user 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-12 12:13:18 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        vm  =  None 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        manager  =  OpenNebulaManager ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            email = owner . email , 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-13 05:50:56 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            password = owner . password 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-12 12:13:18 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-08 21:49:40 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        vm_id  =  self . kwargs . get ( ' pk ' ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-12 00:56:35 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        try : 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-12 12:07:05 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            vm  =  manager . get_vm ( vm_id ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-14 12:22:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            return  vm 
							 
						 
					
						
							
								
									
										
										
										
											2017-06-17 14:46:11 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        except  WrongIdError : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            messages . error ( self . request , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                           _ ( ' We could not find the requested VM. Please  \
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                           contact  Data  Center  Light  Support . ' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                           ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  None 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-14 12:22:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        except  ConnectionRefusedError : 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-25 11:27:49 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            messages . error ( self . request , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                           ' We could not load your VM due to a backend connection  \
 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-14 12:22:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                error .  Please  try  again  in  a  few  minutes ' 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-25 11:27:49 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                           ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-14 12:22:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            return  None 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-12 00:56:35 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        except  Exception  as  error : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            print ( error ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            raise  Http404 ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    def  get_success_url ( self ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        final_url  =  reverse ( ' hosting:virtual_machines ' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  final_url 
							 
						 
					
						
							
								
									
										
										
										
											2016-06-09 23:50:49 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-05-08 19:02:29 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    def  get ( self ,  request ,  * args ,  * * kwargs ) : 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-12 12:13:18 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        vm  =  self . get_object ( ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-06-17 14:46:11 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  vm  is  None : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  redirect ( reverse ( ' hosting:virtual_machines ' ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-25 11:27:49 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        try : 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-14 12:22:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            serializer  =  VirtualMachineSerializer ( vm ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            context  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                ' virtual_machine ' :  serializer . data , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        except : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            pass 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-05-08 19:02:29 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  render ( request ,  self . template_name ,  context ) 
							 
						 
					
						
							
								
									
										
										
										
											2016-06-09 23:50:49 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-05-12 00:56:35 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    def  post ( self ,  request ,  * args ,  * * kwargs ) : 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-12 12:13:18 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        owner  =  self . request . user 
							 
						 
					
						
							
								
									
										
										
										
											2016-06-09 23:50:49 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        vm  =  self . get_object ( ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-12 00:56:35 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        opennebula_vm_id  =  self . kwargs . get ( ' pk ' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-05-12 12:13:18 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        manager  =  OpenNebulaManager ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            email = owner . email , 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-13 05:50:56 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            password = owner . password 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-12 12:13:18 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        terminated  =  manager . delete_vm ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            vm . id 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-12 00:56:35 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  not  terminated : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            messages . error ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                request , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                ' Error terminating VM  %s '  %  ( opennebula_vm_id ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  HttpResponseRedirect ( self . get_success_url ( ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-06-09 23:50:49 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        context  =  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-06-16 01:04:48 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            ' vm ' :  vm , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' base_url ' :  " {0} :// {1} " . format ( self . request . scheme ,  self . request . get_host ( ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2016-06-09 23:50:49 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        email_data  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' subject ' :  ' Virtual machine plan canceled ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' to ' :  self . request . user . email , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' context ' :  context , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' template_name ' :  ' vm_status_changed ' , 
							 
						 
					
						
							
								
									
										
										
											
												Created signup view. Added login after signup.Added signup url to nosystem app urls.py.  Added logout view, Added logout button on nabber, Added password reset form, Added password view , Added password reset html, Added password reset email for nosystemd app. Added confirm_reset_password.html, Added confirm_ reset password  view, Added confirm reset password form, Fixed reset password token generation, Started donation view, Added donation view, Added donation.html, Added donation form, Adding donation.js lib in order to capture stripe payments for nosystem app.
											 
										 
										
											2016-07-22 01:24:32 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            ' template_path ' :  ' hosting/emails/ ' 
							 
						 
					
						
							
								
									
										
										
										
											2016-06-09 23:50:49 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        email  =  BaseEmail ( * * email_data ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        email . send ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-05-12 00:56:35 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        messages . error ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            request , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' VM  %s  terminated successfully '  %  ( opennebula_vm_id ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-06-09 23:50:49 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  HttpResponseRedirect ( self . get_success_url ( ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-05 14:59:11 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-05-12 00:56:35 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-05-13 20:19:09 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								class  HostingBillListView ( PermissionRequiredMixin ,  LoginRequiredMixin ,  ListView ) :  
						 
					
						
							
								
									
										
										
										
											2017-05-05 14:59:11 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    template_name  =  " hosting/bills.html " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    login_url  =  reverse_lazy ( ' hosting:login ' ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-13 20:19:09 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    permission_required  =  [ ' view_hostingview ' ] 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-05 14:59:11 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    context_object_name  =  " users " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    model  =  StripeCustomer 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    paginate_by  =  10 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ordering  =  ' -id ' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-05-12 00:56:35 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-05-05 14:59:11 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								class  HostingBillDetailView ( PermissionRequiredMixin ,  LoginRequiredMixin ,  DetailView ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    template_name  =  " hosting/bill_detail.html " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    login_url  =  reverse_lazy ( ' hosting:login ' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    permission_required  =  [ ' view_hostingview ' ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    context_object_name  =  " bill " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    model  =  HostingBill 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    def  get_object ( self ,  queryset = None ) : 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-12 00:56:35 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        # Get HostingBill for primary key (Select from customer users) 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-05 14:59:11 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        pk  =  self . kwargs [ ' pk ' ] 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-08 01:56:02 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        object  =  HostingBill . objects . filter ( customer__id = pk ) . first ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  object  is  None : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            self . template_name  =  ' hosting/bill_error.html ' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  object 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-05 14:59:11 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    def  get_context_data ( self ,  * * kwargs ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        # Get context 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        context  =  super ( DetailView ,  self ) . get_context_data ( * * kwargs ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-12 12:07:05 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        owner  =  self . request . user 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        manager  =  OpenNebulaManager ( email = owner . email , 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-13 05:50:56 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                                    password = owner . password ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-07 06:43:28 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        # Get vms 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-12 12:07:05 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        queryset  =  manager . get_vms ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        vms  =  VirtualMachineSerializer ( queryset ,  many = True ) . data 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-13 13:47:53 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        # Set total price 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        bill  =  context [ ' bill ' ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        bill . total_price  =  0.0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        for  vm  in  vms : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            bill . total_price  + =  vm [ ' price ' ] 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-12 12:07:05 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        context [ ' vms ' ]  =  vms 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-08 01:56:02 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  context