import uuid from django.db import models from uncloud_pay.models import Product, RecurringPeriod from uncloud_vm.models import VMProduct class MatrixServiceProduct(Product): monthly_managment_fee = 20 description = "Managed Matrix HomeServer" # Specific to Matrix-as-a-Service vm = models.ForeignKey( VMProduct, on_delete=models.CASCADE ) domain = models.CharField(max_length=255, default='domain.tld') def recurring_price(self, recurring_period=RecurringPeriod.PER_MONTH): if recurring_period == RecurringPeriod.PER_MONTH: return self.monthly_managment_fee else: raise Exception('Invalid recurring period for VM Product pricing.') @staticmethod def allowed_recurring_periods(): return list(filter( lambda pair: pair[0] in [RecurringPeriod.PER_MONTH], RecurringPeriod.choices)) @property def setup_fee(self): return 30