85 lines
No EOL
3.2 KiB
Python
85 lines
No EOL
3.2 KiB
Python
# api/v1/settings.py
|
||
import os
|
||
import json
|
||
import logging
|
||
import tempfile
|
||
from fastapi import APIRouter, HTTPException, Body
|
||
from starlette.responses import FileResponse
|
||
from services.settings_service import SettingsService
|
||
import shutil
|
||
|
||
# Настройка логирования
|
||
logging.basicConfig(level=logging.DEBUG) # Уровень DEBUG для детализации
|
||
logger = logging.getLogger(__name__)
|
||
|
||
router = APIRouter()
|
||
settings_service = SettingsService()
|
||
|
||
@router.post("/clear_subnet")
|
||
def clear_subnet():
|
||
"""Очищает данные узлов подсети, сохранённые в devices.json.
|
||
|
||
Удаляет все записи об узлах подсети, оставляя файл пустым.
|
||
|
||
Returns:
|
||
dict: Словарь с сообщением об успешной очистке.
|
||
|
||
Raises:
|
||
HTTPException: Если произошла ошибка очистки (status_code=500).
|
||
"""
|
||
try:
|
||
success = settings_service.clear_subnet()
|
||
if success:
|
||
return {"message": "Данные узлов подсети успешно очищены"}
|
||
except Exception as e:
|
||
raise HTTPException(status_code=500, detail=f"Ошибка очистки: {str(e)}")
|
||
|
||
@router.post("/clear_wifi")
|
||
def clear_wifi():
|
||
"""Очищает данные точек доступа Wi-Fi, сохранённые в wifi.json.
|
||
|
||
Удаляет все записи о точках доступа, оставляя файл пустым.
|
||
|
||
Returns:
|
||
dict: Словарь с сообщением об успешной очистке.
|
||
|
||
Raises:
|
||
HTTPException: Если произошла ошибка очистки (status_code=500).
|
||
"""
|
||
try:
|
||
success = settings_service.clear_wifi()
|
||
if success:
|
||
return {"message": "Данные точек доступа Wi-Fi успешно очищены"}
|
||
except Exception as e:
|
||
raise HTTPException(status_code=500, detail=f"Ошибка очистки: {str(e)}")
|
||
|
||
@router.post("/clear_all_data")
|
||
def clear_all_data():
|
||
"""Очищает данные узлов подсети и точек доступа Wi-Fi в обоих файлах.
|
||
|
||
Удаляет все записи из devices.json и wifi.json.
|
||
|
||
Returns:
|
||
dict: Словарь с сообщением об успешной очистке.
|
||
|
||
Raises:
|
||
HTTPException: Если произошла ошибка очистки (status_code=500).
|
||
"""
|
||
try:
|
||
success = settings_service.clear_all_data()
|
||
if success:
|
||
return {"message": "Все сетевые данные успешно очищены"}
|
||
except Exception as e:
|
||
raise HTTPException(status_code=500, detail=f"Ошибка очистки: {str(e)}")
|
||
|
||
DEVICE_PATH = "/home/merelden/main/projects/all/gonets/SRV/storage/devices/devices.json"
|
||
|
||
@router.get("/export", response_class=FileResponse)
|
||
async def export_devices():
|
||
if not os.path.exists(DEVICE_PATH):
|
||
return {"error": "Файл не найден"}
|
||
return FileResponse(
|
||
path=DEVICE_PATH,
|
||
filename="device.json",
|
||
media_type="application/json"
|
||
) |