diff --git a/.DS_Store b/.DS_Store index 34876ef9..163881c9 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/osinaweb/.DS_Store b/osinaweb/.DS_Store index f1bb4d71..63901822 100644 Binary files a/osinaweb/.DS_Store and b/osinaweb/.DS_Store differ diff --git a/osinaweb/db.sqlite3 b/osinaweb/db.sqlite3 index ee8b69d3..d6d1ef97 100644 Binary files a/osinaweb/db.sqlite3 and b/osinaweb/db.sqlite3 differ diff --git a/osinaweb/osichat/__pycache__/consumers.cpython-310.pyc b/osinaweb/osichat/__pycache__/consumers.cpython-310.pyc index 502837df..5888301d 100644 Binary files a/osinaweb/osichat/__pycache__/consumers.cpython-310.pyc and b/osinaweb/osichat/__pycache__/consumers.cpython-310.pyc differ diff --git a/osinaweb/osichat/consumers.py b/osinaweb/osichat/consumers.py index 2e9f1d42..3c709c6d 100644 --- a/osinaweb/osichat/consumers.py +++ b/osinaweb/osichat/consumers.py @@ -59,6 +59,7 @@ class OsitcomVisitor(WebsocketConsumer): class Osichat(WebsocketConsumer): def connect(self): + self.user = self.scope["user"] async_to_sync(self.channel_layer.group_add)( 'osichat', self.channel_name ) @@ -75,7 +76,6 @@ class Osichat(WebsocketConsumer): if event_type == 'set_client_type': self.client_type = data.get('client_type') - self.user_id = data.get('user_id') event = { 'type': 'get_chats_handler', } @@ -112,10 +112,8 @@ class Osichat(WebsocketConsumer): default=F('last_update'), output_field=DateTimeField(),)).filter(chatroomguest__isnull=False).order_by('-order_key') - user = get_object_or_404(User, id=self.user_id) - for room in chat_rooms: - room.number_of_unread = room.unread_messages(user) + room.number_of_unread = room.unread_messages(self.user) context = { 'chat_rooms': chat_rooms, } @@ -125,7 +123,7 @@ class Osichat(WebsocketConsumer): for chat_room in chat_rooms: last_message = ChatMessage.objects.filter(room=chat_room).last() room_data = model_to_dict(chat_room) - room_data['number_of_unread'] = chat_room.unread_messages(user) + room_data['number_of_unread'] = chat_room.unread_messages(self.user) if last_message: room_data['last_message'] = model_to_dict(last_message) else: @@ -158,8 +156,7 @@ class Osichat(WebsocketConsumer): def new_chat_update_handler(self, event): chat_room = get_object_or_404(ChatRoom, id=event['chatroom_id']) - user = get_object_or_404(User, id=self.user_id) - number_of_unread = ChatMessage.objects.filter(room=chat_room).exclude(member=user).exclude(chatmessageseen__member=user).count() + number_of_unread = ChatMessage.objects.filter(room=chat_room).exclude(member=self.user).exclude(chatmessageseen__member=self.user).count() last_message = ChatMessage.objects.filter(room=chat_room).last() context = { @@ -189,40 +186,38 @@ class Osichat(WebsocketConsumer): def get_dms_handler(self, event): - if self.scope["user"].is_authenticated: - chat_rooms = ChatRoom.objects.annotate(last_update=Max('chatmessage__date_sent'),order_key=Case( + chat_rooms = ChatRoom.objects.annotate(last_update=Max('chatmessage__date_sent'),order_key=Case( When(last_update__isnull=True, then=F('date_created')), default=F('last_update'), - output_field=DateTimeField(),)).filter(chatroomguest__isnull=True, chatmember__member=self.scope["user"]).order_by('-order_key') - else: - chat_rooms = None + output_field=DateTimeField(),)).filter(chatroomguest__isnull=True, chatmember__member=self.user).order_by('-order_key') context = { 'chat_rooms': chat_rooms, } if self.client_type == 'mobile_admin': chat_rooms_data = [] - for chat_room in chat_rooms: - last_message = ChatMessage.objects.filter(room=chat_room).last() - chat_room_data = { - 'id': chat_room.id, - 'name': chat_room.name, - 'last_update': chat_room.last_updated, - 'date_created': chat_room.date_created, - 'unread_messages': chat_room.unread_messages(self.scope["user"]), - 'last_message': model_to_dict(last_message) if last_message else None - } - members = chat_room.chatmember_set.all() - member_data = [] - for member in members: - member_data.append({ - 'id': member.member.id, - 'first_name': member.member.first_name, - 'last_name': member.member.last_name, - 'image': member.member.staffprofile.image.url if member.member.staffprofile and member.member.staffprofile.image else None - }) - - chat_room_data['members'] = member_data - chat_rooms_data.append(chat_room_data) + if chat_rooms: + for chat_room in chat_rooms: + last_message = ChatMessage.objects.filter(room=chat_room).last() + chat_room_data = { + 'id': chat_room.id, + 'name': chat_room.name, + 'last_update': chat_room.last_updated, + 'date_created': chat_room.date_created, + 'unread_messages': chat_room.unread_messages(self.user), + 'last_message': model_to_dict(last_message) if last_message else None + } + members = chat_room.chatmember_set.all() + member_data = [] + for member in members: + member_data.append({ + 'id': member.member.id, + 'first_name': member.member.first_name, + 'last_name': member.member.last_name, + 'image': member.member.staffprofile.image.url if member.member.staffprofile and member.member.staffprofile.image else None + }) + + chat_room_data['members'] = member_data + chat_rooms_data.append(chat_room_data) self.send(text_data=json.dumps({ 'event_type': 'get_dms', diff --git a/osinaweb/osinacore/__pycache__/consumers.cpython-310.pyc b/osinaweb/osinacore/__pycache__/consumers.cpython-310.pyc index 9ec7b027..80ce340b 100644 Binary files a/osinaweb/osinacore/__pycache__/consumers.cpython-310.pyc and b/osinaweb/osinacore/__pycache__/consumers.cpython-310.pyc differ diff --git a/osinaweb/osinacore/templates/chat_templates/chat-widget.html b/osinaweb/osinacore/templates/chat_templates/chat-widget.html index 189eb5b8..ea969c75 100644 --- a/osinaweb/osinacore/templates/chat_templates/chat-widget.html +++ b/osinaweb/osinacore/templates/chat_templates/chat-widget.html @@ -1,5 +1,4 @@ {% load static %} -