# 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" )