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 data-options="region:'center'" style="width:100%;height:100%;padding:5px 15px;">
|
||||
<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="
|
||||
label:'名称'"
|
||||
required=true>
|
||||
</div>
|
||||
</div> {% endcomment %}
|
||||
<div style="margin-bottom:5px">
|
||||
<select id="set" class="easyui-combobox" name="set" style="width:200px" data-options="
|
||||
label:'配置方案',
|
||||
|
@ -87,7 +87,7 @@
|
|||
if (data.code == 1) {
|
||||
$("#schedulesettable").datagrid('reload');
|
||||
$("#dd").dialog("close");
|
||||
} else { $.messager.alert('提示', '失败!'); }
|
||||
} else { $.messager.alert('提示', data.msg); }
|
||||
$('#submitb').linkbutton('enable');
|
||||
},
|
||||
});
|
||||
|
|
|
@ -5359,6 +5359,11 @@ def apitool(req):
|
|||
print(partlink)
|
||||
|
||||
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
|
||||
def apimyschedule(req):
|
||||
from safesite.services import get_chinese_description
|
||||
a = req.GET.get('a')
|
||||
userid = req.session['userid']
|
||||
companyid = getcompany(userid)
|
||||
|
@ -7930,8 +7936,9 @@ def apimyschedule(req):
|
|||
elif a == 'add':
|
||||
data = json.loads(req.body.decode('utf-8'))
|
||||
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']})
|
||||
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':
|
||||
cron = {
|
||||
'minute' : data['minute'],
|
||||
|
@ -7941,8 +7948,12 @@ def apimyschedule(req):
|
|||
'month_of_year': data['month_of_year'],
|
||||
'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)
|
||||
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})
|
||||
elif a == 'del':
|
||||
user = User.objects.get(userid=userid)
|
||||
|
|
Loading…
Reference in New Issue