Merge "Fix get min interval error"
This commit is contained in:
commit
848a246036
|
@ -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
|
||||||
|
|
|
@ -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())
|
||||||
|
|
Loading…
Reference in New Issue