changeset b67198acb52f in /home/hg/repos/gajim
details:http://hg.gajim.org/gajim?cmd=changeset;node=b67198acb52f description: * added 'ask' support * fixed a bug (when a contact does not have a name)
diffstat:
src/common/check_paths.py | 1 + src/common/connection_handlers.py | 2 +- src/common/logger.py | 29 ++++++++++++++++++++--------- src/common/optparser.py | 1 + 4 files changed, 23 insertions(+), 10 deletions(-)
diffs (98 lines):
diff -r af17977674b1 -r b67198acb52f src/common/check_paths.py --- a/src/common/check_paths.py Sat Jun 27 17:56:04 2009 +0200 +++ b/src/common/check_paths.py Sat Jun 27 20:54:49 2009 +0200 @@ -102,6 +102,7 @@ jid_id INTEGER, name TEXT, subscription INTEGER, + ask BOOLEAN, PRIMARY KEY (account_jid_id, jid_id) );
diff -r af17977674b1 -r b67198acb52f src/common/connection_handlers.py --- a/src/common/connection_handlers.py Sat Jun 27 17:56:04 2009 +0200 +++ b/src/common/connection_handlers.py Sat Jun 27 20:54:49 2009 +0200 @@ -1565,7 +1565,7 @@ if version: account_jid = gajim.get_jid_from_account(self.name) gajim.logger.add_or_update_contact(account_jid, jid, name, sub, - groups) + ask, groups) gajim.config.set_per('accounts', self.name, 'roster_version', version) if not self.connection or self.connected < 2: diff -r af17977674b1 -r b67198acb52f src/common/logger.py --- a/src/common/logger.py Sat Jun 27 17:56:04 2009 +0200 +++ b/src/common/logger.py Sat Jun 27 20:54:49 2009 +0200 @@ -846,7 +846,8 @@ # Fill roster tables with the new roster for jid in roster: self.add_or_update_contact(account_jid, jid, roster[jid]['name'], - roster[jid]['subscription'], roster[jid]['groups']) + roster[jid]['subscription'], roster[jid]['ask'], + roster[jid]['groups']) gajim.config.set_per('accounts', account_name, 'roster_version', roster_version)
@@ -860,7 +861,7 @@ sql = 'DELETE FROM roster_entry WHERE account_jid_id = %d AND jid_id = %d' % (account_jid_id, jid_id) self.simple_commit(sql)
- def add_or_update_contact(self, account_jid, jid, name, sub, groups): + def add_or_update_contact(self, account_jid, jid, name, sub, ask, groups): ''' Add or update a contact from account_jid roster. ''' if sub == 'remove': self.del_contact(account_jid, jid) @@ -882,9 +883,13 @@ account_jid_id, jid_id, group) self.cur.execute(sql)
- sql = 'REPLACE INTO roster_entry VALUES("%d", "%d", "%s", "%d")' % ( - account_jid_id, jid_id, name, - self.convert_human_subscription_values_to_db_api_values(sub)) + if name is None: + name = '' + + sql = 'REPLACE INTO roster_entry VALUES("%d", "%d", "%s", "%s", "%d")'\ + % (account_jid_id, jid_id, name, + self.convert_human_subscription_values_to_db_api_values(sub), + bool(ask)) self.simple_commit(sql)
def get_roster(self, account_jid): @@ -893,14 +898,20 @@ account_jid_id = self.get_jid_id(account_jid)
# First we fill data with roster_entry informations - self.cur.execute('SELECT j.jid, re.jid_id, re.name, re.subscription FROM roster_entry re, jids j WHERE re.account_jid_id="%(account_jid_id)s" AND j.jid_id=re.jid_id' % {'account_jid_id': account_jid_id}) - for jid, jid_id, name, subscription in self.cur: + self.cur.execute('SELECT j.jid, re.jid_id, re.name, re.subscription, re.ask FROM roster_entry re, jids j WHERE re.account_jid_id="%(account_jid_id)s" AND j.jid_id=re.jid_id' % {'account_jid_id': account_jid_id}) + for jid, jid_id, name, subscription, ask in self.cur: data[jid] = {} - data[jid]['name'] = name + if name: + data[jid]['name'] = name + else: + data[jid]['name'] = None data[jid]['subscription'] = self.convert_db_api_values_to_human_subscription_values(subscription) data[jid]['groups'] = [] data[jid]['resources'] = {} - data[jid]['ask'] = None + if ask: + data[jid]['ask'] = 'subscribe' + else: + data[jid]['ask'] = None data[jid]['id'] = jid_id
# Then we add group for roster entries diff -r af17977674b1 -r b67198acb52f src/common/optparser.py --- a/src/common/optparser.py Sat Jun 27 17:56:04 2009 +0200 +++ b/src/common/optparser.py Sat Jun 27 20:54:49 2009 +0200 @@ -687,6 +687,7 @@ jid_id INTEGER, name TEXT, subscription INTEGER, + ask BOOLEAN, PRIMARY KEY (account_jid_id, jid_id) );