from django.db import models from django.contrib.auth import get_user_model # 1st mixin: owner alike? # 2nd: time frames class Nextcloudv1(models.Model): name = models.CharField(max_length=128, unique=True) owner = models.ForeignKey( get_user_model(), on_delete=models.CASCADE, editable=False ) domain = models.CharField(max_length=253) cpu_cores = models.FloatField(null=True, blank=True) ram_in_gb = models.FloatField(null=True, blank=True) storage_in_gb = models.FloatField(null=True, blank=True) def __str__(self): return f"Nextcloud {domain}: {cores}C {ram_in_gb}GB RAM {storage} GB storage from {owner}" class ResourceConfig(models.Model): """ Describes an actual setting of a resource """ value = models.FloatField() resource = models.ForeignKey(Resource, on_delete=models.CASCADE) class ProductTextConfiguration(models.Model): name = models.CharField(max_length=128, unique=True) # Domain, etc. class ProductTextFieldConfiguration(models.Model): name = models.CharField(max_length=128, unique=True) # homeserver.Yaml, etc. class ProductTextConfig(models.Model): """ Describes an actual setting of a resource """ value = models.CharField(max_length=256) config = models.ForeignKey(ProductTextConfiguration, on_delete=models.CASCADE) class ProductTextFieldConfig(models.Model): """ Describes an actual setting of a resource """ value = models.TextField() config = models.ForeignKey(ProductTextFieldConfiguration, on_delete=models.CASCADE) # 3600 # 86400 # 30*86400 # class Nextcloudv2(Product): # domain = models.CharField(max_length=253) # def __str__(self): # return f"Nextcloud {domain} {owner}" # class ProductPricing(models.Model): # """ # Defines the allowed time frames and the available resources # """ # name = models.CharField(max_length=128, unique=True) # cpu 2022, ipv4 2022 # timeframes = models.ManyToManyField(TimeFrame) # resources = models.ManyToManyField(Resource)