TG-PlatformPlus/taskModel/taskManager.py

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()