fix: 清理错误定时策略并支持生成cron文本4
This commit is contained in:
parent
4375c344e9
commit
f892ee0460
|
@ -1,7 +1,7 @@
|
|||
import locale
|
||||
from croniter import croniter
|
||||
from cron_descriptor import get_description
|
||||
from safesite.models import MySchedule, GridTaskSet, PeriodicTask
|
||||
from safesite.models import MySchedule, GridTaskSet, PeriodicTask, CrontabSchedule, IntervalSchedule
|
||||
from django.core.exceptions import ObjectDoesNotExist
|
||||
period_dict = {
|
||||
"days": "天",
|
||||
|
@ -14,7 +14,10 @@ def get_chinese_description(type:str = 'interval', data: dict = {}):
|
|||
"""转换为汉语描述
|
||||
"""
|
||||
if type == 'interval':
|
||||
return f"每隔{data['every']}{period_dict[data['period']]}"
|
||||
try:
|
||||
return f"每隔{data['every']}{period_dict[data['period']]}"
|
||||
except KeyError:
|
||||
return ''
|
||||
elif type == 'crontab':
|
||||
exp = f"{data['minute']} {data['hour']} {data['day_of_month']} {data['month_of_year']} {data['day_of_week']}"
|
||||
try:
|
||||
|
@ -26,26 +29,22 @@ def get_chinese_description(type:str = 'interval', data: dict = {}):
|
|||
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':
|
||||
try:
|
||||
crontab = item.crontab
|
||||
if crontab:
|
||||
item.name = get_chinese_description(typeset,
|
||||
cs = CrontabSchedule.objects.all()
|
||||
for crontab in cs:
|
||||
name = get_chinese_description('crontab',
|
||||
{"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()
|
||||
else:
|
||||
PeriodicTask.objects.filter(gridtaskset_periodictask__myschedule=item).delete()
|
||||
item.delete()
|
||||
except ObjectDoesNotExist:
|
||||
GridTaskSet.objects.filter(myschedule=item).delete()
|
||||
item.delete()
|
||||
if name == '':
|
||||
MySchedule.objects.filter(crontab=crontab).delete()
|
||||
crontab.delete()
|
||||
else:
|
||||
MySchedule.objects.filter(crontab=crontab).update(name=name, typeset='crontab')
|
||||
|
||||
ints = IntervalSchedule.objects.all()
|
||||
for interval in ints:
|
||||
name = get_chinese_description('interval', {'every': interval.every, 'period': interval.period})
|
||||
if name == '':
|
||||
MySchedule.objects.filter(interval=interval).delete()
|
||||
interval.delete()
|
||||
else:
|
||||
MySchedule.objects.filter(interval=interval).update(name=name, typeset='interval')
|
Loading…
Reference in New Issue