# HG changeset patch # User Paul Boddie # Date 1423755546 -3600 # Node ID bfad36ad3bb669e4943674119ac101f4afe59b21 # Parent dcf248756ea6f19424a65f2d99384a2abcbfaf8b Added generic object access functions. diff -r dcf248756ea6 -r bfad36ad3bb6 imip_store.py --- a/imip_store.py Wed Feb 11 17:19:07 2015 +0100 +++ b/imip_store.py Thu Feb 12 16:39:06 2015 +0100 @@ -40,6 +40,54 @@ def release_lock(self, user): FileBase.release_lock(self, user) + def _get_object(self, user, filename): + + """ + Return the parsed object for the given 'user' having the given + 'filename'. + """ + + self.acquire_lock(user) + try: + f = open(filename, "rb") + try: + return parse_object(f, "utf-8") + finally: + f.close() + finally: + self.release_lock(user) + + def _set_object(self, user, filename, node): + + """ + Set an object for the given 'user' having the given 'filename', using + 'node' to define the object. + """ + + self.acquire_lock(user) + try: + f = open(filename, "wb") + try: + to_stream(f, node) + finally: + f.close() + fix_permissions(filename) + finally: + self.release_lock(user) + + return True + + def _remove_object(self, filename): + + "Remove the object with the given 'filename'." + + try: + remove(filename) + except OSError: + return False + + return True + def get_events(self, user): "Return a list of event identifiers." @@ -58,15 +106,7 @@ if not filename or not exists(filename): return None - self.acquire_lock(user) - try: - f = open(filename, "rb") - try: - return parse_object(f, "utf-8") - finally: - f.close() - finally: - self.release_lock(user) + return self._get_object(user, filename) def set_event(self, user, uid, node): @@ -76,18 +116,7 @@ if not filename: return False - self.acquire_lock(user) - try: - f = open(filename, "wb") - try: - to_stream(f, node) - finally: - f.close() - fix_permissions(filename) - finally: - self.release_lock(user) - - return True + return self._set_object(user, filename, node) def remove_event(self, user, uid): @@ -97,12 +126,7 @@ if not filename: return False - try: - remove(filename) - except OSError: - return False - - return True + return self._remove_object(filename) def get_freebusy(self, user):