Refactor code and add following fixes
- create_vm_task receiving stripe_subscription_id instead of object
    - Fix: use BillingAddress instead of UserBillingAddress in
    HostingOrder, HostingPlan
    - Remove DictDotLookup class
	
	
This commit is contained in:
		
					parent
					
						
							
								4ce1ff073a
							
						
					
				
			
			
				commit
				
					
						5783e42171
					
				
			
		
					 1 changed files with 12 additions and 35 deletions
				
			
		|  | @ -51,14 +51,20 @@ def retry_task(task, exception=None): | ||||||
| def create_vm_task(self, vm_template_id, user, specs, template, | def create_vm_task(self, vm_template_id, user, specs, template, | ||||||
|                    stripe_customer_id, billing_address_data, |                    stripe_customer_id, billing_address_data, | ||||||
|                    billing_address_id, |                    billing_address_id, | ||||||
|                    charge, cc_details): |                    stripe_subscription_id, cc_details): | ||||||
|     logger.debug( |     logger.debug( | ||||||
|         "Running create_vm_task on {}".format(current_task.request.hostname)) |         "Running create_vm_task on {}".format(current_task.request.hostname)) | ||||||
|     vm_id = None |     vm_id = None | ||||||
|     try: |     try: | ||||||
|         final_price = specs.get('price') |         final_price = specs.get('price') | ||||||
|         billing_address = BillingAddress.objects.filter( |         billing_address = BillingAddress( | ||||||
|             id=billing_address_id).first() |             cardholder_name=billing_address_data['cardholder_name'], | ||||||
|  |             street_address=billing_address_data['street_address'], | ||||||
|  |             city=billing_address_data['city'], | ||||||
|  |             postal_code=billing_address_data['postal_code'], | ||||||
|  |             country=billing_address_data['country'] | ||||||
|  |         ) | ||||||
|  |         billing_address.save() | ||||||
|         customer = StripeCustomer.objects.filter(id=stripe_customer_id).first() |         customer = StripeCustomer.objects.filter(id=stripe_customer_id).first() | ||||||
| 
 | 
 | ||||||
|         if 'pass' in user: |         if 'pass' in user: | ||||||
|  | @ -111,8 +117,7 @@ def create_vm_task(self, vm_template_id, user, specs, template, | ||||||
|             billing_address_user_form.save() |             billing_address_user_form.save() | ||||||
| 
 | 
 | ||||||
|         # Associate an order with a stripe subscription |         # Associate an order with a stripe subscription | ||||||
|         charge_object = DictDotLookup(charge) |         order.set_subscription_id(stripe_subscription_id, cc_details) | ||||||
|         order.set_subscription_id(charge_object, cc_details) |  | ||||||
| 
 | 
 | ||||||
|         # If the Stripe payment succeeds, set order status approved |         # If the Stripe payment succeeds, set order status approved | ||||||
|         order.set_approved() |         order.set_approved() | ||||||
|  | @ -183,7 +188,8 @@ def create_vm_task(self, vm_template_id, user, specs, template, | ||||||
|                             public_keys] |                             public_keys] | ||||||
|                     if len(keys) > 0: |                     if len(keys) > 0: | ||||||
|                         logger.debug( |                         logger.debug( | ||||||
|                             "Calling configure on {host} for {num_keys} keys".format( |                             "Calling configure on {host} for " | ||||||
|  |                             "{num_keys} keys".format( | ||||||
|                                 host=new_host, num_keys=len(keys))) |                                 host=new_host, num_keys=len(keys))) | ||||||
|                         # Let's delay the task by 75 seconds to be sure |                         # Let's delay the task by 75 seconds to be sure | ||||||
|                         # that we run the cdist configure after the host |                         # that we run the cdist configure after the host | ||||||
|  | @ -212,32 +218,3 @@ def create_vm_task(self, vm_template_id, user, specs, template, | ||||||
|             return |             return | ||||||
| 
 | 
 | ||||||
|     return vm_id |     return vm_id | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| class DictDotLookup(object): |  | ||||||
|     """ |  | ||||||
|     Creates objects that behave much like a dictionaries, but allow nested |  | ||||||
|     key access using object '.' (dot) lookups. |  | ||||||
|     """ |  | ||||||
| 
 |  | ||||||
|     def __init__(self, d): |  | ||||||
|         for k in d: |  | ||||||
|             if isinstance(d[k], dict): |  | ||||||
|                 self.__dict__[k] = DictDotLookup(d[k]) |  | ||||||
|             elif isinstance(d[k], (list, tuple)): |  | ||||||
|                 l = [] |  | ||||||
|                 for v in d[k]: |  | ||||||
|                     if isinstance(v, dict): |  | ||||||
|                         l.append(DictDotLookup(v)) |  | ||||||
|                     else: |  | ||||||
|                         l.append(v) |  | ||||||
|                 self.__dict__[k] = l |  | ||||||
|             else: |  | ||||||
|                 self.__dict__[k] = d[k] |  | ||||||
| 
 |  | ||||||
|     def __getitem__(self, name): |  | ||||||
|         if name in self.__dict__: |  | ||||||
|             return self.__dict__[name] |  | ||||||
| 
 |  | ||||||
|     def __iter__(self): |  | ||||||
|         return iter(self.__dict__.keys()) |  | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue