1.1 --- a/imip_store.py Thu Aug 06 20:02:14 2015 +0200
1.2 +++ b/imip_store.py Thu Aug 06 22:00:11 2015 +0200
1.3 @@ -43,6 +43,8 @@
1.4 def release_lock(self, user):
1.5 FileBase.release_lock(self, user)
1.6
1.7 + # Utility methods.
1.8 +
1.9 def _set_defaults(self, t, empty_defaults):
1.10 for i, default in empty_defaults:
1.11 if i >= len(t):
1.12 @@ -103,6 +105,8 @@
1.13 finally:
1.14 self.release_lock(user)
1.15
1.16 + # Store object access.
1.17 +
1.18 def _get_object(self, user, filename):
1.19
1.20 """
1.21 @@ -162,6 +166,8 @@
1.22
1.23 return True
1.24
1.25 + # Event and event metadata access.
1.26 +
1.27 def get_events(self, user):
1.28
1.29 "Return a list of event identifiers."
1.30 @@ -172,6 +178,31 @@
1.31
1.32 return [name for name in listdir(filename) if isfile(join(filename, name))]
1.33
1.34 + def get_all_events(self, user):
1.35 +
1.36 + "Return a set of (uid, recurrenceid) tuples for all events."
1.37 +
1.38 + uids = self.get_events(user)
1.39 +
1.40 + all_events = set()
1.41 + for uid in uids:
1.42 + all_events.add((uid, None))
1.43 + all_events.update([(uid, recurrenceid) for recurrenceid in self.get_recurrences(user, uid)])
1.44 +
1.45 + return all_events
1.46 +
1.47 + def get_active_events(self, user):
1.48 +
1.49 + "Return a set of uncancelled events of the form (uid, recurrenceid)."
1.50 +
1.51 + all_events = self.get_all_events(user)
1.52 +
1.53 + # Filter out cancelled events.
1.54 +
1.55 + cancelled = self.get_cancellations(user) or []
1.56 + all_events.difference_update(cancelled)
1.57 + return all_events
1.58 +
1.59 def get_event(self, user, uid, recurrenceid=None):
1.60
1.61 """
1.62 @@ -310,6 +341,8 @@
1.63
1.64 return True
1.65
1.66 + # Free/busy period access.
1.67 +
1.68 def get_freebusy(self, user):
1.69
1.70 "Get free/busy details for the given 'user'."
1.71 @@ -352,6 +385,8 @@
1.72 self._set_table(user, filename, map(lambda fb: fb.as_tuple(strings_only=True), freebusy))
1.73 return True
1.74
1.75 + # Object status details access.
1.76 +
1.77 def _get_requests(self, user, queue):
1.78
1.79 "Get requests for the given 'user' from the given 'queue'."