Единая интернационализация сервера без доменов
This commit is contained in:
parent
f0d5481dfe
commit
ec054bbaad
29 changed files with 1313 additions and 1412 deletions
|
|
@ -8,7 +8,7 @@ from sdbus_async.networkmanager import (
|
|||
import sdbus
|
||||
from sdbus_async.networkmanager.settings import ConnectionProfile
|
||||
from services.arp_service import NetworkScanner
|
||||
from utils.i18n import get_translations, _
|
||||
from utils.i18n import get_translations
|
||||
from babel.support import Translations
|
||||
from fastapi import Depends
|
||||
|
||||
|
|
@ -19,7 +19,7 @@ class IPService:
|
|||
ARP-сканирования и применения настроек через NetworkManager.
|
||||
"""
|
||||
|
||||
def __init__(self, translations: Translations = Depends(get_translations("services"))):
|
||||
def __init__(self):
|
||||
"""Инициализирует сервис IP.
|
||||
|
||||
Создаёт объект ARP-сканера и устанавливает системную шину D-Bus как
|
||||
|
|
@ -28,7 +28,6 @@ class IPService:
|
|||
self.arp_scanner = NetworkScanner()
|
||||
self.bus = sdbus.sd_bus_open_system()
|
||||
sdbus.set_default_bus(self.bus)
|
||||
self.translations = translations
|
||||
|
||||
def _reset_bus(self):
|
||||
"""Перезапускает соединение с системной шиной D-Bus.
|
||||
|
|
@ -42,7 +41,7 @@ class IPService:
|
|||
self.bus = None
|
||||
self.bus = new_bus
|
||||
|
||||
async def check_ip_config(self, args: Dict[str, Any]) -> Dict[str, Any]:
|
||||
async def check_ip_config(self, args: Dict[str, Any], translations: Translations = Depends(get_translations())) -> Dict[str, Any]:
|
||||
"""Проверяет доступность IP-адреса перед его применением.
|
||||
|
||||
Выполняет ARP-сканирование сети для проверки, занят ли указанный IP-адрес.
|
||||
|
|
@ -51,6 +50,7 @@ class IPService:
|
|||
Args:
|
||||
args (Dict[str, Any]): Словарь с данными, включая "ipv4_updates"
|
||||
с полем "ipv4.address-data" для нового IP-адреса.
|
||||
translations (Translations): Объект переводов.
|
||||
|
||||
Returns:
|
||||
Dict[str, Any]: Словарь с ключами:
|
||||
|
|
@ -66,14 +66,14 @@ class IPService:
|
|||
if any(client["ip"] == new_ip for client in clients):
|
||||
return {
|
||||
"available": False,
|
||||
"message": self.translations.gettext("IP-адрес {ip} уже занят.").format(ip=new_ip)
|
||||
"message": translations.gettext("IP-адрес {ip} уже занят.").format(ip=new_ip)
|
||||
}
|
||||
return {
|
||||
"available": True,
|
||||
"message": self.translations.gettext("Настройки сетевого профиля доступны для использования.")
|
||||
"message": translations.gettext("Настройки сетевого профиля доступны для использования.")
|
||||
}
|
||||
|
||||
async def apply_ip_config(self, args: Dict[str, Any]) -> None:
|
||||
async def apply_ip_config(self, args: Dict[str, Any], translations: Translations = Depends(get_translations())) -> None:
|
||||
"""Применяет проверенные настройки IP к указанному соединению.
|
||||
|
||||
Перезапускает шину D-Bus, обновляет настройки соединения через NetworkManager,
|
||||
|
|
@ -83,6 +83,7 @@ class IPService:
|
|||
args (Dict[str, Any]): Словарь с данными, включая:
|
||||
- "connection_id" (str): Идентификатор соединения.
|
||||
- "ipv4_updates" (Dict): Обновления настроек IPv4.
|
||||
translations (Translations): Объект переводов.
|
||||
|
||||
Raises:
|
||||
ValueError: Если соединение с указанным ID не найдено.
|
||||
|
|
@ -98,7 +99,7 @@ class IPService:
|
|||
args["connection_id"])
|
||||
|
||||
if not connection_paths:
|
||||
raise ValueError(self.translations.gettext("Подключение {connection_id} не найдено").format(connection_id=args["connection_id"]))
|
||||
raise ValueError(translations.gettext("Подключение {connection_id} не найдено").format(connection_id=args["connection_id"]))
|
||||
|
||||
connection = NetworkConnectionSettings(connection_paths[0])
|
||||
profile = await connection.get_profile()
|
||||
|
|
@ -126,4 +127,4 @@ class IPService:
|
|||
print(f"Reconnected to {args['connection_id']}")
|
||||
return
|
||||
|
||||
raise RuntimeError(self.translations.gettext("Устройство для интерфейса {interface} не найдено").format(interface=interface_name))
|
||||
raise RuntimeError(translations.gettext("Устройство для интерфейса {interface} не найдено").format(interface=interface_name))
|
||||
Loading…
Add table
Add a link
Reference in a new issue