Merge "Fix get min interval error"

This commit is contained in:
Zuul 2019-11-14 10:54:06 +00:00 committed by Gerrit Code Review
commit 848a246036
2 changed files with 16 additions and 20 deletions

View File

@ -11,7 +11,7 @@
# under the License. # under the License.
import os import os
from datetime import timedelta from datetime import datetime
from dateutil import rrule from dateutil import rrule
from icalendar import Calendar from icalendar import Calendar
from oslo_serialization import jsonutils from oslo_serialization import jsonutils
@ -121,23 +121,9 @@ class ICal(timeformats.TimeFormat):
:return: int(seconds) or None :return: int(seconds) or None
""" """
gen = self.rrule_obj try:
kwargs = FREQ_TO_KWARGS[self.min_freq] t1 = self.compute_next_time(datetime.now())
endtime = self.dtstart + timedelta(**kwargs) t2 = self.compute_next_time(t1)
return timeutils.delta_seconds(t1, t2)
deltas = [] except Exception:
t0 = None
for dt in gen:
if dt > endtime:
break
t1 = t0
t0 = dt
if t1 is None or t0 is None or dt <= self.dtstart:
continue
delta = timeutils.delta_seconds(t1, t0)
if delta:
deltas.append(delta)
if len(deltas):
return min(deltas)
else:
return None return None

View File

@ -173,3 +173,13 @@ class CalendarTimeTestCase(base.TestCase):
dtstart = datetime(2016, 2, 20, 17, 0, 0) dtstart = datetime(2016, 2, 20, 17, 0, 0)
time_obj = calendar_time.ICal(dtstart, pattern) time_obj = calendar_time.ICal(dtstart, pattern)
self.assertIsNone(time_obj.get_min_interval()) self.assertIsNone(time_obj.get_min_interval())
def test_get_min_interval_when_interval_is_bigger_than_default_rate(self):
pattern = (
"BEGIN:VEVENT\n"
"RRULE:FREQ=MINUTELY;INTERVAL=5;\n"
"END:VEVENT"
)
dtstart = datetime(2016, 2, 20, 17, 0, 0)
time_obj = calendar_time.ICal(dtstart, pattern)
self.assertEqual(300, time_obj.get_min_interval())