1.1 --- a/imipweb/data.py Sun May 17 01:12:05 2015 +0200
1.2 +++ b/imipweb/data.py Sun May 17 01:40:24 2015 +0200
1.3 @@ -20,8 +20,8 @@
1.4 """
1.5
1.6 from datetime import datetime
1.7 -from imiptools.data import get_tzid
1.8 -from imiptools.dates import end_date_to_calendar, \
1.9 +from imiptools.data import RecurringPeriod
1.10 +from imiptools.dates import end_date_from_calendar, end_date_to_calendar, \
1.11 format_datetime, get_datetime, get_end_of_day, \
1.12 to_date
1.13 from imiptools.period import Period
1.14 @@ -29,7 +29,7 @@
1.15 class PeriodError(Exception):
1.16 pass
1.17
1.18 -class EventPeriod(Period):
1.19 +class EventPeriod(RecurringPeriod):
1.20
1.21 """
1.22 A simple period plus attribute details, compatible with RecurringPeriod, and
1.23 @@ -45,9 +45,7 @@
1.24 'origin' indicating the kind of period this object describes.
1.25 """
1.26
1.27 - Period.__init__(self, start, end, origin)
1.28 - self.start_attr = start_attr
1.29 - self.end_attr = end_attr
1.30 + RecurringPeriod.__init__(self, start, end, origin, start_attr, end_attr)
1.31 self.form_start = form_start
1.32 self.form_end = form_end
1.33
1.34 @@ -60,20 +58,6 @@
1.35 def as_event_period(self):
1.36 return self
1.37
1.38 - # Period data methods.
1.39 -
1.40 - def get_calendar_end(self):
1.41 - return end_date_to_calendar(Period.get_end(self))
1.42 -
1.43 - def get_tzid(self):
1.44 - return get_tzid(self.start_attr, self.end_attr)
1.45 -
1.46 - def get_start_item(self):
1.47 - return self.start, self.start_attr
1.48 -
1.49 - def get_end_item(self):
1.50 - return self.end, self.end_attr
1.51 -
1.52 # Form data compatibility methods.
1.53
1.54 def get_form_start(self):
1.55 @@ -83,7 +67,7 @@
1.56
1.57 def get_form_end(self):
1.58 if not self.form_end:
1.59 - self.form_end = self.get_form_date(self.get_end(), self.end_attr)
1.60 + self.form_end = self.get_form_date(end_date_from_calendar(self.get_end()), self.end_attr)
1.61 return self.form_end
1.62
1.63 def as_form_period(self):
1.64 @@ -174,7 +158,7 @@
1.65 index is not None and ("dtend", index) or "dtend"
1.66 ])
1.67
1.68 - return EventPeriod(dtstart, dtend, dtstart_attr, dtend_attr, self.start, self.end, self.origin)
1.69 + return EventPeriod(dtstart, end_date_to_calendar(dtend), dtstart_attr, dtend_attr, self.start, self.end, self.origin)
1.70
1.71 # Period data methods.
1.72
1.73 @@ -306,6 +290,8 @@
1.74 else:
1.75 dtstart, dtstart_attr = period.get_start_item()
1.76 dtend, dtend_attr = period.get_end_item()
1.77 + if not isinstance(period, RecurringPeriod):
1.78 + dtend = end_date_to_calendar(dtend)
1.79 return EventPeriod(dtstart, dtend, dtstart_attr, dtend_attr, origin=period.origin)
1.80
1.81 def form_period_from_period(period):
2.1 --- a/imipweb/event.py Sun May 17 01:12:05 2015 +0200
2.2 +++ b/imipweb/event.py Sun May 17 01:40:24 2015 +0200
2.3 @@ -219,7 +219,7 @@
2.4 "Set in the given 'obj' the given 'period' as the main start and end."
2.5
2.6 result = self.set_datetime_in_object(period.get_start(), period.start_attr and period.start_attr.get("TZID"), "DTSTART", obj)
2.7 - result = self.set_datetime_in_object(period.get_calendar_end(), period.end_attr and period.end_attr.get("TZID"), "DTEND", obj) or result
2.8 + result = self.set_datetime_in_object(period.get_end(), period.end_attr and period.end_attr.get("TZID"), "DTEND", obj) or result
2.9 return result
2.10
2.11 def set_periods_in_object(self, obj, periods):
2.12 @@ -237,7 +237,7 @@
2.13 for p in periods:
2.14 if p.origin != "RRULE":
2.15 tzid = p.start_attr and p.start_attr.get("TZID") or p.end_attr and p.end_attr.get("TZID")
2.16 - new_rdates.append(get_period_item(p.get_start(), p.get_calendar_end(), tzid))
2.17 + new_rdates.append(get_period_item(p.get_start(), p.get_end(), tzid))
2.18
2.19 obj["RDATE"] = new_rdates
2.20
2.21 @@ -334,7 +334,7 @@
2.22 else:
2.23 dtend, dtend_attr = dtstart, dtstart_attr
2.24
2.25 - return EventPeriod(dtstart, end_date_from_calendar(dtend), dtstart_attr, dtend_attr)
2.26 + return EventPeriod(dtstart, dtend, dtstart_attr, dtend_attr)
2.27
2.28 def get_main_period(self):
2.29