from django.db import models class TimestampedModel(models.Model): created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True) class Meta: abstract = True class SiteSettings(TimestampedModel): site_name = models.CharField(max_length=255) tagline = models.CharField(max_length=255, blank=True) phone = models.CharField(max_length=64) email = models.EmailField(blank=True) address = models.CharField(max_length=255) city = models.CharField(max_length=120, default="Ставрополь") working_hours = models.CharField(max_length=255, blank=True) hero_title = models.CharField(max_length=255) hero_subtitle = models.TextField() hero_image = models.URLField(blank=True) about_excerpt = models.TextField(blank=True) class Meta: verbose_name = "Настройки сайта" verbose_name_plural = "Настройки сайта" def __str__(self): return self.site_name class Page(TimestampedModel): title = models.CharField(max_length=255) slug = models.SlugField(unique=True) intro = models.TextField(blank=True) body = models.TextField() meta_title = models.CharField(max_length=255, blank=True) meta_description = models.CharField(max_length=320, blank=True) is_published = models.BooleanField(default=True) nav_order = models.PositiveIntegerField(default=0) class Meta: ordering = ["nav_order", "title"] verbose_name = "Страница" verbose_name_plural = "Страницы" def __str__(self): return self.title class Service(TimestampedModel): title = models.CharField(max_length=255) slug = models.SlugField(unique=True) short_description = models.TextField() description = models.TextField() icon = models.CharField(max_length=64, blank=True) sort_order = models.PositiveIntegerField(default=0) class Meta: ordering = ["sort_order", "title"] verbose_name = "Услуга" verbose_name_plural = "Услуги" def __str__(self): return self.title class Doctor(TimestampedModel): full_name = models.CharField(max_length=255) position = models.CharField(max_length=255) credentials = models.TextField(blank=True) bio = models.TextField(blank=True) photo = models.URLField(blank=True) sort_order = models.PositiveIntegerField(default=0) class Meta: ordering = ["sort_order", "full_name"] verbose_name = "Специалист" verbose_name_plural = "Специалисты" def __str__(self): return self.full_name class Document(TimestampedModel): title = models.CharField(max_length=255) category = models.CharField(max_length=120, blank=True) description = models.TextField(blank=True) file_url = models.URLField(blank=True) sort_order = models.PositiveIntegerField(default=0) class Meta: ordering = ["sort_order", "title"] verbose_name = "Документ" verbose_name_plural = "Документы" def __str__(self): return self.title class ContactMessage(TimestampedModel): name = models.CharField(max_length=255) phone = models.CharField(max_length=64, blank=True) email = models.EmailField(blank=True) message = models.TextField() is_processed = models.BooleanField(default=False) class Meta: ordering = ["-created_at"] verbose_name = "Сообщение" verbose_name_plural = "Сообщения" def __str__(self): return f"{self.name} ({self.created_at:%d.%m.%Y})"