1.1 --- a/imip_store.py Tue Feb 09 15:57:23 2016 +0100
1.2 +++ b/imip_store.py Wed Mar 02 21:17:11 2016 +0100
1.3 @@ -24,7 +24,7 @@
1.4 from imiptools.data import make_calendar, parse_object, to_stream
1.5 from imiptools.dates import format_datetime, get_datetime, to_timezone
1.6 from imiptools.filesys import fix_permissions, FileBase
1.7 -from imiptools.period import FreeBusyPeriod
1.8 +from imiptools.period import FreeBusyPeriod, FreeBusyCollection
1.9 from imiptools.text import parse_line
1.10 from os.path import isdir, isfile, join
1.11 from os import listdir, remove, rmdir
1.12 @@ -577,23 +577,29 @@
1.13 "Get free/busy details for the given 'user'."
1.14
1.15 filename = self.get_object_in_store(user, name or "freebusy")
1.16 +
1.17 if not filename or not isfile(filename):
1.18 - return []
1.19 + periods = []
1.20 else:
1.21 - return map(lambda t: FreeBusyPeriod(*t),
1.22 + periods = map(lambda t: FreeBusyPeriod(*t),
1.23 (get_table or self._get_table_atomic)(user, filename, [(4, None)]))
1.24
1.25 + return FreeBusyCollection(periods)
1.26 +
1.27 def get_freebusy_for_other(self, user, other, get_table=None):
1.28
1.29 "For the given 'user', get free/busy details for the 'other' user."
1.30
1.31 filename = self.get_object_in_store(user, "freebusy-other", other)
1.32 +
1.33 if not filename or not isfile(filename):
1.34 - return []
1.35 + periods = []
1.36 else:
1.37 - return map(lambda t: FreeBusyPeriod(*t),
1.38 + periods = map(lambda t: FreeBusyPeriod(*t),
1.39 (get_table or self._get_table_atomic)(user, filename, [(4, None)]))
1.40
1.41 + return FreeBusyCollection(periods)
1.42 +
1.43 def set_freebusy(self, user, freebusy, name=None, set_table=None):
1.44
1.45 "For the given 'user', set 'freebusy' details."
1.46 @@ -603,7 +609,7 @@
1.47 return False
1.48
1.49 (set_table or self._set_table_atomic)(user, filename,
1.50 - map(lambda fb: fb.as_tuple(strings_only=True), freebusy))
1.51 + map(lambda fb: fb.as_tuple(strings_only=True), freebusy.periods))
1.52 return True
1.53
1.54 def set_freebusy_for_other(self, user, freebusy, other, set_table=None):
1.55 @@ -615,7 +621,7 @@
1.56 return False
1.57
1.58 (set_table or self._set_table_atomic)(user, filename,
1.59 - map(lambda fb: fb.as_tuple(strings_only=True), freebusy))
1.60 + map(lambda fb: fb.as_tuple(strings_only=True), freebusy.periods))
1.61 return True
1.62
1.63 # Tentative free/busy periods related to countering.
1.64 @@ -644,7 +650,7 @@
1.65 finally:
1.66 self.release_lock(user)
1.67
1.68 - return offers
1.69 + return FreeBusyCollection(offers)
1.70
1.71 def set_freebusy_offers(self, user, freebusy):
1.72
1.73 @@ -1011,11 +1017,14 @@
1.74 "Get free/busy details for the given 'quota' and 'user'."
1.75
1.76 filename = self.get_object_in_store(quota, "freebusy", user)
1.77 - if not filename or not isfile(filename):
1.78 - return []
1.79
1.80 - return map(lambda t: FreeBusyPeriod(*t),
1.81 - (get_table or self._get_table_atomic)(quota, filename, [(4, None)]))
1.82 + if not filename or not isfile(filename):
1.83 + periods = []
1.84 + else:
1.85 + periods = map(lambda t: FreeBusyPeriod(*t),
1.86 + (get_table or self._get_table_atomic)(quota, filename, [(4, None)]))
1.87 +
1.88 + return FreeBusyCollection(periods)
1.89
1.90 def set_freebusy(self, quota, user, freebusy, set_table=None):
1.91
1.92 @@ -1026,7 +1035,7 @@
1.93 return False
1.94
1.95 (set_table or self._set_table_atomic)(quota, filename,
1.96 - map(lambda fb: fb.as_tuple(strings_only=True), freebusy))
1.97 + map(lambda fb: fb.as_tuple(strings_only=True), freebusy.periods))
1.98 return True
1.99
1.100 # Journal entry methods.
1.101 @@ -1039,11 +1048,14 @@
1.102 """
1.103
1.104 filename = self.get_object_in_store(quota, "journal", group)
1.105 - if not filename or not isfile(filename):
1.106 - return []
1.107
1.108 - return map(lambda t: FreeBusyPeriod(*t),
1.109 - self._get_table_atomic(quota, filename, [(4, None)]))
1.110 + if not filename or not isfile(filename):
1.111 + periods = []
1.112 + else:
1.113 + periods = map(lambda t: FreeBusyPeriod(*t),
1.114 + self._get_table_atomic(quota, filename, [(4, None)]))
1.115 +
1.116 + return FreeBusyCollection(periods)
1.117
1.118 def set_entries(self, quota, group, entries):
1.119
1.120 @@ -1057,7 +1069,7 @@
1.121 return False
1.122
1.123 self._set_table_atomic(quota, filename,
1.124 - map(lambda fb: fb.as_tuple(strings_only=True), entries))
1.125 + map(lambda fb: fb.as_tuple(strings_only=True), entries.periods))
1.126 return True
1.127
1.128 # vim: tabstop=4 expandtab shiftwidth=4