mirror of https://github.com/openspug/spug
fix issue
parent
6ee42484e5
commit
f8da39760b
|
@ -27,6 +27,7 @@ import json
|
|||
class Scheduler:
|
||||
timezone = settings.TIME_ZONE
|
||||
week_map = {
|
||||
'-': '-',
|
||||
'*': '*',
|
||||
'7': '6',
|
||||
'0': '6',
|
||||
|
@ -44,6 +45,10 @@ class Scheduler:
|
|||
self._handle_event,
|
||||
EVENT_SCHEDULER_SHUTDOWN | EVENT_JOB_ERROR | EVENT_JOB_MAX_INSTANCES | EVENT_JOB_EXECUTED)
|
||||
|
||||
@classmethod
|
||||
def covert_week(cls, week_str):
|
||||
return ''.join(map(lambda x: cls.week_map[x], week_str))
|
||||
|
||||
@classmethod
|
||||
def parse_trigger(cls, trigger, trigger_args):
|
||||
if trigger == 'interval':
|
||||
|
@ -53,7 +58,7 @@ class Scheduler:
|
|||
elif trigger == 'cron':
|
||||
args = json.loads(trigger_args) if not isinstance(trigger_args, dict) else trigger_args
|
||||
minute, hour, day, month, week = args['rule'].split()
|
||||
week = cls.week_map[week]
|
||||
week = cls.covert_week(week)
|
||||
return CronTrigger(minute=minute, hour=hour, day=day, month=month, day_of_week=week,
|
||||
start_date=args['start'], end_date=args['stop'])
|
||||
else:
|
||||
|
|
|
@ -150,7 +150,7 @@ def next_run_time(request):
|
|||
if error is None:
|
||||
try:
|
||||
minute, hour, day, month, week = form.rule.split()
|
||||
week = Scheduler.week_map[week]
|
||||
week = Scheduler.covert_week(week)
|
||||
trigger = CronTrigger(minute=minute, hour=hour, day=day, month=month, day_of_week=week,
|
||||
start_date=form.start, end_date=form.stop)
|
||||
except (ValueError, KeyError):
|
||||
|
|
Loading…
Reference in New Issue