2020-02-28 13:46:33 +00:00
|
|
|
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"
|
2020-02-28 15:26:45 +00:00
|
|
|
|
|
|
|
# Specific to Matrix-as-a-Service
|
2020-02-28 13:46:33 +00:00
|
|
|
vm = models.ForeignKey(
|
|
|
|
VMProduct, on_delete=models.CASCADE
|
|
|
|
)
|
2020-02-28 15:26:45 +00:00
|
|
|
domain = models.CharField(max_length=255, default='domain.tld')
|
2020-02-28 13:46:33 +00:00
|
|
|
|
|
|
|
def recurring_price(self, recurring_period=RecurringPeriod.PER_MONTH):
|
|
|
|
if recurring_period == RecurringPeriod.PER_MONTH:
|
2020-03-03 09:51:16 +00:00
|
|
|
return self.monthly_managment_fee
|
2020-02-28 13:46:33 +00:00
|
|
|
else:
|
|
|
|
raise Exception('Invalid recurring period for VM Product pricing.')
|
2020-02-28 15:26:45 +00:00
|
|
|
|
2020-03-03 09:51:16 +00:00
|
|
|
@staticmethod
|
|
|
|
def allowed_recurring_periods():
|
|
|
|
return list(filter(
|
|
|
|
lambda pair: pair[0] in [RecurringPeriod.PER_MONTH],
|
|
|
|
RecurringPeriod.choices))
|
|
|
|
|
|
|
|
@property
|
2020-03-03 10:27:35 +00:00
|
|
|
def one_time_price(self):
|
2020-03-03 09:51:16 +00:00
|
|
|
return 30
|