Экспорт конкретный подсетей. Обновление локалей учитывая жти изменения

This commit is contained in:
parent b1306ff66f
commit 0c8533257d
8 changed files with 81 additions and 63 deletions

2
.gitignore vendored
View file

@ -6,5 +6,5 @@ __pycache__
.wheels
.vendor
.python3-deb
SRV/storage/devices/devices.json
SRV/storage/subnets/*
SRV/storage/wifi/wifi.json

3
SRV/.gitignore vendored
View file

@ -6,4 +6,5 @@ __pycache__
.wheels
.vendor
.python3-deb
storage/devices/
storage/subnets/
storage/wifi/

View file

@ -1,11 +1,12 @@
import os
import logging
from typing import Optional
from fastapi import APIRouter, HTTPException, Depends, Response, Request
from fastapi import APIRouter, HTTPException, Depends, Response, Request, Body
from starlette.responses import FileResponse
from services.settings_service import SettingsService
from utils.i18n import get_translations
from babel.support import Translations
from models.subnet import SubnetScanRequest # Предполагается, что модель определена
logging.basicConfig(level=logging.DEBUG)
logger = logging.getLogger(__name__)
@ -96,13 +97,13 @@ def clear_all_data(translations: Translations = Depends(get_translations())):
DEVICE_PATH = "storage/devices/devices.json"
WIFI_PATH = "storage/wifi/wifi.json"
@router.get("/export_devices", response_class=FileResponse)
async def export_devices(subnet: str, translations: Translations = Depends(get_translations())):
@router.post("/export_devices", response_class=FileResponse)
async def export_devices(request: SubnetScanRequest = Body(...), translations: Translations = Depends(get_translations())):
"""
Экспортирует файл с данными устройств в формате JSON для указанной подсети.
Args:
subnet (str): Подсеть в формате CIDR (например, "10.1.1.0/24").
request (SubnetScanRequest): Объект с полем subnet в формате CIDR.
translations: Объект переводов для текущего языка.
Returns:
@ -111,10 +112,11 @@ async def export_devices(subnet: str, translations: Translations = Depends(get_t
Raises:
HTTPException: Если файл не найден (status_code=404).
"""
subnet = request.subnet
file_path = f"storage/subnets/{subnet.replace('/', '_')}.json"
if not os.path.exists(file_path):
logger.warning(f"Export file not found: {file_path}")
raise HTTPException(status_code=404, detail=translations.gettext("Файл не найден"))
raise HTTPException(status_code=404, detail=translations.gettext("Файл для подсети {subnet} не найден").format(subnet=subnet))
logger.info(f"Exporting file: {file_path}")
return FileResponse(
path=file_path,

View file

@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2025-07-16 13:15+0500\n"
"PO-Revision-Date: 2025-07-16 13:15+0500\n"
"POT-Creation-Date: 2025-07-16 13:39+0500\n"
"PO-Revision-Date: 2025-07-16 13:39+0500\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language: en\n"
"Language-Team: en <LL@li.org>\n"
@ -96,55 +96,60 @@ msgstr "Failed to update container position: {error}"
msgid "Не удалось получить имя хоста"
msgstr "Failed to retrieve hostname"
#: api/v1/settings.py:37
#: api/v1/settings.py:38
#, python-brace-format
msgid "Данные узлов подсети {subnet} успешно очищены"
msgstr "Subnet node data for {subnet} successfully cleared"
#: api/v1/settings.py:39
#: api/v1/settings.py:40
msgid "Данные всех подсетей успешно очищены"
msgstr "All subnet data successfully cleared"
#: api/v1/settings.py:41
#: api/v1/settings.py:42
msgid "Не удалось очистить данные узлов подсети"
msgstr "Failed to clear subnet node data"
#: api/v1/settings.py:44 api/v1/settings.py:69 api/v1/settings.py:94
#: api/v1/settings.py:45 api/v1/settings.py:70 api/v1/settings.py:95
#, python-brace-format
msgid "Ошибка очистки: {error}"
msgstr "Clear error: {error}"
#: api/v1/settings.py:64
#: api/v1/settings.py:65
msgid "Данные точек доступа Wi-Fi успешно очищены"
msgstr "Wi-Fi access point data successfully cleared"
#: api/v1/settings.py:66
#: api/v1/settings.py:67
msgid "Не удалось очистить данные точек доступа Wi-Fi"
msgstr "Failed to clear Wi-Fi access point data"
#: api/v1/settings.py:89
#: api/v1/settings.py:90
msgid "Все сетевые данные успешно очищены"
msgstr "All network data successfully cleared"
#: api/v1/settings.py:91
#: api/v1/settings.py:92
msgid "Не удалось очистить все сетевые данные"
msgstr "Failed to clear all network data"
#: api/v1/settings.py:117 api/v1/settings.py:141
#: api/v1/settings.py:119
#, python-brace-format
msgid "Файл для подсети {subnet} не найден"
msgstr "File for subnet {subnet} not found"
#: api/v1/settings.py:143
msgid "Файл не найден"
msgstr "File not found"
#: api/v1/settings.py:166
#: api/v1/settings.py:168
#, python-brace-format
msgid "Язык '{locale}' не поддерживается."
msgstr "Language '{locale}' is not supported."
#: api/v1/settings.py:172
#: api/v1/settings.py:174
#, python-brace-format
msgid "Язык '{locale}' не поддерживается (нет файлов переводов)."
msgstr "Language '{locale}' is not supported (no translation files)."
#: api/v1/settings.py:175
#: api/v1/settings.py:177
#, python-brace-format
msgid "Язык успешно установлен: {locale}"
msgstr "Language successfully set: {locale}"
@ -421,24 +426,24 @@ msgstr "Wi-Fi access point clear error: {error}"
msgid "Ошибка очистки всех сетевых данных: {error}"
msgstr "All network data clear error: {error}"
#: services/subnet_service.py:75 services/wifi_service.py:115
#: services/subnet_service.py:151 services/wifi_service.py:115
msgid "Неизвестный"
msgstr "Unknown"
#: services/subnet_service.py:185
#: services/subnet_service.py:327
#, python-brace-format
msgid "Ошибка при сохранении устройств: {error}"
msgstr "Error saving devices: {error}"
#: services/subnet_service.py:268
#: services/subnet_service.py:441
msgid "Недопустимая подсеть по умолчанию"
msgstr "Invalid default subnet"
#: services/subnet_service.py:288
#: services/subnet_service.py:461
msgid "В данной подсети не обнаружено устройств"
msgstr "No devices found in this subnet"
#: services/subnet_service.py:345
#: services/subnet_service.py:518
#, python-brace-format
msgid "Ошибка сканирования: {error}"
msgstr "Scan error: {error}"

View file

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2025-07-16 13:15+0500\n"
"POT-Creation-Date: 2025-07-16 13:39+0500\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -95,55 +95,60 @@ msgstr ""
msgid "Не удалось получить имя хоста"
msgstr ""
#: api/v1/settings.py:37
#: api/v1/settings.py:38
#, python-brace-format
msgid "Данные узлов подсети {subnet} успешно очищены"
msgstr ""
#: api/v1/settings.py:39
#: api/v1/settings.py:40
msgid "Данные всех подсетей успешно очищены"
msgstr ""
#: api/v1/settings.py:41
#: api/v1/settings.py:42
msgid "Не удалось очистить данные узлов подсети"
msgstr ""
#: api/v1/settings.py:44 api/v1/settings.py:69 api/v1/settings.py:94
#: api/v1/settings.py:45 api/v1/settings.py:70 api/v1/settings.py:95
#, python-brace-format
msgid "Ошибка очистки: {error}"
msgstr ""
#: api/v1/settings.py:64
#: api/v1/settings.py:65
msgid "Данные точек доступа Wi-Fi успешно очищены"
msgstr ""
#: api/v1/settings.py:66
#: api/v1/settings.py:67
msgid "Не удалось очистить данные точек доступа Wi-Fi"
msgstr ""
#: api/v1/settings.py:89
#: api/v1/settings.py:90
msgid "Все сетевые данные успешно очищены"
msgstr ""
#: api/v1/settings.py:91
#: api/v1/settings.py:92
msgid "Не удалось очистить все сетевые данные"
msgstr ""
#: api/v1/settings.py:117 api/v1/settings.py:141
#: api/v1/settings.py:119
#, python-brace-format
msgid "Файл для подсети {subnet} не найден"
msgstr ""
#: api/v1/settings.py:143
msgid "Файл не найден"
msgstr ""
#: api/v1/settings.py:166
#: api/v1/settings.py:168
#, python-brace-format
msgid "Язык '{locale}' не поддерживается."
msgstr ""
#: api/v1/settings.py:172
#: api/v1/settings.py:174
#, python-brace-format
msgid "Язык '{locale}' не поддерживается (нет файлов переводов)."
msgstr ""
#: api/v1/settings.py:175
#: api/v1/settings.py:177
#, python-brace-format
msgid "Язык успешно установлен: {locale}"
msgstr ""
@ -420,24 +425,24 @@ msgstr ""
msgid "Ошибка очистки всех сетевых данных: {error}"
msgstr ""
#: services/subnet_service.py:75 services/wifi_service.py:115
#: services/subnet_service.py:151 services/wifi_service.py:115
msgid "Неизвестный"
msgstr ""
#: services/subnet_service.py:185
#: services/subnet_service.py:327
#, python-brace-format
msgid "Ошибка при сохранении устройств: {error}"
msgstr ""
#: services/subnet_service.py:268
#: services/subnet_service.py:441
msgid "Недопустимая подсеть по умолчанию"
msgstr ""
#: services/subnet_service.py:288
#: services/subnet_service.py:461
msgid "В данной подсети не обнаружено устройств"
msgstr ""
#: services/subnet_service.py:345
#: services/subnet_service.py:518
#, python-brace-format
msgid "Ошибка сканирования: {error}"
msgstr ""

View file

@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2025-07-16 13:15+0500\n"
"PO-Revision-Date: 2025-07-16 13:15+0500\n"
"POT-Creation-Date: 2025-07-16 13:39+0500\n"
"PO-Revision-Date: 2025-07-16 13:39+0500\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language: ru\n"
"Language-Team: ru <LL@li.org>\n"
@ -99,55 +99,60 @@ msgstr "Не удалось обновить положение контейне
msgid "Не удалось получить имя хоста"
msgstr "Не удалось получить имя хоста"
#: api/v1/settings.py:37
#: api/v1/settings.py:38
#, python-brace-format
msgid "Данные узлов подсети {subnet} успешно очищены"
msgstr "Данные узлов подсети {subnet} успешно очищены"
#: api/v1/settings.py:39
#: api/v1/settings.py:40
msgid "Данные всех подсетей успешно очищены"
msgstr "Данные всех подсетей успешно очищены"
#: api/v1/settings.py:41
#: api/v1/settings.py:42
msgid "Не удалось очистить данные узлов подсети"
msgstr "Не удалось очистить данные узлов подсети"
#: api/v1/settings.py:44 api/v1/settings.py:69 api/v1/settings.py:94
#: api/v1/settings.py:45 api/v1/settings.py:70 api/v1/settings.py:95
#, python-brace-format
msgid "Ошибка очистки: {error}"
msgstr "Ошибка очистки: {error}"
#: api/v1/settings.py:64
#: api/v1/settings.py:65
msgid "Данные точек доступа Wi-Fi успешно очищены"
msgstr "Данные точек доступа Wi-Fi успешно очищены"
#: api/v1/settings.py:66
#: api/v1/settings.py:67
msgid "Не удалось очистить данные точек доступа Wi-Fi"
msgstr "Не удалось очистить данные точек доступа Wi-Fi"
#: api/v1/settings.py:89
#: api/v1/settings.py:90
msgid "Все сетевые данные успешно очищены"
msgstr "Все сетевые данные успешно очищены"
#: api/v1/settings.py:91
#: api/v1/settings.py:92
msgid "Не удалось очистить все сетевые данные"
msgstr "Не удалось очистить все сетевые данные"
#: api/v1/settings.py:117 api/v1/settings.py:141
#: api/v1/settings.py:119
#, python-brace-format
msgid "Файл для подсети {subnet} не найден"
msgstr "Файл для подсети {subnet} не найден"
#: api/v1/settings.py:143
msgid "Файл не найден"
msgstr "Файл не найден"
#: api/v1/settings.py:166
#: api/v1/settings.py:168
#, python-brace-format
msgid "Язык '{locale}' не поддерживается."
msgstr "Язык '{locale}' не поддерживается."
#: api/v1/settings.py:172
#: api/v1/settings.py:174
#, python-brace-format
msgid "Язык '{locale}' не поддерживается (нет файлов переводов)."
msgstr "Язык '{locale}' не поддерживается (нет файлов переводов)."
#: api/v1/settings.py:175
#: api/v1/settings.py:177
#, python-brace-format
msgid "Язык успешно установлен: {locale}"
msgstr "Язык успешно установлен: {locale}"
@ -426,24 +431,24 @@ msgstr "Ошибка очистки точек доступа Wi-Fi: {error}"
msgid "Ошибка очистки всех сетевых данных: {error}"
msgstr "Ошибка очистки всех сетевых данных: {error}"
#: services/subnet_service.py:75 services/wifi_service.py:115
#: services/subnet_service.py:151 services/wifi_service.py:115
msgid "Неизвестный"
msgstr "Неизвестный"
#: services/subnet_service.py:185
#: services/subnet_service.py:327
#, python-brace-format
msgid "Ошибка при сохранении устройств: {error}"
msgstr "Ошибка при сохранении устройств: {error}"
#: services/subnet_service.py:268
#: services/subnet_service.py:441
msgid "Недопустимая подсеть по умолчанию"
msgstr "Недопустимая подсеть по умолчанию"
#: services/subnet_service.py:288
#: services/subnet_service.py:461
msgid "В данной подсети не обнаружено устройств"
msgstr "В данной подсети не обнаружено устройств"
#: services/subnet_service.py:345
#: services/subnet_service.py:518
#, python-brace-format
msgid "Ошибка сканирования: {error}"
msgstr "Ошибка сканирования: {error}"