fix: 清理错误定时策略并支持生成cron文本
This commit is contained in:
parent
97b9af123e
commit
cf4a40b960
BIN
requirements.txt
BIN
requirements.txt
Binary file not shown.
|
@ -0,0 +1,42 @@
|
||||||
|
import locale
|
||||||
|
from croniter import croniter
|
||||||
|
from cron_descriptor import get_description
|
||||||
|
from safesite.models import MySchedule, GridTaskSet, PeriodicTask
|
||||||
|
period_dict = {
|
||||||
|
"days": "天",
|
||||||
|
"hours": "小时",
|
||||||
|
"minutes": "分钟",
|
||||||
|
"seconds": "秒",
|
||||||
|
"microseconds": "毫秒"
|
||||||
|
}
|
||||||
|
def get_chinese_description(type:str = 'interval', data: dict = {}):
|
||||||
|
"""转换为汉语描述
|
||||||
|
"""
|
||||||
|
if type == 'interval':
|
||||||
|
return f"每隔{data['every']}{period_dict[data['period']]}"
|
||||||
|
elif type == 'crontab':
|
||||||
|
exp = f"{data['minute']} {data['hour']} {data['day_of_month']} {data['month_of_year']} {data['day_of_week']}"
|
||||||
|
try:
|
||||||
|
croniter(exp)
|
||||||
|
except ValueError:
|
||||||
|
return ''
|
||||||
|
locale.setlocale(locale.LC_ALL, 'zh_CN.UTF-8')
|
||||||
|
return get_description(exp)
|
||||||
|
return ''
|
||||||
|
|
||||||
|
def correct_myschedule():
|
||||||
|
qs = MySchedule.objects.all()
|
||||||
|
for ind, item in enumerate(qs):
|
||||||
|
typeset = item.typeset
|
||||||
|
if typeset == 'interval':
|
||||||
|
interval = item.interval
|
||||||
|
item.name = get_chinese_description(typeset, {'every': interval.every, 'period': interval.period})
|
||||||
|
item.save()
|
||||||
|
elif typeset == 'crontab':
|
||||||
|
crontab = item.crontab
|
||||||
|
item.name = get_chinese_description(typeset,
|
||||||
|
{"minute": crontab.minute, "hour": crontab.hour, "day_of_month": crontab.day_of_month,
|
||||||
|
"month_of_year": crontab.month_of_year, "day_of_week": crontab.day_of_week})
|
||||||
|
if item.name == '':
|
||||||
|
crontab.delete()
|
||||||
|
item.delete()
|
|
@ -7,11 +7,11 @@
|
||||||
</div>
|
</div>
|
||||||
<div data-options="region:'center'" style="width:100%;height:100%;padding:5px 15px;">
|
<div data-options="region:'center'" style="width:100%;height:100%;padding:5px 15px;">
|
||||||
<form method="post" id="schedulesetff">
|
<form method="post" id="schedulesetff">
|
||||||
<div style="margin-bottom:10px">
|
{% comment %} <div style="margin-bottom:10px">
|
||||||
<input id="name" class="easyui-textbox" name="name" style="width:480px" data-options="
|
<input id="name" class="easyui-textbox" name="name" style="width:480px" data-options="
|
||||||
label:'名称'"
|
label:'名称'"
|
||||||
required=true>
|
required=true>
|
||||||
</div>
|
</div> {% endcomment %}
|
||||||
<div style="margin-bottom:5px">
|
<div style="margin-bottom:5px">
|
||||||
<select id="set" class="easyui-combobox" name="set" style="width:200px" data-options="
|
<select id="set" class="easyui-combobox" name="set" style="width:200px" data-options="
|
||||||
label:'配置方案',
|
label:'配置方案',
|
||||||
|
@ -87,7 +87,7 @@
|
||||||
if (data.code == 1) {
|
if (data.code == 1) {
|
||||||
$("#schedulesettable").datagrid('reload');
|
$("#schedulesettable").datagrid('reload');
|
||||||
$("#dd").dialog("close");
|
$("#dd").dialog("close");
|
||||||
} else { $.messager.alert('提示', '失败!'); }
|
} else { $.messager.alert('提示', data.msg); }
|
||||||
$('#submitb').linkbutton('enable');
|
$('#submitb').linkbutton('enable');
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
|
@ -5359,6 +5359,11 @@ def apitool(req):
|
||||||
print(partlink)
|
print(partlink)
|
||||||
|
|
||||||
return JsonResponse({"code":1})
|
return JsonResponse({"code":1})
|
||||||
|
elif a == 'correct_myschedule':
|
||||||
|
from safesite.services import correct_myschedule
|
||||||
|
correct_myschedule()
|
||||||
|
return JsonResponse({"code":1})
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -7913,6 +7918,7 @@ def apiriskact(req):
|
||||||
|
|
||||||
@apicheck_login
|
@apicheck_login
|
||||||
def apimyschedule(req):
|
def apimyschedule(req):
|
||||||
|
from safesite.services import get_chinese_description
|
||||||
a = req.GET.get('a')
|
a = req.GET.get('a')
|
||||||
userid = req.session['userid']
|
userid = req.session['userid']
|
||||||
companyid = getcompany(userid)
|
companyid = getcompany(userid)
|
||||||
|
@ -7930,8 +7936,9 @@ def apimyschedule(req):
|
||||||
elif a == 'add':
|
elif a == 'add':
|
||||||
data = json.loads(req.body.decode('utf-8'))
|
data = json.loads(req.body.decode('utf-8'))
|
||||||
if data['set'] == 'interval':
|
if data['set'] == 'interval':
|
||||||
|
name = get_chinese_description('interval', data)
|
||||||
iobj, b = IntervalSchedule.objects.get_or_create(every=data['every'], period=data['period'], defaults={'every':data['every'], 'period':data['period']})
|
iobj, b = IntervalSchedule.objects.get_or_create(every=data['every'], period=data['period'], defaults={'every':data['every'], 'period':data['period']})
|
||||||
MySchedule.objects.create(name=data['name'], typeset=data['set'], interval=iobj, usecomp=Partment.objects.get(partid=companyid))
|
MySchedule.objects.create(name=name, typeset=data['set'], interval=iobj, usecomp=Partment.objects.get(partid=companyid))
|
||||||
elif data['set'] == 'crontab':
|
elif data['set'] == 'crontab':
|
||||||
cron = {
|
cron = {
|
||||||
'minute' : data['minute'],
|
'minute' : data['minute'],
|
||||||
|
@ -7941,8 +7948,12 @@ def apimyschedule(req):
|
||||||
'month_of_year': data['month_of_year'],
|
'month_of_year': data['month_of_year'],
|
||||||
'timezone': 'Asia/Shanghai'
|
'timezone': 'Asia/Shanghai'
|
||||||
}
|
}
|
||||||
|
name = '测试'
|
||||||
|
# name = get_chinese_description('crontab', cron)
|
||||||
|
# if name == '':
|
||||||
|
# return JsonResponse({'code': 0, 'msg': '时间配置格式错误'})
|
||||||
iobj, b = CrontabSchedule.objects.get_or_create(**cron, defaults=cron)
|
iobj, b = CrontabSchedule.objects.get_or_create(**cron, defaults=cron)
|
||||||
MySchedule.objects.create(name=data['name'], typeset=data['set'], crontab=iobj, usecomp=Partment.objects.get(partid=companyid))
|
MySchedule.objects.create(name=name, typeset=data['set'], crontab=iobj, usecomp=Partment.objects.get(partid=companyid))
|
||||||
return JsonResponse({'code': 1})
|
return JsonResponse({'code': 1})
|
||||||
elif a == 'del':
|
elif a == 'del':
|
||||||
user = User.objects.get(userid=userid)
|
user = User.objects.get(userid=userid)
|
||||||
|
|
Loading…
Reference in New Issue