Инициализация интернационализации. Перевод на en, ru для эндпоинтов api/v1

This commit is contained in:
parent 48e8551b0e
commit 9ac52c8a8b
16 changed files with 990 additions and 181 deletions

View file

@ -1,13 +1,14 @@
from typing import Dict, Any
from fastapi import APIRouter, Body, HTTPException
from fastapi import APIRouter, Body, HTTPException, Depends
from services.ip_service import IPService
from utils.i18n import get_translations, _
from babel.support import Translations
router = APIRouter()
ip_service = IPService()
@router.post("/check_ip")
async def check_ip_config(data: Dict[str, Any] = Body(...)):
async def check_ip_config(data: Dict[str, Any] = Body(...), translations: Translations = Depends(get_translations("api_v1"))):
"""Проверяет доступность IP-адреса перед его применением.
Выполняет ARP-сканирование для проверки, занят ли указанный IP-адрес,
@ -16,6 +17,7 @@ async def check_ip_config(data: Dict[str, Any] = Body(...)):
Args:
data (Dict[str, Any]): Словарь с данными конфигурации, включая
"ipv4_updates" с полем "ipv4.address-data" для нового IP-адреса.
translations: Объект переводов для текущего языка.
Returns:
Dict[str, Any]: Словарь с ключами:
@ -31,11 +33,11 @@ async def check_ip_config(data: Dict[str, Any] = Body(...)):
except Exception as e:
raise HTTPException(
status_code=500,
detail=f"Ошибка проверки IP конфигурации: {str(e)}")
detail=translations.gettext("Ошибка проверки IP конфигурации: {error}").format(error=str(e))
)
@router.post("/apply_ip")
async def apply_ip_config(data: Dict[str, Any] = Body(...)):
async def apply_ip_config(data: Dict[str, Any] = Body(...), translations: Translations = Depends(get_translations("api_v1"))):
"""Применяет проверенные IP-настройки к указанному сетевому профилю.
Обновляет настройки соединения через NetworkManager, отключает и
@ -44,6 +46,7 @@ async def apply_ip_config(data: Dict[str, Any] = Body(...)):
Args:
data (Dict[str, Any]): Словарь с данными конфигурации, включая
"connection_id" и "ipv4_updates" с обновлениями IP-настроек.
translations: Объект переводов для текущего языка.
Returns:
dict: Словарь с ключами:
@ -58,16 +61,20 @@ async def apply_ip_config(data: Dict[str, Any] = Body(...)):
await ip_service.apply_ip_config(data)
return {
"success": True,
"message": f"Настройки сетевого профиля для {data['connection_id']} применены",
"message": translations.gettext("Настройки сетевого профиля для {connection_id} применены").format(
connection_id=data["connection_id"]
),
}
except ValueError as e:
raise HTTPException(status_code=404, detail=str(e))
raise HTTPException(status_code=404, detail=translations.gettext(str(e)))
except Exception as e:
raise HTTPException(status_code=500, detail=f"Ошибка проверки IP конфигурации: {str(e)}")
raise HTTPException(
status_code=500,
detail=translations.gettext("Ошибка проверки IP конфигурации: {error}").format(error=str(e))
)
@router.post("/save_ip")
async def save_ip_config(data: Dict[str, Any] = Body(...)):
async def save_ip_config(data: Dict[str, Any] = Body(...), translations: Translations = Depends(get_translations("api_v1"))):
"""Применяет проверенные IP-настройки для отката сетевого профиля.
Используется для сохранения и отката настроек сетевого профиля к предыдущему
@ -76,6 +83,7 @@ async def save_ip_config(data: Dict[str, Any] = Body(...)):
Args:
data (Dict[str, Any]): Словарь с данными конфигурации, включая
"connection_id" и "ipv4_updates" с обновлениями IP-настроек.
translations: Объект переводов для текущего языка.
Returns:
dict: Словарь с ключами:
@ -90,9 +98,14 @@ async def save_ip_config(data: Dict[str, Any] = Body(...)):
await ip_service.apply_ip_config(data)
return {
"success": True,
"message": f"Настройки сетевого профиля для {data['connection_id']} применены",
"message": translations.gettext("Настройки сетевого профиля для {connection_id} применены").format(
connection_id=data["connection_id"]
),
}
except ValueError as e:
raise HTTPException(status_code=404, detail=str(e))
raise HTTPException(status_code=404, detail=translations.gettext(str(e)))
except Exception as e:
raise HTTPException(status_code=500, detail=f"Ошибка проверки IP конфигурации: {str(e)}")
raise HTTPException(
status_code=500,
detail=translations.gettext("Ошибка проверки IP конфигурации: {error}").format(error=str(e))
)