coding standards
This commit is contained in:
parent
4cfd56a69b
commit
da398aa418
|
@ -130,8 +130,8 @@ class Logger:
|
||||||
# if locked, wait up to 20 sec to unlock
|
# if locked, wait up to 20 sec to unlock
|
||||||
# before raise (hopefully should be enough)
|
# before raise (hopefully should be enough)
|
||||||
|
|
||||||
self.con = sqlite.connect(LOG_DB_FILE, timeout = 20.0,
|
self.con = sqlite.connect(LOG_DB_FILE, timeout=20.0,
|
||||||
isolation_level = 'IMMEDIATE')
|
isolation_level='IMMEDIATE')
|
||||||
os.chdir(back)
|
os.chdir(back)
|
||||||
self.cur = self.con.cursor()
|
self.cur = self.con.cursor()
|
||||||
self.set_synchronous(False)
|
self.set_synchronous(False)
|
||||||
|
@ -160,7 +160,8 @@ class Logger:
|
||||||
def get_jids_already_in_db(self):
|
def get_jids_already_in_db(self):
|
||||||
try:
|
try:
|
||||||
self.cur.execute('SELECT jid FROM jids')
|
self.cur.execute('SELECT jid FROM jids')
|
||||||
rows = self.cur.fetchall() # list of tupples: [(u'aaa@bbb',), (u'cc@dd',)]
|
# list of tupples: [(u'aaa@bbb',), (u'cc@dd',)]
|
||||||
|
rows = self.cur.fetchall()
|
||||||
except sqlite.DatabaseError:
|
except sqlite.DatabaseError:
|
||||||
raise exceptions.DatabaseMalformed
|
raise exceptions.DatabaseMalformed
|
||||||
self.jids_already_in = []
|
self.jids_already_in = []
|
||||||
|
@ -200,7 +201,7 @@ class Logger:
|
||||||
else:
|
else:
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def get_jid_id(self, jid, typestr = None):
|
def get_jid_id(self, jid, typestr=None):
|
||||||
'''jids table has jid and jid_id
|
'''jids table has jid and jid_id
|
||||||
logs table has log_id, jid_id, contact_name, time, kind, show, message
|
logs table has log_id, jid_id, contact_name, time, kind, show, message
|
||||||
so to ask logs we need jid_id that matches our jid in jids table
|
so to ask logs we need jid_id that matches our jid in jids table
|
||||||
|
@ -360,8 +361,9 @@ class Logger:
|
||||||
if sub == constants.SUBSCRIPTION_BOTH:
|
if sub == constants.SUBSCRIPTION_BOTH:
|
||||||
return 'both'
|
return 'both'
|
||||||
|
|
||||||
def commit_to_db(self, values, write_unread = False):
|
def commit_to_db(self, values, write_unread=False):
|
||||||
sql = 'INSERT INTO logs (jid_id, contact_name, time, kind, show, message, subject) VALUES (?, ?, ?, ?, ?, ?, ?)'
|
sql = '''INSERT INTO logs (jid_id, contact_name, time, kind, show,
|
||||||
|
message, subject) VALUES (?, ?, ?, ?, ?, ?, ?)'''
|
||||||
try:
|
try:
|
||||||
self.cur.execute(sql, values)
|
self.cur.execute(sql, values)
|
||||||
except sqlite.DatabaseError:
|
except sqlite.DatabaseError:
|
||||||
|
@ -432,8 +434,7 @@ class Logger:
|
||||||
all_messages.append(results[0] + (shown,))
|
all_messages.append(results[0] + (shown,))
|
||||||
return all_messages
|
return all_messages
|
||||||
|
|
||||||
def write(self, kind, jid, message = None, show = None, tim = None,
|
def write(self, kind, jid, message=None, show=None, tim=None, subject=None):
|
||||||
subject = None):
|
|
||||||
'''write a row (status, gcstatus, message etc) to logs database
|
'''write a row (status, gcstatus, message etc) to logs database
|
||||||
kind can be status, gcstatus, gc_msg, (we only recv for those 3),
|
kind can be status, gcstatus, gc_msg, (we only recv for those 3),
|
||||||
single_msg_recv, chat_msg_recv, chat_msg_sent, single_msg_sent
|
single_msg_recv, chat_msg_recv, chat_msg_sent, single_msg_sent
|
||||||
|
@ -515,7 +516,7 @@ class Logger:
|
||||||
return self.commit_to_db(values, write_unread)
|
return self.commit_to_db(values, write_unread)
|
||||||
|
|
||||||
def get_last_conversation_lines(self, jid, restore_how_many_rows,
|
def get_last_conversation_lines(self, jid, restore_how_many_rows,
|
||||||
pending_how_many, timeout, account):
|
pending_how_many, timeout, account):
|
||||||
'''accepts how many rows to restore and when to time them out (in minutes)
|
'''accepts how many rows to restore and when to time them out (in minutes)
|
||||||
(mark them as too old) and number of messages that are in queue
|
(mark them as too old) and number of messages that are in queue
|
||||||
and are already logged but pending to be viewed,
|
and are already logged but pending to be viewed,
|
||||||
|
@ -594,7 +595,7 @@ class Logger:
|
||||||
# Error trying to create a new jid_id. This means there is no log
|
# Error trying to create a new jid_id. This means there is no log
|
||||||
return []
|
return []
|
||||||
|
|
||||||
if False: #query.startswith('SELECT '): # it's SQL query (FIXME)
|
if False: # query.startswith('SELECT '): # it's SQL query (FIXME)
|
||||||
try:
|
try:
|
||||||
self.cur.execute(query)
|
self.cur.execute(query)
|
||||||
except sqlite.OperationalError, e:
|
except sqlite.OperationalError, e:
|
||||||
|
@ -648,7 +649,7 @@ class Logger:
|
||||||
|
|
||||||
return days_with_logs
|
return days_with_logs
|
||||||
|
|
||||||
def get_last_date_that_has_logs(self, jid, account = None, is_room = False):
|
def get_last_date_that_has_logs(self, jid, account=None, is_room=False):
|
||||||
'''returns last time (in seconds since EPOCH) for which
|
'''returns last time (in seconds since EPOCH) for which
|
||||||
we had logs (excluding statuses)'''
|
we had logs (excluding statuses)'''
|
||||||
where_sql = ''
|
where_sql = ''
|
||||||
|
@ -759,10 +760,12 @@ class Logger:
|
||||||
return answer
|
return answer
|
||||||
|
|
||||||
# A longer note here:
|
# A longer note here:
|
||||||
# The database contains a blob field. Pysqlite seems to need special care for such fields.
|
# The database contains a blob field. Pysqlite seems to need special care for
|
||||||
|
# such fields.
|
||||||
# When storing, we need to convert string into buffer object (1).
|
# When storing, we need to convert string into buffer object (1).
|
||||||
# When retrieving, we need to convert it back to a string to decompress it. (2)
|
# When retrieving, we need to convert it back to a string to decompress it.
|
||||||
# GzipFile needs a file-like object, StringIO emulates file for plain strings.
|
# (2)
|
||||||
|
# GzipFile needs a file-like object, StringIO emulates file for plain strings
|
||||||
def iter_caps_data(self):
|
def iter_caps_data(self):
|
||||||
''' Iterate over caps cache data stored in the database.
|
''' Iterate over caps cache data stored in the database.
|
||||||
The iterator values are pairs of (node, ver, ext, identities, features):
|
The iterator values are pairs of (node, ver, ext, identities, features):
|
||||||
|
@ -787,12 +790,13 @@ class Logger:
|
||||||
# ..., 'FEAT', feature1, feature2, ...).join(' '))
|
# ..., 'FEAT', feature1, feature2, ...).join(' '))
|
||||||
# NOTE: if there's a need to do more gzip, put that to a function
|
# NOTE: if there's a need to do more gzip, put that to a function
|
||||||
try:
|
try:
|
||||||
data = GzipFile(fileobj=StringIO(str(data))).read().decode('utf-8').split('\0')
|
data = GzipFile(fileobj=StringIO(str(data))).read().decode(
|
||||||
|
'utf-8').split('\0')
|
||||||
except IOError:
|
except IOError:
|
||||||
# This data is corrupted. It probably contains non-ascii chars
|
# This data is corrupted. It probably contains non-ascii chars
|
||||||
to_be_removed.append((hash_method, hash_))
|
to_be_removed.append((hash_method, hash_))
|
||||||
continue
|
continue
|
||||||
i=0
|
i = 0
|
||||||
identities = list()
|
identities = list()
|
||||||
features = list()
|
features = list()
|
||||||
while i < (len(data) - 3) and data[i] != 'FEAT':
|
while i < (len(data) - 3) and data[i] != 'FEAT':
|
||||||
|
@ -811,11 +815,12 @@ class Logger:
|
||||||
# yield the row
|
# yield the row
|
||||||
yield hash_method, hash_, identities, features
|
yield hash_method, hash_, identities, features
|
||||||
for hash_method, hash_ in to_be_removed:
|
for hash_method, hash_ in to_be_removed:
|
||||||
sql = 'DELETE FROM caps_cache WHERE hash_method = "%s" AND hash = "%s"' % (hash_method, hash_)
|
sql = '''DELETE FROM caps_cache WHERE hash_method = "%s" AND
|
||||||
|
hash = "%s"''' % (hash_method, hash_)
|
||||||
self.simple_commit(sql)
|
self.simple_commit(sql)
|
||||||
|
|
||||||
def add_caps_entry(self, hash_method, hash_, identities, features):
|
def add_caps_entry(self, hash_method, hash_, identities, features):
|
||||||
data=[]
|
data = []
|
||||||
for identity in identities:
|
for identity in identities:
|
||||||
# there is no FEAT category
|
# there is no FEAT category
|
||||||
if identity['category'] == 'FEAT':
|
if identity['category'] == 'FEAT':
|
||||||
|
@ -875,8 +880,12 @@ class Logger:
|
||||||
jid_id = self.get_jid_id(jid)
|
jid_id = self.get_jid_id(jid)
|
||||||
except exceptions.PysqliteOperationalError, e:
|
except exceptions.PysqliteOperationalError, e:
|
||||||
raise exceptions.PysqliteOperationalError(str(e))
|
raise exceptions.PysqliteOperationalError(str(e))
|
||||||
self.cur.execute('DELETE FROM roster_group WHERE account_jid_id=? AND jid_id=?', (account_jid_id, jid_id))
|
self.cur.execute(
|
||||||
self.cur.execute('DELETE FROM roster_entry WHERE account_jid_id=? AND jid_id=?', (account_jid_id, jid_id))
|
'DELETE FROM roster_group WHERE account_jid_id=? AND jid_id=?',
|
||||||
|
(account_jid_id, jid_id))
|
||||||
|
self.cur.execute(
|
||||||
|
'DELETE FROM roster_entry WHERE account_jid_id=? AND jid_id=?',
|
||||||
|
(account_jid_id, jid_id))
|
||||||
self.con.commit()
|
self.con.commit()
|
||||||
|
|
||||||
def add_or_update_contact(self, account_jid, jid, name, sub, ask, groups):
|
def add_or_update_contact(self, account_jid, jid, name, sub, ask, groups):
|
||||||
|
@ -893,7 +902,9 @@ class Logger:
|
||||||
|
|
||||||
# Update groups information
|
# Update groups information
|
||||||
# First we delete all previous groups information
|
# First we delete all previous groups information
|
||||||
self.cur.execute('DELETE FROM roster_group WHERE account_jid_id=? AND jid_id=?', (account_jid_id, jid_id))
|
self.cur.execute(
|
||||||
|
'DELETE FROM roster_group WHERE account_jid_id=? AND jid_id=?',
|
||||||
|
(account_jid_id, jid_id))
|
||||||
# Then we add all new groups information
|
# Then we add all new groups information
|
||||||
for group in groups:
|
for group in groups:
|
||||||
self.cur.execute('INSERT INTO roster_group VALUES(?, ?, ?)',
|
self.cur.execute('INSERT INTO roster_group VALUES(?, ?, ?)',
|
||||||
|
@ -914,14 +925,19 @@ class Logger:
|
||||||
account_jid_id = self.get_jid_id(account_jid)
|
account_jid_id = self.get_jid_id(account_jid)
|
||||||
|
|
||||||
# First we fill data with roster_entry informations
|
# First we fill data with roster_entry informations
|
||||||
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=? AND j.jid_id=re.jid_id', (account_jid_id,))
|
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=? AND j.jid_id=re.jid_id''', (account_jid_id,))
|
||||||
for jid, jid_id, name, subscription, ask in self.cur:
|
for jid, jid_id, name, subscription, ask in self.cur:
|
||||||
data[jid] = {}
|
data[jid] = {}
|
||||||
if name:
|
if name:
|
||||||
data[jid]['name'] = name
|
data[jid]['name'] = name
|
||||||
else:
|
else:
|
||||||
data[jid]['name'] = None
|
data[jid]['name'] = None
|
||||||
data[jid]['subscription'] = self.convert_db_api_values_to_human_subscription_values(subscription)
|
data[jid]['subscription'] = \
|
||||||
|
self.convert_db_api_values_to_human_subscription_values(
|
||||||
|
subscription)
|
||||||
data[jid]['groups'] = []
|
data[jid]['groups'] = []
|
||||||
data[jid]['resources'] = {}
|
data[jid]['resources'] = {}
|
||||||
if ask:
|
if ask:
|
||||||
|
@ -932,7 +948,10 @@ class Logger:
|
||||||
|
|
||||||
# Then we add group for roster entries
|
# Then we add group for roster entries
|
||||||
for jid in data:
|
for jid in data:
|
||||||
self.cur.execute('SELECT group_name FROM roster_group WHERE account_jid_id=? AND jid_id=?', (account_jid_id, data[jid]['id']))
|
self.cur.execute('''
|
||||||
|
SELECT group_name FROM roster_group
|
||||||
|
WHERE account_jid_id=? AND jid_id=?''',
|
||||||
|
(account_jid_id, data[jid]['id']))
|
||||||
for (group_name,) in self.cur:
|
for (group_name,) in self.cur:
|
||||||
data[jid]['groups'].append(group_name)
|
data[jid]['groups'].append(group_name)
|
||||||
del data[jid]['id']
|
del data[jid]['id']
|
||||||
|
|
Loading…
Reference in New Issue