From 8a301004888ca11dee3ef502aa5073d2e97aadd9 Mon Sep 17 00:00:00 2001 From: PCoder Date: Wed, 5 Sep 2018 23:26:51 +0200 Subject: [PATCH] Use price in stripe plan name too --- datacenterlight/tests.py | 3 ++- datacenterlight/views.py | 22 ++++++++++++++-------- hosting/views.py | 22 ++++++++++++++-------- utils/stripe_utils.py | 29 +++++++++++++++++++++-------- 4 files changed, 51 insertions(+), 25 deletions(-) diff --git a/datacenterlight/tests.py b/datacenterlight/tests.py index c755cc6f..ca1bb930 100644 --- a/datacenterlight/tests.py +++ b/datacenterlight/tests.py @@ -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, diff --git a/datacenterlight/views.py b/datacenterlight/views.py index bf87d9b9..be4e5700 100644 --- a/datacenterlight/views.py +++ b/datacenterlight/views.py @@ -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, - memory=memory, - disk_size=disk_size) - stripe_plan_id = StripeUtils.get_stripe_plan_id(cpu=cpu, - ram=memory, - ssd=disk_size, - version=1, - app='dcl') + plan_name = StripeUtils.get_stripe_plan_name( + cpu=cpu, + memory=memory, + 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', + price=amount_to_be_charged + ) stripe_plan = stripe_utils.get_or_create_stripe_plan( amount=amount_to_be_charged, name=plan_name, diff --git a/hosting/views.py b/hosting/views.py index 6af1885b..5e006fee 100644 --- a/hosting/views.py +++ b/hosting/views.py @@ -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, - memory=memory, - disk_size=disk_size) - stripe_plan_id = StripeUtils.get_stripe_plan_id(cpu=cpu, - ram=memory, - ssd=disk_size, - version=1, - app='dcl') + plan_name = StripeUtils.get_stripe_plan_name( + cpu=cpu, + memory=memory, + 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', + price=amount_to_be_charged + ) stripe_plan = stripe_utils.get_or_create_stripe_plan( amount=amount_to_be_charged, name=plan_name, diff --git a/utils/stripe_utils.py b/utils/stripe_utils.py index 2045df8e..0c3b112c 100644 --- a/utils/stripe_utils.py +++ b/utils/stripe_utils.py @@ -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) - return stripe_plan_id_string + plan=dcl_plan_string + ) + if price is not None: + stripe_plan_id_string_with_price = '{}-{}chf'.format( + stripe_plan_id_string, + price + ) + 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( - cpu=cpu, - memory=memory, - disk_size=disk_size) + return "{cpu} Cores, {memory} GB RAM, {disk_size} GB SSD " \ + "@ {price} CHF".format( + cpu=cpu, + memory=memory, + disk_size=disk_size, + price=price + ) @handleStripeError def set_subscription_meta_data(self, subscription_id, meta_data):