import uuid

from django.db import models
from uncloud_pay.models import Product, RecurringPeriod
from uncloud_vm.models import VMProduct, VMDiskImageProduct

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')

    # Default recurring price is PER_MONT, see Product class.
    def recurring_price(self):
        return self.monthly_managment_fee

    @staticmethod
    def base_image():
        # TODO: find a way to safely reference debian 10 image.
        return VMDiskImageProduct.objects.get(uuid="93e564c5-adb3-4741-941f-718f76075f02")

    @staticmethod
    def allowed_recurring_periods():
        return list(filter(
            lambda pair: pair[0] in [RecurringPeriod.PER_MONTH],
            RecurringPeriod.choices))

    @property
    def one_time_price(self):
        return 30