BBFbyOpus
This commit is contained in:
@@ -14,6 +14,9 @@ logger = logging.getLogger(__name__)
|
||||
|
||||
router = APIRouter(dependencies=[Depends(require_admin)])
|
||||
|
||||
# Префиксы служебных задач -- не показываем на фронте
|
||||
_INTERNAL_JOB_PREFIXES = ("cleanup_",)
|
||||
|
||||
|
||||
async def run_group_command(target_id: str, is_group: bool, params: dict):
|
||||
"""
|
||||
@@ -35,9 +38,16 @@ async def run_group_command(target_id: str, is_group: bool, params: dict):
|
||||
for ip in ips:
|
||||
try:
|
||||
await local_wiz.set_pilot(ip, params)
|
||||
logger.info(f"⏰ Расписание: {target_id} -> {ip}: {params}")
|
||||
logger.info(f"Расписание: {target_id} -> {ip}: {params}")
|
||||
except Exception as e:
|
||||
logger.error(f"⏰ Расписание: ошибка {ip}: {e}")
|
||||
logger.error(f"Расписание: ошибка {ip}: {e}")
|
||||
|
||||
# Логируем toggle в event_log
|
||||
# Импорт здесь, чтобы избежать циклической зависимости
|
||||
from app.api.routes.control import log_toggle_by_name
|
||||
|
||||
target_type = "group" if is_group else "device"
|
||||
await log_toggle_by_name("scheduler", target_type, target_id, params)
|
||||
|
||||
|
||||
@router.post("/once")
|
||||
@@ -122,6 +132,10 @@ async def add_cron_task(
|
||||
async def get_all_tasks():
|
||||
jobs = []
|
||||
for job in scheduler.get_jobs():
|
||||
# Пропускаем служебные задачи
|
||||
if any(job.id.startswith(prefix) for prefix in _INTERNAL_JOB_PREFIXES):
|
||||
continue
|
||||
|
||||
# Парсим имя
|
||||
name_parts = job.name.split("|")
|
||||
target = name_parts[0].replace("CRON:", "").replace("Once:", "").strip()
|
||||
@@ -157,6 +171,10 @@ async def get_all_tasks():
|
||||
|
||||
@router.delete("/{job_id}")
|
||||
async def cancel_task(job_id: str):
|
||||
# Запрещаем удалять служебные задачи через API
|
||||
if any(job_id.startswith(prefix) for prefix in _INTERNAL_JOB_PREFIXES):
|
||||
raise HTTPException(status_code=403, detail="Нельзя удалить служебную задачу")
|
||||
|
||||
try:
|
||||
scheduler.remove_job(job_id)
|
||||
return {"status": "deleted"}
|
||||
|
||||
Reference in New Issue
Block a user