2025-01-27 14:58:23 +01:00
|
|
|
from django.db import models
|
2025-01-27 15:14:58 +01:00
|
|
|
from django.core.exceptions import ValidationError
|
|
|
|
|
|
|
|
|
|
|
|
def validate_image_size(value):
|
|
|
|
filesize = value.size
|
|
|
|
if filesize > 1 * 1024 * 1024: # 1MB
|
|
|
|
raise ValidationError("Maximum file size is 1MB")
|
2025-01-27 14:58:23 +01:00
|
|
|
|
|
|
|
|
|
|
|
class CloudProvider(models.Model):
|
|
|
|
name = models.CharField(max_length=100)
|
|
|
|
description = models.TextField(blank=True)
|
2025-01-27 15:14:58 +01:00
|
|
|
logo = models.ImageField(
|
|
|
|
upload_to="cloud_provider_logos/",
|
|
|
|
validators=[validate_image_size],
|
|
|
|
null=True,
|
|
|
|
blank=True,
|
|
|
|
)
|
2025-01-27 14:58:23 +01:00
|
|
|
|
|
|
|
def __str__(self):
|
|
|
|
return self.name
|
|
|
|
|
|
|
|
|
|
|
|
class Country(models.Model):
|
|
|
|
name = models.CharField(max_length=100)
|
|
|
|
code = models.CharField(max_length=2)
|
|
|
|
|
|
|
|
class Meta:
|
|
|
|
verbose_name_plural = "Countries"
|
|
|
|
|
|
|
|
def __str__(self):
|
|
|
|
return self.name
|
|
|
|
|
|
|
|
|
|
|
|
class ServiceLevel(models.Model):
|
|
|
|
name = models.CharField(max_length=100)
|
|
|
|
description = models.TextField()
|
|
|
|
response_time = models.CharField(max_length=50)
|
|
|
|
|
|
|
|
def __str__(self):
|
|
|
|
return self.name
|
|
|
|
|
|
|
|
|
|
|
|
class Service(models.Model):
|
|
|
|
name = models.CharField(max_length=200)
|
|
|
|
description = models.TextField()
|
|
|
|
cloud_provider = models.ForeignKey(CloudProvider, on_delete=models.CASCADE)
|
|
|
|
service_level = models.ForeignKey(ServiceLevel, on_delete=models.CASCADE)
|
|
|
|
countries = models.ManyToManyField(Country)
|
|
|
|
price = models.DecimalField(max_digits=10, decimal_places=2)
|
|
|
|
features = models.TextField()
|
2025-01-27 15:14:58 +01:00
|
|
|
logo = models.ImageField(
|
|
|
|
upload_to="service_logos/",
|
|
|
|
validators=[validate_image_size],
|
|
|
|
null=True,
|
|
|
|
blank=True,
|
|
|
|
)
|
2025-01-27 14:58:23 +01:00
|
|
|
created_at = models.DateTimeField(auto_now_add=True)
|
|
|
|
updated_at = models.DateTimeField(auto_now=True)
|
|
|
|
|
|
|
|
def __str__(self):
|
|
|
|
return self.name
|