plugin account: bug fix profile deletion from the database + unsubscribe the contacts

This commit is contained in:
souliane 2014-03-24 16:21:14 +01:00
commit 03d4dcf029
3 changed files with 20 additions and 3 deletions

View file

@ -85,6 +85,9 @@ class SqliteStorage(object):
self.dbpool = adbapi.ConnectionPool("sqlite3", db_filename, check_same_thread=False)
# init_defer is the initialisation deferred, initialisation is ok when all its callbacks have been done
# XXX: foreign_keys activation doesn't seem to work, probably because of the multi-threading
# All the requests that need to use this feature should be run with runInteraction instead,
# so you can set the PRAGMA as it is done in self.deleteProfile
init_defer = self.dbpool.runOperation("PRAGMA foreign_keys = ON").addErrback(lambda x: error(_("Can't activate foreign keys")))
def getNewBaseSql():
@ -162,8 +165,13 @@ class SqliteStorage(object):
error(_("Can't delete profile [%s]") % name)
return failure
del self.profiles[name]
d = self.dbpool.runQuery("DELETE FROM profiles WHERE name = ?", (name, ))
def delete(txn):
del self.profiles[name]
txn.execute("PRAGMA foreign_keys = ON")
txn.execute("DELETE FROM profiles WHERE name = ?", (name,))
return None
d = self.dbpool.runInteraction(delete)
d.addCallback(lambda ignore: info(_("Profile [%s] deleted") % name))
d.addErrback(deletionError)
return d