from django.db import models from phonenumber_field.modelfields import PhoneNumberField class Shop(models.Model): """ Модель магазина/пункта самовывоза для цветочного магазина в Минске. """ name = models.CharField( max_length=200, verbose_name="Название магазина" ) # Адрес магазина street = models.CharField( max_length=255, verbose_name="Улица" ) building_number = models.CharField( max_length=20, verbose_name="Номер здания" ) district = models.CharField( max_length=100, blank=True, null=True, verbose_name="Район", help_text="Район в Минске" ) # Контактная информация phone = PhoneNumberField( verbose_name="Телефон", help_text="Контактный телефон магазина" ) email = models.EmailField( blank=True, null=True, verbose_name="Email" ) # Режим работы opening_time = models.TimeField( verbose_name="Время открытия", help_text="Время начала работы магазина" ) closing_time = models.TimeField( verbose_name="Время закрытия", help_text="Время окончания работы магазина" ) working_days = models.CharField( max_length=100, default="Пн-Вс", verbose_name="Рабочие дни", help_text="Например: Пн-Пт, Пн-Вс, Пн-Сб" ) # Статусы и настройки is_active = models.BooleanField( default=True, verbose_name="Активен", help_text="Работает ли магазин в данный момент" ) is_pickup_point = models.BooleanField( default=True, verbose_name="Пункт самовывоза", help_text="Доступен ли магазин для самовывоза заказов" ) # Дополнительная информация description = models.TextField( blank=True, null=True, verbose_name="Описание", help_text="Дополнительная информация о магазине" ) delivery_instructions = models.TextField( blank=True, null=True, verbose_name="Инструкции для клиентов", help_text="Как найти магазин, где припарковаться и т.д." ) # Координаты для карты (опционально) latitude = models.DecimalField( max_digits=9, decimal_places=6, null=True, blank=True, verbose_name="Широта", help_text="Координаты для отображения на карте" ) longitude = models.DecimalField( max_digits=9, decimal_places=6, null=True, blank=True, verbose_name="Долгота", help_text="Координаты для отображения на карте" ) # Временные метки created_at = models.DateTimeField( auto_now_add=True, verbose_name="Дата создания" ) updated_at = models.DateTimeField( auto_now=True, verbose_name="Дата обновления" ) class Meta: verbose_name = "Магазин" verbose_name_plural = "Магазины" indexes = [ models.Index(fields=['is_active']), models.Index(fields=['is_pickup_point']), models.Index(fields=['district']), ] ordering = ['name'] def __str__(self): return f"{self.name} ({self.full_address})" @property def full_address(self): """Полный адрес магазина""" return f"{self.street}, {self.building_number}" @property def working_hours(self): """Форматированный режим работы""" return f"{self.working_days}: {self.opening_time.strftime('%H:%M')} - {self.closing_time.strftime('%H:%M')}"