diff --git a/hosting/models.py b/hosting/models.py index d4a51763..19e73cca 100644 --- a/hosting/models.py +++ b/hosting/models.py @@ -473,6 +473,51 @@ class HostingBillLineItem(AssignPermissionsMixin, models.Model): ('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: {}
".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 += ("Cores: {}
RAM: {} GB
" + "SSD: {} GB
").format( + vm_conf['cores'], int(float(vm_conf['ram'])), vm_conf['ssd'] + ) + return item_detail class VMDetail(models.Model): user = models.ForeignKey(CustomUser)