Add helper methods in HostingBillLineItem
This commit is contained in:
parent
e782d27739
commit
a811e9f83d
1 changed files with 45 additions and 0 deletions
|
@ -473,6 +473,51 @@ class HostingBillLineItem(AssignPermissionsMixin, models.Model):
|
||||||
('view_hostingbilllineitem', 'View Monthly Hosting Bill Line Item'),
|
('view_hostingbilllineitem', 'View Monthly Hosting Bill Line Item'),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def amount_in_chf(self):
|
||||||
|
"""
|
||||||
|
Returns amount in chf. The amount in this model is in cents (as in
|
||||||
|
Stripe). Hence we multiply it by 0.01 to obtain the result
|
||||||
|
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
|
return self.amount * 0.01
|
||||||
|
|
||||||
|
def unit_amount_in_chf(self):
|
||||||
|
"""
|
||||||
|
Returns unit amount in chf. If its 0, we obtain it from amount and
|
||||||
|
quantity.
|
||||||
|
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
|
if self.unit_amount == 0:
|
||||||
|
return round((self.amount / self.quantity) * 0.01, 2)
|
||||||
|
else:
|
||||||
|
return self.unit_amount * 0.01
|
||||||
|
|
||||||
|
def get_item_detail_str(self):
|
||||||
|
"""
|
||||||
|
Returns line item html string representation
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
|
item_detail = ""
|
||||||
|
if self.metadata is not None and len(self.metadata) > 0:
|
||||||
|
try:
|
||||||
|
vm_dict = json.loads(self.metadata)
|
||||||
|
item_detail = "VM ID: {}<br/>".format(vm_dict["VM_ID"])
|
||||||
|
except ValueError as ve:
|
||||||
|
logger.error(
|
||||||
|
"Could not parse VM in metadata {}. Detail {}".format(
|
||||||
|
self.metadata, str(ve)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
vm_conf = StripeUtils.get_vm_config_from_stripe_id(
|
||||||
|
self.stripe_plan.stripe_plan_id
|
||||||
|
)
|
||||||
|
item_detail += ("<b>Cores</b>: {}<br/><b>RAM</b>: {} GB<br/>"
|
||||||
|
"<b>SSD</b>: {} GB<br/>").format(
|
||||||
|
vm_conf['cores'], int(float(vm_conf['ram'])), vm_conf['ssd']
|
||||||
|
)
|
||||||
|
return item_detail
|
||||||
|
|
||||||
class VMDetail(models.Model):
|
class VMDetail(models.Model):
|
||||||
user = models.ForeignKey(CustomUser)
|
user = models.ForeignKey(CustomUser)
|
||||||
|
|
Loading…
Reference in a new issue