1.1 --- a/imiptools/period.py Sun Apr 03 22:37:54 2016 +0200
1.2 +++ b/imiptools/period.py Sun Apr 03 22:39:53 2016 +0200
1.3 @@ -476,11 +476,14 @@
1.4
1.5 # List emulation methods.
1.6
1.7 - def __iadd__(self, other):
1.8 - for period in other:
1.9 + def __iadd__(self, periods):
1.10 + for period in periods:
1.11 self.insert_period(period)
1.12 return self
1.13
1.14 + def append(self, period):
1.15 + self.insert_period(period)
1.16 +
1.17 # Operations.
1.18
1.19 def can_schedule(self, periods, uid, recurrenceid):
1.20 @@ -1024,7 +1027,13 @@
1.21
1.22 "Return the entries in the collection at or after 'period'."
1.23
1.24 - columns, values = ["start >= ?"], [format_datetime(period.get_start_point())]
1.25 + start = format_datetime(period.get_start_point())
1.26 +
1.27 + columns, values = [], []
1.28 +
1.29 + if start:
1.30 + columns.append("start >= ?")
1.31 + values.append(start)
1.32
1.33 query, values = self.get_query(
1.34 "select %(columns)s from %(table)s :condition" % {
1.35 @@ -1041,7 +1050,13 @@
1.36
1.37 "Return the entries in the collection before 'period'."
1.38
1.39 - columns, values = ["start < ?"], [format_datetime(period.get_end_point())]
1.40 + end = format_datetime(period.get_end_point())
1.41 +
1.42 + columns, values = [], []
1.43 +
1.44 + if end:
1.45 + columns.append("start < ?")
1.46 + values.append(end)
1.47
1.48 query, values = self.get_query(
1.49 "select %(columns)s from %(table)s :condition" % {
1.50 @@ -1061,7 +1076,7 @@
1.51 'period'.
1.52 """
1.53
1.54 - columns, values = ["start < ?", "end > ?"], [format_datetime(period.get_end_point()), format_datetime(period.get_start_point())]
1.55 + columns, values = self._get_period_values(period)
1.56
1.57 query, values = self.get_query(
1.58 "select %(columns)s from %(table)s :condition" % {
1.59 @@ -1080,7 +1095,7 @@
1.60
1.61 self._check_mutable()
1.62
1.63 - columns, values = ["start < ?", "end > ?"], [format_datetime(period.get_end_point()), format_datetime(period.get_start_point())]
1.64 + columns, values = self._get_period_values(period)
1.65
1.66 query, values = self.get_query(
1.67 "delete from %(table)s :condition" % {
1.68 @@ -1090,6 +1105,22 @@
1.69
1.70 self.cursor.execute(query, values)
1.71
1.72 + def _get_period_values(self, period):
1.73 +
1.74 + start = format_datetime(period.get_start_point())
1.75 + end = format_datetime(period.get_end_point())
1.76 +
1.77 + columns, values = [], []
1.78 +
1.79 + if end:
1.80 + columns.append("start < ?")
1.81 + values.append(end)
1.82 + if start:
1.83 + columns.append("end > ?")
1.84 + values.append(start)
1.85 +
1.86 + return columns, values
1.87 +
1.88 # Period layout.
1.89
1.90 def get_scale(periods, tzid, view_period=None):