forked from uncloud/uncloud
73 lines
2.1 KiB
Python
73 lines
2.1 KiB
Python
|
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)
|