#!/opt/homebrew/bin/python3 # -*- coding:utf-8 -*- import json import uuid from PyQt6 import * from PyQt6.QtCore import * from logs import log from typing import Union from models import Task, Session from taskInstructionModel.taskInstructionManager import taskInstructionManager class TaskManager(QObject): def __init__(self, parent=None): super().__init__() @pyqtSlot(str, str,int,int,str,str, result=str) def create(self, group_id, name, loop, delay, remark,script): data = { "id": str(uuid.uuid4()), "group_id": group_id, "name": name, "loop": loop, "delay": delay, "remark": remark, "script": script } ok, res = Session.addByClass(Task, data) if ok: return str(res["id"]) return "" @pyqtSlot(QVariant, result=str) def create_from_json(self, param): if not isinstance(param, dict): param = param.toVariant() data = { "id": param["id"], "group_id": param["group_id"], "name": param["name"], "loop": param["loop"], "delay": param["delay"], "remark": param["remark"], "script": param["script"] } ok, res = Session.addByClass(Task, data) if ok: return str(res["id"]) return "" @pyqtSlot(QVariant, result=str) def create_from_git_json(self, param): if not isinstance(param, dict): param = param.toVariant() data = { "id": param["id"], "group_id": param["group_id"], "name": param["name"], "loop": param["loop"], "delay": param["delay"], "remark": param["remark"], "script": param["script"] } ok, res = Session.addByClassFromGit(Task, data) if ok: return str(res["id"]) return "" @pyqtSlot(str, QVariant, result=bool) def update(self, id, param=None): if not type(param) == dict: param = param.toVariant() data = {} if "name" in param: data["name"] = param["name"] if "loop" in param: data["loop"] = param["loop"] if "delay" in param: data["delay"] = param["delay"] if "remark" in param: data["remark"] = param["remark"] if "script" in param: data["script"] = param["script"] if "group_id" in param: data["group_id"] = param["group_id"] ok,res = Session.updateById(Task, id, data) return ok @pyqtSlot(str, result=bool) def createCopy(self, id): ok,res = Session.queryById(Task, id) if ok: res["name"] = res["name"] + "_副本" copy_id = self.create(res["group_id"], res["name"], res["loop"], res["delay"], res["remark"], res["script"]) if copy_id != "": if taskInstructionManager.copyTask(id, copy_id): return True return False @pyqtSlot(str, result=bool) @pyqtSlot(list, result=bool) def delete(self, id): if isinstance(id, str): ok,res = Session.deleteById(Task, id) return ok else: ok,res = Session.deleteByIds(Task, id) return ok @pyqtSlot(list, result=list) def getInfos(self, ids): ok,res = Session.queryByIds(Task, ids) if ok: return res else: return [] @pyqtSlot(str, result=QVariant) @pyqtSlot(str, result=list) def getInfo(self, id = "all"): if id == "all": ok,res = Session.queryByAll(Task) if ok: return res else: return [] else: ok,res = Session.queryById(Task, id) if ok: return res else: return None # 获取所有属于设备模型的指令 @pyqtSlot(str, result=QVariant) def getGroupTask(self, group_id): ok, res = Session.queryByGroupId(Task, group_id) if ok: return res else: return [] taskManager = TaskManager()