From 3fb1d0ad740441a565f546e3428ea7d7084f8953 Mon Sep 17 00:00:00 2001 From: terrtia Date: Tue, 7 Nov 2023 11:24:24 +0100 Subject: [PATCH] fix: [chats] fix messages replies --- bin/importer/feeders/abstract_chats_feeder.py | 7 ++++-- bin/lib/objects/abstract_chat_object.py | 25 +++++++++++++++---- .../chats_explorer/SubChannelMessages.html | 2 +- .../templates/chats_explorer/chat_viewer.html | 2 +- 4 files changed, 27 insertions(+), 9 deletions(-) diff --git a/bin/importer/feeders/abstract_chats_feeder.py b/bin/importer/feeders/abstract_chats_feeder.py index 21f12d0c..0b0d3ee0 100755 --- a/bin/importer/feeders/abstract_chats_feeder.py +++ b/bin/importer/feeders/abstract_chats_feeder.py @@ -79,6 +79,9 @@ class AbstractChatFeeder(DefaultFeeder, ABC): def get_thread_id(self): pass + def get_message_id(self): + return self.json_data['meta']['id'] + def get_message_timestamp(self): return self.json_data['meta']['date']['timestamp'] # TODO CREATE DEFAULT TIMESTAMP # if self.json_data['meta'].get('date'): @@ -142,7 +145,7 @@ class AbstractChatFeeder(DefaultFeeder, ABC): subchannel = self.process_subchannel(message, date, timestamp, reply_id=reply_id) chat.add_children(obj_global_id=subchannel.get_global_id()) else: - chat.add_message(message.get_global_id(), message.id, timestamp, reply_id=reply_id) + chat.add_message(message.get_global_id(), self.get_message_id(), timestamp, reply_id=reply_id) # if meta.get('subchannels'): # TODO Update icon + names @@ -166,7 +169,7 @@ class AbstractChatFeeder(DefaultFeeder, ABC): if meta.get('info'): subchannel.set_info(meta['info']) - subchannel.add_message(message.get_global_id(), message.id, timestamp, reply_id=reply_id) + subchannel.add_message(message.get_global_id(), self.get_message_id(), timestamp, reply_id=reply_id) return subchannel def process_sender(self, date, timestamp): diff --git a/bin/lib/objects/abstract_chat_object.py b/bin/lib/objects/abstract_chat_object.py index a8f4c960..2025f23c 100755 --- a/bin/lib/objects/abstract_chat_object.py +++ b/bin/lib/objects/abstract_chat_object.py @@ -20,7 +20,7 @@ sys.path.append(os.environ['AIL_BIN']) from lib.objects.abstract_subtype_object import AbstractSubtypeObject from lib.ail_core import get_object_all_subtypes, zscan_iter ################ from lib.ConfigLoader import ConfigLoader -from lib.objects.Messages import Message +from lib.objects import Messages from lib.objects.UsersAccount import UserAccount from lib.objects.Usernames import Username from lib.data_retention_engine import update_obj_date @@ -127,8 +127,20 @@ class AbstractChatObject(AbstractSubtypeObject, ABC): def _get_messages(self): # TODO paginate return r_object.zrange(f'messages:{self.type}:{self.subtype}:{self.id}', 0, -1, withscores=True) + def get_timestamp_first_message(self): + return r_object.zrange(f'messages:{self.type}:{self.subtype}:{self.id}', 0, 0, withscores=True) + + def get_timestamp_last_message(self): + return r_object.zrevrange(f'messages:{self.type}:{self.subtype}:{self.id}', 0, 0, withscores=True) + + def get_first_message(self): + return r_object.zrange(f'messages:{self.type}:{self.subtype}:{self.id}', 0, 0) + + def get_last_message(self): + return r_object.zrevrange(f'messages:{self.type}:{self.subtype}:{self.id}', 0, 0) + def get_message_meta(self, message, parent=True, mess_datetime=None): # TODO handle file message - obj = Message(message[9:]) + obj = Messages.Message(message[9:]) mess_dict = obj.get_meta(options={'content', 'link', 'parent', 'user-account'}) # print(mess_dict) if mess_dict.get('parent') and parent: @@ -149,8 +161,8 @@ class AbstractChatObject(AbstractSubtypeObject, ABC): mess_dict['user-account'] = {'id': 'UNKNOWN'} if not mess_datetime: - obj_mess_id = message.get_timestamp() - mess_datetime = datetime.fromtimestamp(obj_mess_id) + obj_mess_id = obj.get_timestamp() + mess_datetime = datetime.fromtimestamp(float(obj_mess_id)) mess_dict['date'] = mess_datetime.isoformat(' ') mess_dict['hour'] = mess_datetime.strftime('%H:%M:%S') return mess_dict @@ -193,7 +205,7 @@ class AbstractChatObject(AbstractSubtypeObject, ABC): def get_cached_message_reply(self, message_id): objs_global_id = [] for mess_id in self._get_message_cached_reply(message_id): - obj_global_id = self.get_obj_by_message_id(mess_id) # TODO CATCH EXCEPTION + obj_global_id = self.get_obj_by_message_id(mess_id) # TODO CATCH EXCEPTION if obj_global_id: objs_global_id.append(obj_global_id) return objs_global_id @@ -209,6 +221,9 @@ class AbstractChatObject(AbstractSubtypeObject, ABC): self.add_obj_children(reply_obj, obj_global_id) else: self.add_message_cached_reply(reply_id, message_id) + # CACHED REPLIES + for mess_id in self.get_cached_message_reply(message_id): + self.add_obj_children(obj_global_id, mess_id) # get_messages_meta ???? diff --git a/var/www/templates/chats_explorer/SubChannelMessages.html b/var/www/templates/chats_explorer/SubChannelMessages.html index a21c9065..9c173342 100644 --- a/var/www/templates/chats_explorer/SubChannelMessages.html +++ b/var/www/templates/chats_explorer/SubChannelMessages.html @@ -169,7 +169,7 @@ {% endif %} {% if mess['reply_to'] %} -
+
{% if mess['reply_to']['user-account']['username'] %} {{ mess['reply_to']['user-account']['username']['id'] }} diff --git a/var/www/templates/chats_explorer/chat_viewer.html b/var/www/templates/chats_explorer/chat_viewer.html index e7756137..1d6d961a 100644 --- a/var/www/templates/chats_explorer/chat_viewer.html +++ b/var/www/templates/chats_explorer/chat_viewer.html @@ -167,7 +167,7 @@ {% endif %}
{% if mess['reply_to'] %} -
+
{% if mess['reply_to']['user-account']['username'] %} {{ mess['reply_to']['user-account']['username']['id'] }}