Simple Linux Panel
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
mdserver-web/web/admin/model/task.py

114 lines
2.8 KiB

# coding:utf-8
# ---------------------------------------------------------------------------------
# MW-Linux面板
# ---------------------------------------------------------------------------------
# copyright (c) 2018-∞(https://github.com/midoks/mdserver-web) All rights reserved.
# ---------------------------------------------------------------------------------
# Author: midoks <midoks@163.com>
# ---------------------------------------------------------------------------------
from admin.model import db, Tasks
import core.mw as mw
def getTaskCount(
status: int | None = -1
) -> int:
return Tasks.query.filter(Tasks.status==status).count()
# 未执行任务总数
def getTaskUnexecutedCount() -> int:
return Tasks.query.filter(Tasks.status!=1).count()
def addTask(
name: str | None = '常用任务',
cmd: str | None = None,
type: str | None = 'execshell',
status: int | None = 0,
):
'''
添加后台任务
:name -> str 类型
:cmd -> str 日志内容 (必填)
:type -> str 用户ID
'''
if cmd is None:
return False
add_time = mw.formatDate()
add_data = Tasks(
name=name,
cmd=cmd,
type=type,
start=0,
end=0,
status=status,
add_time=add_time)
db.session.add(add_data)
db.session.commit()
return True
def getTaskFirstByRun() -> None:
item = Tasks.query.filter(Tasks.status==-1).order_by(Tasks.id.asc()).first()
if item is None:
return None
row = {}
row['id'] = item.id
row['name'] = item.name
row['type'] = item.type
row['cmd'] = item.cmd
row['start'] = item.start
row['end'] = item.end
row['status'] = item.status
row['add_time'] = item.add_time
return row
def getTaskList(
status: int | None = 1,
page: int | None = 1,
size: int | None = 10,
):
pagination = Tasks.query.filter(Tasks.status==status).order_by(Tasks.id.asc()).paginate(page=int(page), per_page=int(size))
rows = []
for item in pagination.items:
t = {}
t['id'] = item.id
t['name'] = item.name
t['type'] = item.type
t['cmd'] = item.cmd
t['start'] = item.start
t['end'] = item.end
t['status'] = item.status
t['add_time'] = item.add_time
rows.append(t)
return rows
def setTaskStatus(id,
status: int | None = 0
):
Tasks.query.filter(Tasks.id==id).update({'status':status})
db.session.commit()
return True
def setTaskData(id,
start: int | None = None,
end: int | None = None,
):
update_data = {}
if start is not None:
update_data['start'] = start
if end is not None:
update_data['end'] = end
Tasks.query.filter(Tasks.id==id).update(update_data)
db.session.commit()
return True