From f892ee04606a058455015e80b2abf2a191bdcfa6 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Mon, 7 Aug 2023 01:05:11 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=B8=85=E7=90=86=E9=94=99=E8=AF=AF?= =?UTF-8?q?=E5=AE=9A=E6=97=B6=E7=AD=96=E7=95=A5=E5=B9=B6=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E7=94=9F=E6=88=90cron=E6=96=87=E6=9C=AC4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- safesite/services.py | 45 ++++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 23 deletions(-) diff --git a/safesite/services.py b/safesite/services.py index 986843dc..7eb1ff45 100644 --- a/safesite/services.py +++ b/safesite/services.py @@ -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() \ No newline at end of file + 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') \ No newline at end of file