changeset 566:9faccd827657

core: sqlite storage constraint fix
author Goffi <goffi@goffi.org>
date Mon, 07 Jan 2013 00:57:50 +0100
parents 7573897831ee
children 01569aa4d7aa
files src/memory/memory.py src/memory/sqlite.py
diffstat 2 files changed, 7 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/src/memory/memory.py	Mon Jan 07 00:56:13 2013 +0100
+++ b/src/memory/memory.py	Mon Jan 07 00:57:50 2013 +0100
@@ -141,7 +141,7 @@
         @param profile: profile of the profile"""
         #FIXME: must be asynchronous and call the callback once the profile actually exists
         if self.storage.hasProfile(profile):
-            info (_('The profile profile already exists'))
+            info (_('The profile [%s] already exists') % (profile,))
             return True
         if not self.host.trigger.point("ProfileCreation", profile):
             return False
@@ -679,7 +679,7 @@
         """Add an identity discovered from server
         @param feature: string of the feature
         @param profile: which profile is using this server ?"""
-        if not self.server_identities.has_key(profile):
+        if not profile in self.server_identities:
             self.server_identities[profile] = {}
         if not self.server_identities[profile].has_key((category, _type)):
             self.server_identities[profile][(category, _type)]=set()
@@ -687,7 +687,7 @@
 
     def getServerServiceEntities(self, category, _type, profile):
         """Return all available entities for a service"""
-        if self.server_identities.has_key(profile):
+        if profile in self.server_identities:
             return self.server_identities[profile].get((category, _type), set())
         else:
             return None
--- a/src/memory/sqlite.py	Mon Jan 07 00:56:13 2013 +0100
+++ b/src/memory/sqlite.py	Mon Jan 07 00:57:50 2013 +0100
@@ -52,13 +52,13 @@
             "INSERT INTO message_types VALUES ('groupchat')",
             "INSERT INTO message_types VALUES ('headline')",
             "INSERT INTO message_types VALUES ('normal')",
-            "CREATE TABLE history (id INTEGER PRIMARY KEY ASC, profile_id INTEGER, source TEXT, dest TEXT, source_res TEXT, dest_res TEXT, timestamp DATETIME, message TEXT, type TEXT, FOREIGN KEY(profile_id) REFERENCES profiles(id), FOREIGN KEY(type) REFERENCES message_types(type))",
+            "CREATE TABLE history (id INTEGER PRIMARY KEY ASC, profile_id INTEGER, source TEXT, dest TEXT, source_res TEXT, dest_res TEXT, timestamp DATETIME, message TEXT, type TEXT, FOREIGN KEY(profile_id) REFERENCES profiles(id) ON DELETE CASCADE, FOREIGN KEY(type) REFERENCES message_types(type))",
             "CREATE TABLE param_gen (category TEXT, name TEXT, value TEXT, PRIMARY KEY (category,name))",
-            "CREATE TABLE param_ind (category TEXT, name TEXT, profile_id INTEGER, value TEXT, PRIMARY KEY (category,name,profile_id), FOREIGN KEY(profile_id) REFERENCES profiles(id))",
+            "CREATE TABLE param_ind (category TEXT, name TEXT, profile_id INTEGER, value TEXT, PRIMARY KEY (category,name,profile_id), FOREIGN KEY(profile_id) REFERENCES profiles(id) ON DELETE CASCADE)",
             "CREATE TABLE private_gen (namespace TEXT, key TEXT, value TEXT, PRIMARY KEY (namespace, key))",
-            "CREATE TABLE private_ind (namespace TEXT, key TEXT, profile_id INTEGER, value TEXT, PRIMARY KEY (namespace, key, profile_id), FOREIGN KEY(profile_id) REFERENCES profiles(id))",
+            "CREATE TABLE private_ind (namespace TEXT, key TEXT, profile_id INTEGER, value TEXT, PRIMARY KEY (namespace, key, profile_id), FOREIGN KEY(profile_id) REFERENCES profiles(id) ON DELETE CASCADE)",
             "CREATE TABLE private_gen_bin (namespace TEXT, key TEXT, value BLOB, PRIMARY KEY (namespace, key))",
-            "CREATE TABLE private_ind_bin (namespace TEXT, key TEXT, profile_id INTEGER, value BLOB, PRIMARY KEY (namespace, key, profile_id), FOREIGN KEY(profile_id) REFERENCES profiles(id))",
+            "CREATE TABLE private_ind_bin (namespace TEXT, key TEXT, profile_id INTEGER, value BLOB, PRIMARY KEY (namespace, key, profile_id), FOREIGN KEY(profile_id) REFERENCES profiles(id) ON DELETE CASCADE)",
             ]
             for op in database_creation:
                 d = self.dbpool.runOperation(op)