Преглед на файлове

Have schedule range wrap around max_ if to < fr, ie. (months): 11-1 => [11, 12, 1]

Loren Abrams преди 12 години
родител
ревизия
94037c4c3f
променени са 1 файла, в които са добавени 8 реда и са изтрити 5 реда
  1. 8 5
      celery/schedules.py

+ 8 - 5
celery/schedules.py

@@ -196,7 +196,9 @@ class crontab_parser(object):
         fr = self._expand_number(toks[0])
         if len(toks) > 1:
             to = self._expand_number(toks[1])
-            return range(fr, min(to + 1, self.max_ + 1))
+            if to < fr:  # Wrap around max_ if necessary
+                return range(fr, self.min_ + self.max_) + range(self.min_, to + 1)
+            return range(fr, to + 1)
         return [fr]
 
     def _range_steps(self, toks):
@@ -223,12 +225,13 @@ class crontab_parser(object):
             except KeyError:
                 raise ValueError("Invalid weekday literal '%s'." % s)
 
+        max_val = self.min_ + self.max_ - 1
+        if i > max_val:
+            raise ValueError(
+                'Invalid end range: %s > %s.' % (i, max_val))
         if i < self.min_:
-            raise ValueError('Invalid beginning range: %s < %s.' %
-                                                   (i, self.min_))
-        if i > self.max_:
             raise ValueError(
-                'Invalid end range: %s > %s.' % (i, self.max_))
+                'Invalid beginning range: %s < %s.' % (i, self.min_))
         return i