Merge pull request #663 from pcoder/bugfix/plan-with-price
Use price in stripe plan name too
This commit is contained in:
		
				commit
				
					
						c6612153e8
					
				
			
		
					 5 changed files with 56 additions and 28 deletions
				
			
		|  | @ -105,7 +105,8 @@ class CeleryTaskTestCase(TestCase): | |||
|                                             disk_size=disk_size) | ||||
|         plan_name = StripeUtils.get_stripe_plan_name(cpu=cpu, | ||||
|                                                      memory=memory, | ||||
|                                                      disk_size=disk_size) | ||||
|                                                      disk_size=disk_size, | ||||
|                                                      price=amount_to_be_charged) | ||||
|         stripe_plan_id = StripeUtils.get_stripe_plan_id(cpu=cpu, | ||||
|                                                         ram=memory, | ||||
|                                                         ssd=disk_size, | ||||
|  |  | |||
|  | @ -508,14 +508,20 @@ class OrderConfirmationView(DetailView): | |||
|         memory = specs.get('memory') | ||||
|         disk_size = specs.get('disk_size') | ||||
|         amount_to_be_charged = specs.get('total_price') | ||||
|         plan_name = StripeUtils.get_stripe_plan_name(cpu=cpu, | ||||
|         plan_name = StripeUtils.get_stripe_plan_name( | ||||
|             cpu=cpu, | ||||
|             memory=memory, | ||||
|                                                      disk_size=disk_size) | ||||
|         stripe_plan_id = StripeUtils.get_stripe_plan_id(cpu=cpu, | ||||
|             disk_size=disk_size, | ||||
|             price=amount_to_be_charged | ||||
|         ) | ||||
|         stripe_plan_id = StripeUtils.get_stripe_plan_id( | ||||
|             cpu=cpu, | ||||
|             ram=memory, | ||||
|             ssd=disk_size, | ||||
|             version=1, | ||||
|                                                         app='dcl') | ||||
|             app='dcl', | ||||
|             price=amount_to_be_charged | ||||
|         ) | ||||
|         stripe_plan = stripe_utils.get_or_create_stripe_plan( | ||||
|             amount=amount_to_be_charged, | ||||
|             name=plan_name, | ||||
|  |  | |||
|  | @ -1032,14 +1032,20 @@ class OrdersHostingDetailView(LoginRequiredMixin, DetailView): | |||
|         memory = specs.get('memory') | ||||
|         disk_size = specs.get('disk_size') | ||||
|         amount_to_be_charged = specs.get('total_price') | ||||
|         plan_name = StripeUtils.get_stripe_plan_name(cpu=cpu, | ||||
|         plan_name = StripeUtils.get_stripe_plan_name( | ||||
|             cpu=cpu, | ||||
|             memory=memory, | ||||
|                                                      disk_size=disk_size) | ||||
|         stripe_plan_id = StripeUtils.get_stripe_plan_id(cpu=cpu, | ||||
|             disk_size=disk_size, | ||||
|             price=amount_to_be_charged | ||||
|         ) | ||||
|         stripe_plan_id = StripeUtils.get_stripe_plan_id( | ||||
|             cpu=cpu, | ||||
|             ram=memory, | ||||
|             ssd=disk_size, | ||||
|             version=1, | ||||
|                                                         app='dcl') | ||||
|             app='dcl', | ||||
|             price=amount_to_be_charged | ||||
|         ) | ||||
|         stripe_plan = stripe_utils.get_or_create_stripe_plan( | ||||
|             amount=amount_to_be_charged, | ||||
|             name=plan_name, | ||||
|  |  | |||
|  | @ -1,6 +1,7 @@ | |||
| import decimal | ||||
| import logging | ||||
| import subprocess | ||||
| 
 | ||||
| from oca.pool import WrongIdError | ||||
| 
 | ||||
| from datacenterlight.models import VMPricing | ||||
|  | @ -80,7 +81,7 @@ def get_vm_price(cpu, memory, disk_size, hdd_size=0, pricing_name='default'): | |||
|              (decimal.Decimal(hdd_size) * pricing.hdd_unit_price)) | ||||
|     cents = decimal.Decimal('.01') | ||||
|     price = price.quantize(cents, decimal.ROUND_HALF_UP) | ||||
|     return float(price) | ||||
|     return round(float(price), 2) | ||||
| 
 | ||||
| 
 | ||||
| def get_vm_price_with_vat(cpu, memory, ssd_size, hdd_size=0, | ||||
|  | @ -126,9 +127,10 @@ def get_vm_price_with_vat(cpu, memory, ssd_size, hdd_size=0, | |||
|     vat = vat.quantize(cents, decimal.ROUND_HALF_UP) | ||||
|     discount = { | ||||
|         'name': pricing.discount_name, | ||||
|         'amount': float(pricing.discount_amount), | ||||
|         'amount': round(float(pricing.discount_amount),2) | ||||
|     } | ||||
|     return float(price), float(vat), float(vat_percent), discount | ||||
|     return (round(float(price), 2), round(float(vat), 2), | ||||
|             round(float(vat_percent)), discount) | ||||
| 
 | ||||
| 
 | ||||
| def ping_ok(host_ipv6): | ||||
|  |  | |||
|  | @ -291,7 +291,8 @@ class StripeUtils(object): | |||
|         return charge | ||||
| 
 | ||||
|     @staticmethod | ||||
|     def get_stripe_plan_id(cpu, ram, ssd, version, app='dcl', hdd=None): | ||||
|     def get_stripe_plan_id(cpu, ram, ssd, version, app='dcl', hdd=None, | ||||
|                            price=None): | ||||
|         """ | ||||
|         Returns the Stripe plan id string of the form | ||||
|         `dcl-v1-cpu-2-ram-5gb-ssd-10gb` based on the input parameters | ||||
|  | @ -303,6 +304,7 @@ class StripeUtils(object): | |||
|         :param version: The version of the Stripe plans | ||||
|         :param app: The application to which the stripe plan belongs | ||||
|         to. By default it is 'dcl' | ||||
|         :param price: The price for this plan | ||||
|         :return: A string of the form `dcl-v1-cpu-2-ram-5gb-ssd-10gb` | ||||
|         """ | ||||
|         dcl_plan_string = 'cpu-{cpu}-ram-{ram}gb-ssd-{ssd}gb'.format(cpu=cpu, | ||||
|  | @ -314,19 +316,30 @@ class StripeUtils(object): | |||
|         stripe_plan_id_string = '{app}-v{version}-{plan}'.format( | ||||
|             app=app, | ||||
|             version=version, | ||||
|             plan=dcl_plan_string) | ||||
|             plan=dcl_plan_string | ||||
|         ) | ||||
|         if price is not None: | ||||
|             stripe_plan_id_string_with_price = '{}-{}chf'.format( | ||||
|                 stripe_plan_id_string, | ||||
|                 round(price, 2) | ||||
|             ) | ||||
|             return stripe_plan_id_string_with_price | ||||
|         else: | ||||
|             return stripe_plan_id_string | ||||
| 
 | ||||
|     @staticmethod | ||||
|     def get_stripe_plan_name(cpu, memory, disk_size): | ||||
|     def get_stripe_plan_name(cpu, memory, disk_size, price): | ||||
|         """ | ||||
|         Returns the Stripe plan name | ||||
|         :return: | ||||
|         """ | ||||
|         return "{cpu} Cores, {memory} GB RAM, {disk_size} GB SSD".format( | ||||
|         return "{cpu} Cores, {memory} GB RAM, {disk_size} GB SSD, " \ | ||||
|                "{price} CHF".format( | ||||
|                     cpu=cpu, | ||||
|                     memory=memory, | ||||
|             disk_size=disk_size) | ||||
|                     disk_size=disk_size, | ||||
|                     price=round(price, 2) | ||||
|                 ) | ||||
| 
 | ||||
|     @handleStripeError | ||||
|     def set_subscription_meta_data(self, subscription_id, meta_data): | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue