from django.db import models 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") class CloudProvider(models.Model): name = models.CharField(max_length=100) description = models.TextField(blank=True) logo = models.ImageField( upload_to="cloud_provider_logos/", validators=[validate_image_size], null=True, blank=True, ) 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() logo = models.ImageField( upload_to="service_logos/", validators=[validate_image_size], null=True, blank=True, ) created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True) def __str__(self): return self.name