prevent to merge several times the same groupchat message. We cannot differentiate pm and gc messages when we only store <body>. So we need to look in both to know if we already have it in logs
This commit is contained in:
parent
623a51d53f
commit
d8405f6e9f
|
@ -48,6 +48,9 @@ import configpaths
|
||||||
LOG_DB_PATH = configpaths.gajimpaths['LOG_DB']
|
LOG_DB_PATH = configpaths.gajimpaths['LOG_DB']
|
||||||
LOG_DB_FOLDER, LOG_DB_FILE = os.path.split(LOG_DB_PATH)
|
LOG_DB_FOLDER, LOG_DB_FILE = os.path.split(LOG_DB_PATH)
|
||||||
|
|
||||||
|
import logging
|
||||||
|
log = logging.getLogger('gajim.c.logger')
|
||||||
|
|
||||||
class Constants:
|
class Constants:
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
(
|
(
|
||||||
|
@ -143,7 +146,7 @@ class Logger:
|
||||||
else:
|
else:
|
||||||
self.cur.execute("PRAGMA synchronous = OFF")
|
self.cur.execute("PRAGMA synchronous = OFF")
|
||||||
except sqlite.Error, e:
|
except sqlite.Error, e:
|
||||||
gajim.log.debug("Failed to set_synchronous(%s): %s" % (sync, str(e)))
|
log.debug("Failed to set_synchronous(%s): %s" % (sync, str(e)))
|
||||||
|
|
||||||
def init_vars(self):
|
def init_vars(self):
|
||||||
self.open_db()
|
self.open_db()
|
||||||
|
@ -1003,6 +1006,14 @@ class Logger:
|
||||||
type_ = 'chat_msg_sent'
|
type_ = 'chat_msg_sent'
|
||||||
jid_id = self.get_jid_id(with_)
|
jid_id = self.get_jid_id(with_)
|
||||||
where_sql = 'jid_id = %s AND message="%s"' % (jid_id, msg)
|
where_sql = 'jid_id = %s AND message="%s"' % (jid_id, msg)
|
||||||
|
if type_ == 'gc_msg':
|
||||||
|
# We cannot differentiate gc message and pm messages, so look in both
|
||||||
|
# logs
|
||||||
|
with_2 = gajim.get_jid_without_resource(with_)
|
||||||
|
if with_ != with_2:
|
||||||
|
jid_id2 = self.get_jid_id(with_2)
|
||||||
|
where_sql = 'jid_id in (%s, %s) AND message="%s"' % (jid_id,
|
||||||
|
jid_id2, msg)
|
||||||
start_time = time_col - 300 # 5 minutes arrount given time
|
start_time = time_col - 300 # 5 minutes arrount given time
|
||||||
end_time = time_col + 300 # 5 minutes arrount given time
|
end_time = time_col + 300 # 5 minutes arrount given time
|
||||||
self.cur.execute('''
|
self.cur.execute('''
|
||||||
|
@ -1013,7 +1024,9 @@ class Logger:
|
||||||
''' % (where_sql, start_time, end_time))
|
''' % (where_sql, start_time, end_time))
|
||||||
results = self.cur.fetchall()
|
results = self.cur.fetchall()
|
||||||
if results:
|
if results:
|
||||||
|
log.debug('Log already in DB, ignoring it')
|
||||||
return
|
return
|
||||||
|
log.debug('New log received from server archives, storing it')
|
||||||
self.write(type_, with_, message=msg, tim=tim)
|
self.write(type_, with_, message=msg, tim=tim)
|
||||||
|
|
||||||
# vim: se ts=3:
|
# vim: se ts=3:
|
||||||
|
|
Loading…
Reference in New Issue