Инициализация интернационализации. Перевод на en, ru для эндпоинтов api/v1
This commit is contained in:
parent
48e8551b0e
commit
9ac52c8a8b
16 changed files with 990 additions and 181 deletions
|
|
@ -1,11 +1,12 @@
|
|||
# api/v1/settings.py
|
||||
import os
|
||||
import json
|
||||
import logging
|
||||
import tempfile
|
||||
from fastapi import APIRouter, HTTPException, Body
|
||||
from fastapi import APIRouter, HTTPException, Body, Depends
|
||||
from starlette.responses import FileResponse
|
||||
from services.settings_service import SettingsService
|
||||
from utils.i18n import get_translations, _
|
||||
from babel.support import Translations
|
||||
import shutil
|
||||
|
||||
# Настройка логирования
|
||||
|
|
@ -16,11 +17,14 @@ router = APIRouter()
|
|||
settings_service = SettingsService()
|
||||
|
||||
@router.post("/clear_subnet")
|
||||
def clear_subnet():
|
||||
def clear_subnet(translations: Translations = Depends(get_translations("api_v1"))):
|
||||
"""Очищает данные узлов подсети, сохранённые в devices.json.
|
||||
|
||||
Удаляет все записи об узлах подсети, оставляя файл пустым.
|
||||
|
||||
Args:
|
||||
translations: Объект переводов для текущего языка.
|
||||
|
||||
Returns:
|
||||
dict: Словарь с сообщением об успешной очистке.
|
||||
|
||||
|
|
@ -30,16 +34,22 @@ def clear_subnet():
|
|||
try:
|
||||
success = settings_service.clear_subnet()
|
||||
if success:
|
||||
return {"message": "Данные узлов подсети успешно очищены"}
|
||||
return {"message": translations.gettext("Данные узлов подсети успешно очищены")}
|
||||
else:
|
||||
raise HTTPException(status_code=500, detail=translations.gettext("Не удалось очистить данные узлов подсети"))
|
||||
except Exception as e:
|
||||
raise HTTPException(status_code=500, detail=f"Ошибка очистки: {str(e)}")
|
||||
logger.error(f"Error clearing subnet data: {str(e)}")
|
||||
raise HTTPException(status_code=500, detail=translations.gettext("Ошибка очистки: {error}").format(error=str(e)))
|
||||
|
||||
@router.post("/clear_wifi")
|
||||
def clear_wifi():
|
||||
def clear_wifi(translations: Translations = Depends(get_translations("api_v1"))):
|
||||
"""Очищает данные точек доступа Wi-Fi, сохранённые в wifi.json.
|
||||
|
||||
Удаляет все записи о точках доступа, оставляя файл пустым.
|
||||
|
||||
Args:
|
||||
translations: Объект переводов для текущего языка.
|
||||
|
||||
Returns:
|
||||
dict: Словарь с сообщением об успешной очистке.
|
||||
|
||||
|
|
@ -49,16 +59,22 @@ def clear_wifi():
|
|||
try:
|
||||
success = settings_service.clear_wifi()
|
||||
if success:
|
||||
return {"message": "Данные точек доступа Wi-Fi успешно очищены"}
|
||||
return {"message": translations.gettext("Данные точек доступа Wi-Fi успешно очищены")}
|
||||
else:
|
||||
raise HTTPException(status_code=500, detail=translations.gettext("Не удалось очистить данные точек доступа Wi-Fi"))
|
||||
except Exception as e:
|
||||
raise HTTPException(status_code=500, detail=f"Ошибка очистки: {str(e)}")
|
||||
logger.error(f"Error clearing wifi data: {str(e)}")
|
||||
raise HTTPException(status_code=500, detail=translations.gettext("Ошибка очистки: {error}").format(error=str(e)))
|
||||
|
||||
@router.post("/clear_all_data")
|
||||
def clear_all_data():
|
||||
def clear_all_data(translations: Translations = Depends(get_translations("api_v1"))):
|
||||
"""Очищает данные узлов подсети и точек доступа Wi-Fi в обоих файлах.
|
||||
|
||||
Удаляет все записи из devices.json и wifi.json.
|
||||
|
||||
Args:
|
||||
translations: Объект переводов для текущего языка.
|
||||
|
||||
Returns:
|
||||
dict: Словарь с сообщением об успешной очистке.
|
||||
|
||||
|
|
@ -68,18 +84,24 @@ def clear_all_data():
|
|||
try:
|
||||
success = settings_service.clear_all_data()
|
||||
if success:
|
||||
return {"message": "Все сетевые данные успешно очищены"}
|
||||
return {"message": translations.gettext("Все сетевые данные успешно очищены")}
|
||||
else:
|
||||
raise HTTPException(status_code=500, detail=translations.gettext("Не удалось очистить все сетевые данные"))
|
||||
except Exception as e:
|
||||
raise HTTPException(status_code=500, detail=f"Ошибка очистки: {str(e)}")
|
||||
logger.error(f"Error clearing all data: {str(e)}")
|
||||
raise HTTPException(status_code=500, detail=translations.gettext("Ошибка очистки: {error}").format(error=str(e)))
|
||||
|
||||
DEVICE_PATH = "storage/devices/devices.json"
|
||||
WIFI_PATH = "storage/wifi/wifi.json"
|
||||
|
||||
@router.get("/export_devices", response_class=FileResponse)
|
||||
async def export_devices():
|
||||
async def export_devices(translations: Translations = Depends(get_translations("api_v1"))):
|
||||
"""
|
||||
Экспортирует файл с данными устройств в формате JSON.
|
||||
|
||||
Args:
|
||||
translations: Объект переводов для текущего языка.
|
||||
|
||||
Returns:
|
||||
FileResponse: Файл devices.json для скачивания.
|
||||
|
||||
|
|
@ -87,9 +109,9 @@ async def export_devices():
|
|||
HTTPException: Если файл не найден (status_code=404).
|
||||
"""
|
||||
if not os.path.exists(DEVICE_PATH):
|
||||
logger.warning(f"Файл для экспорта не найден: {DEVICE_PATH}")
|
||||
raise HTTPException(status_code=404, detail="Файл не найден")
|
||||
logger.info(f"Экспорт файла: {DEVICE_PATH}")
|
||||
logger.warning(f"Export file not found: {DEVICE_PATH}")
|
||||
raise HTTPException(status_code=404, detail=translations.gettext("Файл не найден"))
|
||||
logger.info(f"Exporting file: {DEVICE_PATH}")
|
||||
return FileResponse(
|
||||
path=DEVICE_PATH,
|
||||
filename="devices.json",
|
||||
|
|
@ -97,20 +119,23 @@ async def export_devices():
|
|||
)
|
||||
|
||||
@router.get("/export_wifi", response_class=FileResponse)
|
||||
async def export_wifi():
|
||||
async def export_wifi(translations: Translations = Depends(get_translations("api_v1"))):
|
||||
"""
|
||||
Экспортирует файл с данными устройств в формате JSON.
|
||||
|
||||
Args:
|
||||
translations: Объект переводов для текущего языка.
|
||||
|
||||
Returns:
|
||||
FileResponse: Файл devices.json для скачивания.
|
||||
FileResponse: Файл wifi.json для скачивания.
|
||||
|
||||
Raises:
|
||||
HTTPException: Если файл не найден (status_code=404).
|
||||
"""
|
||||
if not os.path.exists(WIFI_PATH):
|
||||
logger.warning(f"Файл для экспорта не найден: {WIFI_PATH}")
|
||||
raise HTTPException(status_code=404, detail="Файл не найден")
|
||||
logger.info(f"Экспорт файла: {WIFI_PATH}")
|
||||
logger.warning(f"Export file not found: {WIFI_PATH}")
|
||||
raise HTTPException(status_code=404, detail=translations.gettext("Файл не найден"))
|
||||
logger.info(f"Exporting file: {WIFI_PATH}")
|
||||
return FileResponse(
|
||||
path=WIFI_PATH,
|
||||
filename="wifi.json",
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue