1.1 --- a/imiptools/data.py Sun May 17 18:00:09 2015 +0200
1.2 +++ b/imiptools/data.py Sun May 17 18:07:14 2015 +0200
1.3 @@ -25,7 +25,7 @@
1.4 from imiptools.dates import format_datetime, get_datetime, get_duration, \
1.5 get_freebusy_period, get_period, to_datetime, \
1.6 to_timezone, to_utc_datetime
1.7 -from imiptools.period import Period, period_overlaps
1.8 +from imiptools.period import Period, RecurringPeriod, period_overlaps
1.9 from pytz import timezone
1.10 from vCalendar import iterwrite, parse, ParseError, to_dict, to_node
1.11 from vRecurrence import get_parameters, get_rule
1.12 @@ -407,30 +407,6 @@
1.13 def get_tzid(dtstart_attr, dtend_attr):
1.14 return dtstart_attr.get("TZID") or dtend_attr.get("TZID")
1.15
1.16 -class RecurringPeriod(Period):
1.17 -
1.18 - "A period with origin information from the object."
1.19 -
1.20 - def __init__(self, start, end, tzid=None, origin=None, start_attr=None, end_attr=None):
1.21 - Period.__init__(self, start, end, tzid, origin)
1.22 - self.start_attr = start_attr
1.23 - self.end_attr = end_attr
1.24 -
1.25 - def get_start_item(self):
1.26 - return self.start, self.start_attr
1.27 -
1.28 - def get_end_item(self):
1.29 - return self.end, self.end_attr
1.30 -
1.31 - def get_tzid(self):
1.32 - return get_tzid(self.start_attr, self.end_attr) or self.tzid
1.33 -
1.34 - def as_tuple(self):
1.35 - return self.start, self.end, self.tzid, self.origin, self.start_attr, self.end_attr
1.36 -
1.37 - def __repr__(self):
1.38 - return "RecurringPeriod(%r)" % (self.as_tuple(),)
1.39 -
1.40 def get_periods(obj, tzid, window_end, inclusive=False):
1.41
1.42 """
2.1 --- a/imiptools/period.py Sun May 17 18:00:09 2015 +0200
2.2 +++ b/imiptools/period.py Sun May 17 18:07:14 2015 +0200
2.3 @@ -126,6 +126,30 @@
2.4 def __repr__(self):
2.5 return "FreeBusyPeriod(%r)" % (self.as_tuple(),)
2.6
2.7 +class RecurringPeriod(Period):
2.8 +
2.9 + "A period with iCalendar attribute and origin information from the object."
2.10 +
2.11 + def __init__(self, start, end, tzid=None, origin=None, start_attr=None, end_attr=None):
2.12 + Period.__init__(self, start, end, tzid, origin)
2.13 + self.start_attr = start_attr
2.14 + self.end_attr = end_attr
2.15 +
2.16 + def get_start_item(self):
2.17 + return self.start, self.start_attr
2.18 +
2.19 + def get_end_item(self):
2.20 + return self.end, self.end_attr
2.21 +
2.22 + def get_tzid(self):
2.23 + return get_tzid(self.start_attr, self.end_attr) or self.tzid
2.24 +
2.25 + def as_tuple(self):
2.26 + return self.start, self.end, self.tzid, self.origin, self.start_attr, self.end_attr
2.27 +
2.28 + def __repr__(self):
2.29 + return "RecurringPeriod(%r)" % (self.as_tuple(),)
2.30 +
2.31 # Time and period management.
2.32
2.33 def can_schedule(freebusy, periods, uid, recurrenceid):
3.1 --- a/imipweb/data.py Sun May 17 18:00:09 2015 +0200
3.2 +++ b/imipweb/data.py Sun May 17 18:07:14 2015 +0200
3.3 @@ -20,11 +20,10 @@
3.4 """
3.5
3.6 from datetime import datetime
3.7 -from imiptools.data import RecurringPeriod
3.8 from imiptools.dates import end_date_from_calendar, end_date_to_calendar, \
3.9 format_datetime, get_datetime, get_end_of_day, \
3.10 to_date
3.11 -from imiptools.period import Period
3.12 +from imiptools.period import Period, RecurringPeriod
3.13
3.14 class PeriodError(Exception):
3.15 pass