diff --git a/SRV/api/v1/network.py b/SRV/api/v1/network.py index 317de4a..c3e098f 100644 --- a/SRV/api/v1/network.py +++ b/SRV/api/v1/network.py @@ -80,7 +80,7 @@ class ContainerPositionManager: container_manager = ContainerPositionManager() -async def get_network_data(translations: Translations = Depends(get_translations())) -> Dict[str, Dict]: +async def get_network_data(translations: Translations = None) -> Dict[str, Dict]: """Возвращает текущие сетевые данные в виде словаря. Получает данные о сетевых интерфейсах, разделяет их на активные и неактивные, @@ -97,6 +97,7 @@ async def get_network_data(translations: Translations = Depends(get_translations Raises: HTTPException: Если произошла ошибка при получении данных (status_code=500). """ + translations = translations or get_translations()() logger.debug("Calling get_network_data()") try: network_data = await network_service.get_network_interfaces_container() @@ -151,7 +152,7 @@ def _split_interfaces( return activation_interfaces, deactivation_interfaces @router.post("/update_container_position") -async def update_container_position(data: Dict[str, Union[int, bool]] = Body(...), translations: Translations = Depends(get_translations())): +async def update_container_position(data: Dict[str, Union[int, bool]] = Body(...), translations: Translations = None): """Обновляет позицию и состояние контейнера. Принимает данные о новом положении и состоянии контейнера и обновляет их @@ -174,6 +175,7 @@ async def update_container_position(data: Dict[str, Union[int, bool]] = Body(... HTTPException: Если отсутствуют обязательные поля (status_code=400) или типы данных неверны. """ + translations = translations or get_translations()() try: required_keys = [ "container_id", "container_x", "container_y", "isOpen" diff --git a/SRV/api/v1/websocket.py b/SRV/api/v1/websocket.py index 0ed2809..0dc9994 100644 --- a/SRV/api/v1/websocket.py +++ b/SRV/api/v1/websocket.py @@ -101,7 +101,8 @@ async def websocket_endpoint(websocket: WebSocket, translations: Translations = if all(key in data for key in ["container_id", "container_x", "container_y"]): await update_container_position(data) - network_data = await get_network_data() + # Внутренний вызов без DI, поэтому используем fallback-переводы + network_data = await get_network_data(translations=get_translations()(websocket)) logger.info(f"Current network data: {network_data}") await manager.broadcast(network_data) @@ -126,7 +127,7 @@ async def startup_event(): """ asyncio.create_task(broadcast_data()) -async def broadcast_data(translations: Translations = Depends(get_translations())): +async def broadcast_data(translations: Translations = None): """Таск для периодической трансляции сетевых данных. Выполняет сканирование сети и отправляет данные всем подключённым клиентам @@ -138,9 +139,10 @@ async def broadcast_data(translations: Translations = Depends(get_translations() Raises: Exception: Если произошла ошибка при получении данных или трансляции. """ + translations = translations or get_translations()() while True: try: - network_data = await get_network_data() + network_data = await get_network_data(translations=translations) if "activation" not in network_data: logger.error(translations.gettext("Ошибка: Ключ 'activation' отсутствует в полученных данных сети")) await asyncio.sleep(2) @@ -149,4 +151,4 @@ async def broadcast_data(translations: Translations = Depends(get_translations() await manager.broadcast(network_data) except Exception as e: logger.error(f"Error in broadcast_data: {e}") - await asyncio.sleep(2) \ No newline at end of file + await asyncio.sleep(2)