Мы находимся в Москве. Вы можете самостоятельно забрать покупку из точки самовывоза или заказать доставку курьером по Москве и Московской области. Также доступна доставка почтой по всей России.
По любым вопросам и для заказа свяжитесь с нами по телефону, почте и в соцсетях.
from django.utils import timezone
from django.core.exceptions import ValidationError
from django.conf import settings
import dateutil.parser
def validate_delivery(dt_str):
"""
Проверяет, что выбранное время доставки не является прошедшим.
Добавляет буфер в 60 минут для обработки заказов.
Args:
dt_str (str): Строка с датой и временем в ISO формате
"""
try:
# Парсим строку с датой/временем
selected = dateutil.parser.isoparse(dt_str)
# Если время наивное (без таймзоны), делаем его aware
if selected.tzinfo is None:
# Используем таймзону из настроек Django
current_timezone = timezone.get_current_timezone()
selected = timezone.make_aware(selected, current_timezone)
# Если время уже aware, но нужно нормализовать к текущей таймзоне
else:
selected = timezone.localtime(selected)
# Получаем текущее время с учетом таймзоны
now = timezone.localtime(timezone.now())
# Добавляем буфер в 30 минут
buffer = timezone.timedelta(minutes=60)
# Проверяем, что выбранное время не раньше чем сейчас + буфер
if selected < now + buffer:
raise ValidationError(
f"Время доставки должно быть не раньше {(now + buffer).strftime('%H:%M')}. "
f"Выбрано: {selected.strftime('%d.%m.%Y %H:%M')}."
)
except ValueError as e:
raise ValidationError(f"Некорректный формат даты/времени: {dt_str}") from e
except Exception as e:
raise ValidationError(f"Ошибка при проверке времени доставки: {str(e)}")
Все фотографии, тексты и видеоматериалы принадлежат их владельцам и использованы для демонстрации. Пожалуйста, не используйте контент шаблона в коммерческих целях.