Move logging GC messages into connection_handlers

- It should be where all other message received handlers are
- Port to new DB API
This commit is contained in:
Philipp Hörist 2017-08-08 15:24:41 +02:00
parent 608655deed
commit 8c920b35ff
3 changed files with 28 additions and 37 deletions

View File

@ -897,6 +897,8 @@ class ConnectionHandlersBase:
self._nec_message_received)
gajim.ged.register_event_handler('decrypted-message-received', ged.CORE,
self._nec_decrypted_message_received)
gajim.ged.register_event_handler('gc-message-received', ged.CORE,
self._nec_gc_message_received)
def cleanup(self):
gajim.ged.remove_event_handler('iq-error-received', ged.CORE,
@ -911,6 +913,8 @@ class ConnectionHandlersBase:
self._nec_message_received)
gajim.ged.remove_event_handler('decrypted-message-received', ged.CORE,
self._nec_decrypted_message_received)
gajim.ged.remove_event_handler('gc-message-received', ged.CORE,
self._nec_gc_message_received)
def _nec_iq_error_received(self, obj):
if obj.conn.name != self.name:
@ -1157,6 +1161,24 @@ class ConnectionHandlersBase:
conn=self, msg_obj=obj))
return True
def _nec_gc_message_received(self, obj):
if gajim.config.should_log(obj.conn.name, obj.jid) and not \
obj.timestamp < obj.conn.last_history_time[obj.jid] and obj.msgtxt and \
obj.nick:
# if not obj.nick, it means message comes from room itself
# usually it hold description and can be send at each connection
# so don't store it in logs
gajim.logger.insert_into_logs(obj.jid,
obj.timestamp,
KindConstant.GC_MSG,
message=obj.msgtxt,
contact_name=obj.nick,
additional_data=obj.additional_data)
# store in memory time of last message logged.
# this will also be saved in rooms_last_message_time table
# when we quit this muc
obj.conn.last_history_time[obj.jid] = obj.timestamp
# process and dispatch an error message
def dispatch_error_message(self, msg, msgtxt, session, frm, tim):
error_msg = msg.getErrorMsg()

View File

@ -1145,7 +1145,7 @@ class MessageReceivedEvent(nec.NetworkIncomingEvent, HelperEvent):
base_network_events = ['raw-message-received']
def init(self):
self.additional_data = {}
self.additional_data = None
def generate(self):
self.conn = self.base_event.conn

View File

@ -122,8 +122,6 @@ class Logger:
# db will be created in src/common/checks_paths.py
return
self.attach_cache_database()
gajim.ged.register_event_handler('gc-message-received',
ged.POSTCORE, self._nec_gc_message_received)
@staticmethod
def namedtuple_factory(cursor, row):
@ -592,25 +590,11 @@ class Logger:
write_unread = False
try:
if kind == 'gc_msg':
if jid.find('/') != -1: # if it has a /
jid, nick = jid.split('/', 1)
else:
# it's server message f.e. error message
# when user tries to ban someone but he's not allowed to
nick = None
# re-get jid_id for the new jid
jid_id = self.get_jid_id(jid, 'ROOM')
contact_name_col = nick
else:
jid_id = self.get_jid_id(jid)
if kind == 'chat_msg_recv':
if not self.jid_is_from_pm(jid) and not mam_query:
# Save in unread table only if it's not a pm
write_unread = True
jid_id = self.get_jid_id(jid)
if kind == 'chat_msg_recv':
if not self.jid_is_from_pm(jid) and not mam_query:
# Save in unread table only if it's not a pm
write_unread = True
values = (jid_id, contact_name_col, time_col, kind_col, None,
message_col, subject_col, additional_data_col)
@ -1206,18 +1190,3 @@ class Logger:
self._timeout_commit()
return lastrowid
def _nec_gc_message_received(self, obj):
tim_f = float(obj.timestamp)
tim_int = int(tim_f)
if gajim.config.should_log(obj.conn.name, obj.jid) and not \
tim_int < obj.conn.last_history_time[obj.jid] and obj.msgtxt and \
obj.nick:
# if not obj.nick, it means message comes from room itself
# usually it hold description and can be send at each connection
# so don't store it in logs
self.write('gc_msg', obj.fjid, obj.msgtxt, tim=obj.timestamp, additional_data=obj.additional_data)
# store in memory time of last message logged.
# this will also be saved in rooms_last_message_time table
# when we quit this muc
obj.conn.last_history_time[obj.jid] = tim_f