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:
parent
608655deed
commit
8c920b35ff
3 changed files with 28 additions and 37 deletions
|
@ -897,6 +897,8 @@ class ConnectionHandlersBase:
|
||||||
self._nec_message_received)
|
self._nec_message_received)
|
||||||
gajim.ged.register_event_handler('decrypted-message-received', ged.CORE,
|
gajim.ged.register_event_handler('decrypted-message-received', ged.CORE,
|
||||||
self._nec_decrypted_message_received)
|
self._nec_decrypted_message_received)
|
||||||
|
gajim.ged.register_event_handler('gc-message-received', ged.CORE,
|
||||||
|
self._nec_gc_message_received)
|
||||||
|
|
||||||
def cleanup(self):
|
def cleanup(self):
|
||||||
gajim.ged.remove_event_handler('iq-error-received', ged.CORE,
|
gajim.ged.remove_event_handler('iq-error-received', ged.CORE,
|
||||||
|
@ -911,6 +913,8 @@ class ConnectionHandlersBase:
|
||||||
self._nec_message_received)
|
self._nec_message_received)
|
||||||
gajim.ged.remove_event_handler('decrypted-message-received', ged.CORE,
|
gajim.ged.remove_event_handler('decrypted-message-received', ged.CORE,
|
||||||
self._nec_decrypted_message_received)
|
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):
|
def _nec_iq_error_received(self, obj):
|
||||||
if obj.conn.name != self.name:
|
if obj.conn.name != self.name:
|
||||||
|
@ -1157,6 +1161,24 @@ class ConnectionHandlersBase:
|
||||||
conn=self, msg_obj=obj))
|
conn=self, msg_obj=obj))
|
||||||
return True
|
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
|
# process and dispatch an error message
|
||||||
def dispatch_error_message(self, msg, msgtxt, session, frm, tim):
|
def dispatch_error_message(self, msg, msgtxt, session, frm, tim):
|
||||||
error_msg = msg.getErrorMsg()
|
error_msg = msg.getErrorMsg()
|
||||||
|
|
|
@ -1145,7 +1145,7 @@ class MessageReceivedEvent(nec.NetworkIncomingEvent, HelperEvent):
|
||||||
base_network_events = ['raw-message-received']
|
base_network_events = ['raw-message-received']
|
||||||
|
|
||||||
def init(self):
|
def init(self):
|
||||||
self.additional_data = {}
|
self.additional_data = None
|
||||||
|
|
||||||
def generate(self):
|
def generate(self):
|
||||||
self.conn = self.base_event.conn
|
self.conn = self.base_event.conn
|
||||||
|
|
|
@ -122,8 +122,6 @@ class Logger:
|
||||||
# db will be created in src/common/checks_paths.py
|
# db will be created in src/common/checks_paths.py
|
||||||
return
|
return
|
||||||
self.attach_cache_database()
|
self.attach_cache_database()
|
||||||
gajim.ged.register_event_handler('gc-message-received',
|
|
||||||
ged.POSTCORE, self._nec_gc_message_received)
|
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def namedtuple_factory(cursor, row):
|
def namedtuple_factory(cursor, row):
|
||||||
|
@ -592,25 +590,11 @@ class Logger:
|
||||||
|
|
||||||
write_unread = False
|
write_unread = False
|
||||||
try:
|
try:
|
||||||
if kind == 'gc_msg':
|
jid_id = self.get_jid_id(jid)
|
||||||
if jid.find('/') != -1: # if it has a /
|
if kind == 'chat_msg_recv':
|
||||||
jid, nick = jid.split('/', 1)
|
if not self.jid_is_from_pm(jid) and not mam_query:
|
||||||
else:
|
# Save in unread table only if it's not a pm
|
||||||
# it's server message f.e. error message
|
write_unread = True
|
||||||
# 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
|
|
||||||
|
|
||||||
|
|
||||||
values = (jid_id, contact_name_col, time_col, kind_col, None,
|
values = (jid_id, contact_name_col, time_col, kind_col, None,
|
||||||
message_col, subject_col, additional_data_col)
|
message_col, subject_col, additional_data_col)
|
||||||
|
@ -1206,18 +1190,3 @@ class Logger:
|
||||||
self._timeout_commit()
|
self._timeout_commit()
|
||||||
|
|
||||||
return lastrowid
|
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
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue