147 lines
4.2 KiB
Python
147 lines
4.2 KiB
Python
#!/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()
|
|
|
|
|