Единая интернационализация сервера без доменов

This commit is contained in:
parent f0d5481dfe
commit ec054bbaad
29 changed files with 1313 additions and 1412 deletions

View file

@ -13,7 +13,7 @@ class NetworkScanner:
вывода информации о клиентах.
"""
def __init__(self, interface=None, translations: Translations = Depends(get_translations("services"))):
def __init__(self, interface=None, translations: Translations = Depends(get_translations())):
"""Инициализация параметров сетевого сканера.
Args:

View file

@ -30,7 +30,7 @@ oauth2_scheme = OAuth2PasswordBearer(tokenUrl="/auth/login")
class AuthService:
"""Сервис для регистрации, авторизации и управления сессиями"""
def __init__(self, translations: Translations = Depends(get_translations("services"))):
def __init__(self, translations: Translations = Depends(get_translations())):
self.storage = JsonStorage()
self.session_storage = SessionStorage()
self.translations = translations

View file

@ -14,7 +14,7 @@ class WifiConnectionService:
Предоставляет методы для подключения, отключения и проверки статуса Wi-Fi соединений.
"""
def __init__(self, translations: Translations = Depends(get_translations("services"))):
def __init__(self, translations: Translations = Depends(get_translations())):
"""Инициализирует сервис Wi-Fi.
Автоматически определяет доступный Wi-Fi-интерфейс и сохраняет его имя.

View file

@ -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))

View file

@ -31,7 +31,7 @@ class NetworkService:
их конфигурациях IP, Wi-Fi и состояниях.
"""
def __init__(self, translations: Translations = Depends(get_translations("services"))):
def __init__(self, translations: Translations = Depends(get_translations())):
"""Инициализирует сервис NetworkManager.
Устанавливает системный D-Bus и создаёт объекты для взаимодействия с

View file

@ -10,7 +10,7 @@ logger = logging.getLogger(__name__)
class SettingsService:
"""Сервис для управления настройками и очистки данных сети."""
def __init__(self, translations: Translations = Depends(get_translations("services"))):
def __init__(self, translations: Translations = Depends(get_translations())):
self.subnet_file = "storage/devices/devices.json"
self.wifi_file = "storage/wifi/wifi.json"
self.translations = translations

View file

@ -29,7 +29,7 @@ logger = logging.getLogger(__name__)
class NetworkScanner:
"""Класс для сканирования подсети с использованием ARP-запросов."""
def __init__(self, interface: str, translations: Translations = Depends(get_translations("services"))):
def __init__(self, interface: str, translations: Translations = Depends(get_translations())):
self.interface = interface
conf.iface = interface
self.translations = translations
@ -47,7 +47,7 @@ class NetworkScanner:
class PortScanner:
"""Класс для сканирования открытых портов на устройствах."""
def __init__(self, interface: str, translations: Translations = Depends(get_translations("services"))):
def __init__(self, interface: str, translations: Translations = Depends(get_translations())):
self.interface = interface
self.translations = translations
@ -56,7 +56,7 @@ class PortScanner:
class DeviceInfoCollector:
"""Класс для сбора информации об устройствах, включая вендоров и хостнеймы."""
def __init__(self, translations: Translations = Depends(get_translations("services"))):
def __init__(self, translations: Translations = Depends(get_translations())):
self.mac_lookup = MacLookup()
self.nbtscan_cache = {}
self.nbtscan_results = {}
@ -119,7 +119,7 @@ class DeviceInfoCollector:
class DeviceStorage:
"""Класс для хранения и управления данными об устройствах."""
def __init__(self, storage_path: str = "storage/devices/devices.json", translations: Translations = Depends(get_translations("services"))):
def __init__(self, storage_path: str = "storage/devices/devices.json", translations: Translations = Depends(get_translations())):
self.storage_file = Path(storage_path)
self.storage_file.parent.mkdir(parents=True, exist_ok=True)
self.offline_timeout = timedelta(days=7)
@ -180,7 +180,7 @@ class DeviceStorage:
class SubnetService:
"""Сервис для сканирования подсетей и управления устройствами."""
def __init__(self, translations: Translations = Depends(get_translations("services"))):
def __init__(self, translations: Translations = Depends(get_translations())):
self.interface = self._get_default_interface()
self.network_scanner = NetworkScanner(self.interface)
self.port_scanner = PortScanner(self.interface)

View file

@ -22,7 +22,7 @@ logger = logging.getLogger(__name__)
class WifiStorage:
"""Класс для хранения данных о Wi-Fi сетях и их заметках по SSID."""
def __init__(self, storage_path: str = "storage/wifi/wifi.json", translations: Translations = Depends(get_translations("services"))):
def __init__(self, storage_path: str = "storage/wifi/wifi.json", translations: Translations = Depends(get_translations())):
self.storage_file = Path(storage_path)
self.storage_file.parent.mkdir(parents=True, exist_ok=True)
self.translations = translations
@ -62,7 +62,7 @@ class WifiStorage:
class WifiService:
"""Сервис для сканирования текущих Wi-Fi точек доступа."""
def __init__(self, translations: Translations = Depends(get_translations("services"))):
def __init__(self, translations: Translations = Depends(get_translations())):
self.mac_lookup = MacLookup()
self.wifi = pywifi.PyWiFi()
self.interface = self._get_wifi_interface()