# HG changeset patch # User Paul Boddie # Date 1425488615 -3600 # Node ID 7e3930192655c34c2e45ca9059a6146960c80616 # Parent a4b1dde1c7e9645c0cb264cab85cb737b8c531dc Attempt to fix recurrence removal, adding a method to remove all recurrences. diff -r a4b1dde1c7e9 -r 7e3930192655 imip_store.py --- a/imip_store.py Wed Mar 04 17:13:56 2015 +0100 +++ b/imip_store.py Wed Mar 04 18:03:35 2015 +0100 @@ -234,9 +234,7 @@ "Remove an event for 'user' having the given 'uid'." - recurrences = self.get_object_in_store(user, "recurrences", uid) - if recurrences: - self._remove_collection(recurrences) + self.remove_recurrences(user, uid) filename = self.get_object_in_store(user, "objects", uid) if not filename: @@ -282,14 +280,33 @@ def remove_recurrence(self, user, uid, recurrenceid): - "Remove an event for 'user' having the given 'uid'." + """ + Remove a special recurrence from an event stored by 'user' having the + given 'uid' and 'recurrenceid'. + """ - filename = self.get_object_in_store(user, "recurrences", uid) + filename = self.get_object_in_store(user, "recurrences", uid, recurrenceid) if not filename: return False return self._remove_object(filename) + def remove_recurrences(self, user, uid): + + """ + Remove all recurrences for an event stored by 'user' having the given + 'uid'. + """ + + for recurrenceid in self.get_recurrences(user, uid): + self.remove_recurrence(user, uid, recurrenceid) + + recurrences = self.get_object_in_store(user, "recurrences", uid) + if recurrences: + return self._remove_collection(recurrences) + + return True + def get_freebusy(self, user): "Get free/busy details for the given 'user'."