From d573df0359bb29583be3d3c80e9b12d34e9fbed3 Mon Sep 17 00:00:00 2001 From: SDE Date: Mon, 14 Aug 2023 18:39:45 +0300 Subject: [PATCH] 0.3.18 support chat v3 --- ChatServiceApp/funcs.py | 61 ++++++++----------------------- ChatServiceApp/websocket_views.py | 18 +++++++-- 2 files changed, 30 insertions(+), 49 deletions(-) diff --git a/ChatServiceApp/funcs.py b/ChatServiceApp/funcs.py index c785d97..35abcdb 100644 --- a/ChatServiceApp/funcs.py +++ b/ChatServiceApp/funcs.py @@ -12,7 +12,8 @@ import json from datetime import datetime, time -def get_update_chat_html(data): + +def get_update_chat_Dict(data): from AuthApp.models import User res_Dict = {} @@ -24,46 +25,7 @@ def get_update_chat_html(data): required_beep = False - try: - - if type(data) == str: - data = json.loads(data) - ticket = None - - tpl_name = 'blocks/profile/b_messages_container.html' - - if 'ticket_id' in data and data['ticket_id'] and data['ticket_id'] != 'null': - ticket = MsgGroup.objects.get(id=data['ticket_id']) - - sender = User.objects.get(id=data['sender']) - receiver = None - if 'receiver' in data and data['receiver']: - receiver = User.objects.get(id=data['receiver']) - - context_Dict.update({'cur_receiver': receiver}) - - res_Dict.update({ - 'required_beep': required_beep, - }) - return res_Dict - - except Exception as e: - msg = f'update_chat_ajax2 Error = {str(e)}' - return {'error': msg} - - - -def update_chat(data): - from AuthApp.models import User - - res_Dict = {} - msgs = [] - Dict = {} - context_Dict = {} - - last_message_modifiedDT = None - - required_beep = False + required_full_support_chat_html = False try: @@ -76,6 +38,7 @@ def update_chat(data): if 'ticket_id' in data and data['ticket_id'] and data['ticket_id'] != 'null': ticket = MsgGroup.objects.get(id=data['ticket_id']) + res_Dict.update({'ticket': ticket.id}) sender = User.objects.get(id=data['sender']) receiver = None @@ -99,6 +62,7 @@ def update_chat(data): # получатели receivers, unread_msgs_count = get_chat_receivers_for_user(receiver) + # формируем правую панель context_Dict.update({'receivers': receivers}) users_list_html = render_to_string( @@ -112,14 +76,21 @@ def update_chat(data): if ticket: msgs = get_messages_for_ticket(ticket) + # если меньше 3 сообщений значит выведена не полная форма - требуется другой шаблон + if len(msgs) < 3: + tpl_name = 'blocks/profile/b_support_chat.html' + required_full_support_chat_html = True + context_Dict.update({'ticket': ticket}) - res_Dict.update({'ticket': ticket}) if ticket.manager: - res_Dict.update({'new_msg_allow': True}) + context_Dict.update({'new_msg_allow': True}) context_Dict.update({'messages': msgs}) - chat_html = render_to_string(tpl_name, context_Dict) - res_Dict.update({'chat_html': chat_html}) + html = render_to_string(tpl_name, context_Dict) + if required_full_support_chat_html: + res_Dict.update({'support_chat_html': html}) + else: + res_Dict.update({'chat_html': html}) res_Dict.update({ diff --git a/ChatServiceApp/websocket_views.py b/ChatServiceApp/websocket_views.py index a4a86bd..28fcfd9 100644 --- a/ChatServiceApp/websocket_views.py +++ b/ChatServiceApp/websocket_views.py @@ -40,13 +40,13 @@ class ChatConsumer(WebsocketConsumer): sender = data['sender'] receiver = data['receiver'] - from .funcs import send_msg, update_chat + from .funcs import send_msg, get_update_chat_Dict data.update({ 'cur_user': sender, 'required_beep': False, }) send_msg(data) - Dict = update_chat(data) + Dict = get_update_chat_Dict(data) group_name = f'user_{sender}' resDict = { @@ -68,10 +68,15 @@ class ChatConsumer(WebsocketConsumer): 'cur_user': receiver, 'required_beep': True, }) - Dict = update_chat(data) + Dict = get_update_chat_Dict(data) + + if 'support_chat_html' in Dict: + msg_type = 'update_support_chat' + else: + msg_type = 'update_chat' resDict = { - 'type': 'update_chat', + 'type': msg_type, 'sender': receiver, 'receiver': sender, 'group_name': group_name, @@ -87,6 +92,11 @@ class ChatConsumer(WebsocketConsumer): self.send(text_data=json.dumps(data)) + def update_support_chat(self, data): + print(f'ws update_support_chat {data["group_name"]}') + + self.send(text_data=json.dumps(data)) + def update_chat(self, data): print(f'ws update_chat {data["group_name"]}')