1.1 --- a/imip_store.py Tue Oct 21 23:39:55 2014 +0200
1.2 +++ b/imip_store.py Wed Oct 22 00:48:30 2014 +0200
1.3 @@ -34,24 +34,7 @@
1.4 pathname = join(base, *parts)
1.5 return check_dir(base, pathname) and pathname or None
1.6
1.7 -class FileStore(FileBase):
1.8 -
1.9 - "A file store of tabular free/busy data and objects."
1.10 -
1.11 - def get_event(self, user, uid):
1.12 -
1.13 - "Get the event for the given 'user' with the given 'uid'."
1.14 -
1.15 - filename = self.get_file_object(self.store_dir, user, uid)
1.16 - if not filename:
1.17 - return None
1.18 -
1.19 - return exists(filename) and open(filename) or None
1.20 -
1.21 - def set_event(self, user, uid, node):
1.22 -
1.23 - "Set an event for 'user' having the given 'uid' and 'node'."
1.24 -
1.25 + def get_object_for_user(self, user, uid):
1.26 dir = self.get_file_object(self.store_dir, user)
1.27 if not dir:
1.28 return False
1.29 @@ -63,6 +46,30 @@
1.30 if not exists(dir):
1.31 makedirs(dir)
1.32
1.33 + return filename
1.34 +
1.35 +class FileStore(FileBase):
1.36 +
1.37 + "A file store of tabular free/busy data and objects."
1.38 +
1.39 + def get_event(self, user, uid):
1.40 +
1.41 + "Get the event for the given 'user' with the given 'uid'."
1.42 +
1.43 + filename = self.get_object_for_user(user, uid)
1.44 + if not filename or not exists(filename):
1.45 + return None
1.46 +
1.47 + return exists(filename) and open(filename) or None
1.48 +
1.49 + def set_event(self, user, uid, node):
1.50 +
1.51 + "Set an event for 'user' having the given 'uid' and 'node'."
1.52 +
1.53 + filename = self.get_object_for_user(user, uid)
1.54 + if not filename:
1.55 + return False
1.56 +
1.57 f = open(filename, "w")
1.58 try:
1.59 to_stream(f, node)
1.60 @@ -75,7 +82,7 @@
1.61
1.62 "Get free/busy details for the given 'user'."
1.63
1.64 - filename = self.get_file_object(self.store_dir, user, "freebusy")
1.65 + filename = self.get_object_for_user(user, "freebusy")
1.66 if not filename or not exists(filename):
1.67 return None
1.68
1.69 @@ -92,15 +99,10 @@
1.70
1.71 "For the given 'user', set 'freebusy' details."
1.72
1.73 - filename = self.get_file_object(self.store_dir, user, "freebusy")
1.74 + filename = self.get_object_for_user(user, "freebusy")
1.75 if not filename:
1.76 return False
1.77
1.78 - dir = split(filename)[0]
1.79 -
1.80 - if not exists(dir):
1.81 - makedirs(dir)
1.82 -
1.83 f = open(filename, "w")
1.84 try:
1.85 for item in freebusy:
1.86 @@ -121,15 +123,10 @@
1.87
1.88 "For the given 'user', set 'freebusy' details."
1.89
1.90 - filename = self.get_file_object(self.store_dir, user, "freebusy")
1.91 + filename = self.get_object_for_user(user, "freebusy")
1.92 if not filename:
1.93 return False
1.94
1.95 - dir = split(filename)[0]
1.96 -
1.97 - if not exists(dir):
1.98 - makedirs(dir)
1.99 -
1.100 record = []
1.101 rwrite = record.append
1.102