1.1 --- a/imiptools/data.py Mon Oct 26 19:07:51 2015 +0100
1.2 +++ b/imiptools/data.py Mon Oct 26 19:37:27 2015 +0100
1.3 @@ -22,8 +22,7 @@
1.4 from bisect import bisect_left
1.5 from datetime import date, datetime, timedelta
1.6 from email.mime.text import MIMEText
1.7 -from imiptools.dates import check_permitted_values, correct_datetime, \
1.8 - format_datetime, get_datetime, \
1.9 +from imiptools.dates import format_datetime, get_datetime, \
1.10 get_datetime_item as get_item_from_datetime, \
1.11 get_datetime_tzid, \
1.12 get_duration, get_period, get_period_item, \
1.13 @@ -499,33 +498,27 @@
1.14
1.15 def correct_object(self, tzid, permitted_values):
1.16
1.17 - "Correct the object's period details."
1.18 + """
1.19 + Correct the object's period details using the given 'tzid' and
1.20 + 'permitted_values'.
1.21 + """
1.22
1.23 corrected = set()
1.24 rdates = []
1.25
1.26 for period in self.get_periods(tzid):
1.27 - start = period.get_start()
1.28 - end = period.get_end()
1.29 - start_errors = check_permitted_values(start, permitted_values)
1.30 - end_errors = check_permitted_values(end, permitted_values)
1.31 + corrected_period = period.get_corrected(permitted_values)
1.32
1.33 - if not (start_errors or end_errors):
1.34 + if corrected_period is period:
1.35 if period.origin == "RDATE":
1.36 rdates.append(period)
1.37 continue
1.38
1.39 - if start_errors:
1.40 - start = correct_datetime(start, permitted_values)
1.41 - if end_errors:
1.42 - end = correct_datetime(end, permitted_values)
1.43 - period = RecurringPeriod(start, end, period.tzid, period.origin, period.get_start_attr(), period.get_end_attr())
1.44 -
1.45 if period.origin == "DTSTART":
1.46 - self.set_period(period)
1.47 + self.set_period(corrected_period)
1.48 corrected.add("DTSTART")
1.49 elif period.origin == "RDATE":
1.50 - rdates.append(period)
1.51 + rdates.append(corrected_period)
1.52 corrected.add("RDATE")
1.53
1.54 if "RDATE" in corrected: