From 88baf0791b6d0bb42dee478e3bc3d16aeb1b8936 Mon Sep 17 00:00:00 2001 From: souliane Date: Mon, 3 Mar 2014 15:37:49 +0100 Subject: [PATCH] core (memory): asyncDeleteProfile can force the deletion of a profile, even if it's connected (when called from the backend only) --- src/memory/memory.py | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/memory/memory.py b/src/memory/memory.py index 5929c5b2..46edaad0 100644 --- a/src/memory/memory.py +++ b/src/memory/memory.py @@ -228,15 +228,17 @@ class Params(object): return defer.fail(Failure(exceptions.CancelError)) return self.storage.createProfile(profile) - def asyncDeleteProfile(self, profile): + def asyncDeleteProfile(self, profile, force=False): """Delete an existing profile @param profile: name of the profile + @param force: force the deletion even if the profile is connected. + To be used for direct calls only (not through the bridge). @return: a Deferred instance """ if not self.storage.hasProfile(profile): info(_('Trying to delete an unknown profile')) return defer.fail(Failure(exceptions.ProfileUnknownError)) - if self.host.isConnected(profile): + if not force and self.host.isConnected(profile): info(_("Trying to delete a connected profile")) return defer.fail(Failure(exceptions.ConnectedProfileError)) return self.storage.deleteProfile(profile) @@ -882,10 +884,14 @@ class Memory(object): """ return self.params.asyncCreateProfile(name) - def asyncDeleteProfile(self, name): + def asyncDeleteProfile(self, name, force=False): """Delete an existing profile - @param name: Name of the profile""" - return self.params.asyncDeleteProfile(name) + @param name: Name of the profile + @param force: force the deletion even if the profile is connected. + To be used for direct calls only (not through the bridge). + @return: a Deferred instance + """ + return self.params.asyncDeleteProfile(name, force) def addToHistory(self, from_jid, to_jid, message, type_='chat', extra=None, timestamp=None, profile="@NONE@"): assert profile != "@NONE@"