1.1 --- a/imiptools/period.py Mon Oct 26 19:07:51 2015 +0100
1.2 +++ b/imiptools/period.py Mon Oct 26 19:37:27 2015 +0100
1.3 @@ -21,7 +21,8 @@
1.4
1.5 from bisect import bisect_left, bisect_right, insort_left
1.6 from datetime import date, datetime, timedelta
1.7 -from imiptools.dates import format_datetime, get_datetime, \
1.8 +from imiptools.dates import check_permitted_values, correct_datetime, \
1.9 + format_datetime, get_datetime, \
1.10 get_datetime_attributes, \
1.11 get_recurrence_start, get_recurrence_start_point, \
1.12 get_start_of_day, \
1.13 @@ -236,6 +237,30 @@
1.14 return recurrenceid
1.15 return None
1.16
1.17 + # Value correction methods.
1.18 +
1.19 + def get_corrected(self, permitted_values):
1.20 +
1.21 + "Return a corrected version of this period."
1.22 +
1.23 + start = self.get_start()
1.24 + end = self.get_end()
1.25 + start_errors = check_permitted_values(start, permitted_values)
1.26 + end_errors = check_permitted_values(end, permitted_values)
1.27 +
1.28 + if not (start_errors or end_errors):
1.29 + return self
1.30 +
1.31 + if start_errors:
1.32 + start = correct_datetime(start, permitted_values)
1.33 + if end_errors:
1.34 + end = correct_datetime(end, permitted_values)
1.35 +
1.36 + return self.make_corrected(start, end)
1.37 +
1.38 + def make_corrected(self, start, end):
1.39 + return self.__class__(start, end, self.tzid, self.origin)
1.40 +
1.41 class FreeBusyPeriod(PeriodBase):
1.42
1.43 "A free/busy record abstraction."
1.44 @@ -348,6 +373,9 @@
1.45 def __repr__(self):
1.46 return "RecurringPeriod%r" % (self.as_tuple(),)
1.47
1.48 + def make_corrected(self, start, end):
1.49 + return self.__class__(start, end, self.tzid, self.origin, self.get_start_attr(), self.get_end_attr())
1.50 +
1.51 # Time and period management.
1.52
1.53 def can_schedule(freebusy, periods, uid, recurrenceid):