* added 'ask' support

* fixed a bug (when a contact does not have a name)
This commit is contained in:
Anaël Verrier 2009-06-27 20:54:49 +02:00
parent d347b79c38
commit b3fbd59866
4 changed files with 23 additions and 10 deletions

View File

@ -102,6 +102,7 @@ def create_log_db():
jid_id INTEGER,
name TEXT,
subscription INTEGER,
ask BOOLEAN,
PRIMARY KEY (account_jid_id, jid_id)
);

View File

@ -1565,7 +1565,7 @@ class ConnectionHandlers(ConnectionVcard, ConnectionBytestream, ConnectionDisco,
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:

View File

@ -846,7 +846,8 @@ class Logger:
# 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 @@ class Logger:
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 @@ class Logger:
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 @@ class Logger:
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

View File

@ -687,6 +687,7 @@ class OptionsParser:
jid_id INTEGER,
name TEXT,
subscription INTEGER,
ask BOOLEAN,
PRIMARY KEY (account_jid_id, jid_id)
);