Детальная обработка ответов и ошибок для работы с подсетью

This commit is contained in:
parent 1b0d18b681
commit ea56d17ea7
5 changed files with 86 additions and 502 deletions

View file

@ -268,44 +268,94 @@ class SubnetService:
logger.warning(f"Не удалось получить локальное устройство: {str(e)}")
return None
def add_note(self, mac: str, note: str) -> bool:
def add_note(self, mac: str, note: str) -> Tuple[bool, Optional[str]]:
"""Добавляет заметку к устройству по MAC-адресу.
Args:
mac (str): MAC-адрес устройства.
note (str): Текст заметки.
Returns:
Tuple[bool, Optional[str]]: Кортеж (успех, сообщение об ошибке).
- Успех: (True, None).
- Ошибка: (False, сообщение об ошибке).
Raises:
Exception: Если произошла ошибка при сохранении.
"""
try:
saved_devices = self.storage.load_devices()
if mac not in saved_devices:
logger.warning(f"Устройство с MAC {mac} не найдено")
return False
return False, f"Устройство с MAC {mac} не найдено"
if saved_devices[mac].note is not None:
logger.error(f"Заметка для устройства с MAC {mac} уже существует")
return False, f"Заметка для устройства с MAC {mac} уже существует"
saved_devices[mac].note = note
self.storage.save_devices(list(saved_devices.values()))
logger.info(f"Добавлена заметка '{note}' для устройства с MAC {mac}")
return True
return True, None
except Exception as e:
logger.error(f"Ошибка при добавлении заметки для MAC {mac}: {str(e)}")
return False
return False, f"Внутренняя ошибка сервера: {str(e)}"
def update_note(self, mac: str, note: str) -> bool:
def update_note(self, mac: str, note: str) -> Tuple[bool, Optional[str]]:
"""Обновляет заметку устройства по MAC-адресу.
Args:
mac (str): MAC-адрес устройства.
note (str): Новый текст заметки.
Returns:
Tuple[bool, Optional[str]]: Кортеж (успех, сообщение об ошибке).
- Успех: (True, None).
- Ошибка: (False, сообщение об ошибке).
Raises:
Exception: Если произошла ошибка при сохранении.
"""
try:
saved_devices = self.storage.load_devices()
if mac not in saved_devices:
logger.warning(f"Устройство с MAC {mac} не найдено")
return False
return False, f"Устройство с MAC {mac} не найдено"
if saved_devices[mac].note is None:
logger.error(f"Заметка для устройства с MAC {mac} не существует")
return False, f"Заметка для устройства с MAC {mac} не существует"
saved_devices[mac].note = note
self.storage.save_devices(list(saved_devices.values()))
logger.info(f"Обновлена заметка '{note}' для устройства с MAC {mac}")
return True
return True, None
except Exception as e:
logger.error(f"Ошибка при обновлении заметки для MAC {mac}: {str(e)}")
return False
return False, f"Внутренняя ошибка сервера: {str(e)}"
def delete_note(self, mac: str) -> bool:
def delete_note(self, mac: str) -> Tuple[bool, Optional[str]]:
"""Удаляет заметку устройства по MAC-адресу.
Args:
mac (str): MAC-адрес устройства.
Returns:
Tuple[bool, Optional[str]]: Кортеж (успех, сообщение об ошибке).
- Успех: (True, None).
- Ошибка: (False, сообщение об ошибке).
Raises:
Exception: Если произошла ошибка при сохранении.
"""
try:
saved_devices = self.storage.load_devices()
if mac not in saved_devices:
logger.warning(f"Устройство с MAC {mac} не найдено")
return False
return False, f"Устройство с MAC {mac} не найдено"
if saved_devices[mac].note is None:
logger.error(f"Заметка для устройства с MAC {mac} не существует")
return False, f"Заметка для устройства с MAC {mac} не существует"
saved_devices[mac].note = None
self.storage.save_devices(list(saved_devices.values()))
logger.info(f"Удалена заметка для устройства с MAC {mac}")
return True
return True, None
except Exception as e:
logger.error(f"Ошибка при удалении заметки для MAC {mac}: {str(e)}")
return False
return False, f"Внутренняя ошибка сервера: {str(e)}"