# HG changeset patch # User Goffi # Date 1357516670 -3600 # Node ID 9faccd8276571e8acc59fb27fd98e9dd470b1d02 # Parent 7573897831ee2871d13c7ecbe193b062e9d81293 core: sqlite storage constraint fix diff -r 7573897831ee -r 9faccd827657 src/memory/memory.py --- 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 diff -r 7573897831ee -r 9faccd827657 src/memory/sqlite.py --- 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)