diff --git a/spug_api/apps/schedule/scheduler.py b/spug_api/apps/schedule/scheduler.py index c0ce920..1b5ca71 100644 --- a/spug_api/apps/schedule/scheduler.py +++ b/spug_api/apps/schedule/scheduler.py @@ -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: diff --git a/spug_api/apps/schedule/views.py b/spug_api/apps/schedule/views.py index 022dbfa..e46c0d1 100644 --- a/spug_api/apps/schedule/views.py +++ b/spug_api/apps/schedule/views.py @@ -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):