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)
|
disk_size=disk_size)
|
||||||
plan_name = StripeUtils.get_stripe_plan_name(cpu=cpu,
|
plan_name = StripeUtils.get_stripe_plan_name(cpu=cpu,
|
||||||
memory=memory,
|
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,
|
stripe_plan_id = StripeUtils.get_stripe_plan_id(cpu=cpu,
|
||||||
ram=memory,
|
ram=memory,
|
||||||
ssd=disk_size,
|
ssd=disk_size,
|
||||||
|
|
|
@ -508,14 +508,20 @@ class OrderConfirmationView(DetailView):
|
||||||
memory = specs.get('memory')
|
memory = specs.get('memory')
|
||||||
disk_size = specs.get('disk_size')
|
disk_size = specs.get('disk_size')
|
||||||
amount_to_be_charged = specs.get('total_price')
|
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,
|
memory=memory,
|
||||||
disk_size=disk_size)
|
disk_size=disk_size,
|
||||||
stripe_plan_id = StripeUtils.get_stripe_plan_id(cpu=cpu,
|
price=amount_to_be_charged
|
||||||
|
)
|
||||||
|
stripe_plan_id = StripeUtils.get_stripe_plan_id(
|
||||||
|
cpu=cpu,
|
||||||
ram=memory,
|
ram=memory,
|
||||||
ssd=disk_size,
|
ssd=disk_size,
|
||||||
version=1,
|
version=1,
|
||||||
app='dcl')
|
app='dcl',
|
||||||
|
price=amount_to_be_charged
|
||||||
|
)
|
||||||
stripe_plan = stripe_utils.get_or_create_stripe_plan(
|
stripe_plan = stripe_utils.get_or_create_stripe_plan(
|
||||||
amount=amount_to_be_charged,
|
amount=amount_to_be_charged,
|
||||||
name=plan_name,
|
name=plan_name,
|
||||||
|
|
|
@ -1032,14 +1032,20 @@ class OrdersHostingDetailView(LoginRequiredMixin, DetailView):
|
||||||
memory = specs.get('memory')
|
memory = specs.get('memory')
|
||||||
disk_size = specs.get('disk_size')
|
disk_size = specs.get('disk_size')
|
||||||
amount_to_be_charged = specs.get('total_price')
|
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,
|
memory=memory,
|
||||||
disk_size=disk_size)
|
disk_size=disk_size,
|
||||||
stripe_plan_id = StripeUtils.get_stripe_plan_id(cpu=cpu,
|
price=amount_to_be_charged
|
||||||
|
)
|
||||||
|
stripe_plan_id = StripeUtils.get_stripe_plan_id(
|
||||||
|
cpu=cpu,
|
||||||
ram=memory,
|
ram=memory,
|
||||||
ssd=disk_size,
|
ssd=disk_size,
|
||||||
version=1,
|
version=1,
|
||||||
app='dcl')
|
app='dcl',
|
||||||
|
price=amount_to_be_charged
|
||||||
|
)
|
||||||
stripe_plan = stripe_utils.get_or_create_stripe_plan(
|
stripe_plan = stripe_utils.get_or_create_stripe_plan(
|
||||||
amount=amount_to_be_charged,
|
amount=amount_to_be_charged,
|
||||||
name=plan_name,
|
name=plan_name,
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
import decimal
|
import decimal
|
||||||
import logging
|
import logging
|
||||||
import subprocess
|
import subprocess
|
||||||
|
|
||||||
from oca.pool import WrongIdError
|
from oca.pool import WrongIdError
|
||||||
|
|
||||||
from datacenterlight.models import VMPricing
|
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))
|
(decimal.Decimal(hdd_size) * pricing.hdd_unit_price))
|
||||||
cents = decimal.Decimal('.01')
|
cents = decimal.Decimal('.01')
|
||||||
price = price.quantize(cents, decimal.ROUND_HALF_UP)
|
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,
|
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)
|
vat = vat.quantize(cents, decimal.ROUND_HALF_UP)
|
||||||
discount = {
|
discount = {
|
||||||
'name': pricing.discount_name,
|
'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):
|
def ping_ok(host_ipv6):
|
||||||
|
|
|
@ -291,7 +291,8 @@ class StripeUtils(object):
|
||||||
return charge
|
return charge
|
||||||
|
|
||||||
@staticmethod
|
@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
|
Returns the Stripe plan id string of the form
|
||||||
`dcl-v1-cpu-2-ram-5gb-ssd-10gb` based on the input parameters
|
`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 version: The version of the Stripe plans
|
||||||
:param app: The application to which the stripe plan belongs
|
:param app: The application to which the stripe plan belongs
|
||||||
to. By default it is 'dcl'
|
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`
|
: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,
|
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(
|
stripe_plan_id_string = '{app}-v{version}-{plan}'.format(
|
||||||
app=app,
|
app=app,
|
||||||
version=version,
|
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
|
return stripe_plan_id_string
|
||||||
|
|
||||||
@staticmethod
|
@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
|
Returns the Stripe plan name
|
||||||
:return:
|
: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,
|
cpu=cpu,
|
||||||
memory=memory,
|
memory=memory,
|
||||||
disk_size=disk_size)
|
disk_size=disk_size,
|
||||||
|
price=round(price, 2)
|
||||||
|
)
|
||||||
|
|
||||||
@handleStripeError
|
@handleStripeError
|
||||||
def set_subscription_meta_data(self, subscription_id, meta_data):
|
def set_subscription_meta_data(self, subscription_id, meta_data):
|
||||||
|
|
Loading…
Reference in a new issue