# -*- coding: utf-8 -*- """ Сервис для работы со складами. """ from inventory.models import Warehouse class WarehouseService: """Сервис управления складами""" # Константы для склада по умолчанию DEFAULT_NAME = 'Основной склад' DEFAULT_DESCRIPTION = 'Склад по умолчанию, созданный автоматически при регистрации' @classmethod def get_default(cls) -> Warehouse | None: """ Получить склад по умолчанию. Returns: Warehouse или None если не найден """ return Warehouse.objects.filter(is_default=True, is_active=True).first() @classmethod def get_or_create_default(cls) -> tuple[Warehouse, bool]: """ Получить или создать склад по умолчанию. Returns: tuple (Warehouse, created: bool) """ return Warehouse.objects.get_or_create( is_default=True, defaults={ 'name': cls.DEFAULT_NAME, 'description': cls.DEFAULT_DESCRIPTION, 'is_active': True, 'is_pickup_point': True, } ) @classmethod def reset_default(cls) -> Warehouse: """ Удалить и пересоздать склад по умолчанию. Используется при --reset в init_tenant_data. Returns: Новый Warehouse """ Warehouse.objects.filter(is_default=True).delete() warehouse, _ = cls.get_or_create_default() return warehouse