support chat v3
This commit is contained in:
SDE
2023-08-14 18:39:45 +03:00
parent 5890415b06
commit d573df0359
2 changed files with 30 additions and 49 deletions

View File

@@ -12,7 +12,8 @@ import json
from datetime import datetime, time from datetime import datetime, time
def get_update_chat_html(data):
def get_update_chat_Dict(data):
from AuthApp.models import User from AuthApp.models import User
res_Dict = {} res_Dict = {}
@@ -24,46 +25,7 @@ def get_update_chat_html(data):
required_beep = False required_beep = False
try: required_full_support_chat_html = False
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
try: try:
@@ -76,6 +38,7 @@ def update_chat(data):
if 'ticket_id' in data and data['ticket_id'] and data['ticket_id'] != 'null': if 'ticket_id' in data and data['ticket_id'] and data['ticket_id'] != 'null':
ticket = MsgGroup.objects.get(id=data['ticket_id']) ticket = MsgGroup.objects.get(id=data['ticket_id'])
res_Dict.update({'ticket': ticket.id})
sender = User.objects.get(id=data['sender']) sender = User.objects.get(id=data['sender'])
receiver = None receiver = None
@@ -99,6 +62,7 @@ def update_chat(data):
# получатели # получатели
receivers, unread_msgs_count = get_chat_receivers_for_user(receiver) receivers, unread_msgs_count = get_chat_receivers_for_user(receiver)
# формируем правую панель # формируем правую панель
context_Dict.update({'receivers': receivers}) context_Dict.update({'receivers': receivers})
users_list_html = render_to_string( users_list_html = render_to_string(
@@ -112,14 +76,21 @@ def update_chat(data):
if ticket: if ticket:
msgs = get_messages_for_ticket(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}) context_Dict.update({'ticket': ticket})
res_Dict.update({'ticket': ticket})
if ticket.manager: if ticket.manager:
res_Dict.update({'new_msg_allow': True}) context_Dict.update({'new_msg_allow': True})
context_Dict.update({'messages': msgs}) context_Dict.update({'messages': msgs})
chat_html = render_to_string(tpl_name, context_Dict) html = render_to_string(tpl_name, context_Dict)
res_Dict.update({'chat_html': chat_html}) if required_full_support_chat_html:
res_Dict.update({'support_chat_html': html})
else:
res_Dict.update({'chat_html': html})
res_Dict.update({ res_Dict.update({

View File

@@ -40,13 +40,13 @@ class ChatConsumer(WebsocketConsumer):
sender = data['sender'] sender = data['sender']
receiver = data['receiver'] receiver = data['receiver']
from .funcs import send_msg, update_chat from .funcs import send_msg, get_update_chat_Dict
data.update({ data.update({
'cur_user': sender, 'cur_user': sender,
'required_beep': False, 'required_beep': False,
}) })
send_msg(data) send_msg(data)
Dict = update_chat(data) Dict = get_update_chat_Dict(data)
group_name = f'user_{sender}' group_name = f'user_{sender}'
resDict = { resDict = {
@@ -68,10 +68,15 @@ class ChatConsumer(WebsocketConsumer):
'cur_user': receiver, 'cur_user': receiver,
'required_beep': True, '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 = { resDict = {
'type': 'update_chat', 'type': msg_type,
'sender': receiver, 'sender': receiver,
'receiver': sender, 'receiver': sender,
'group_name': group_name, 'group_name': group_name,
@@ -87,6 +92,11 @@ class ChatConsumer(WebsocketConsumer):
self.send(text_data=json.dumps(data)) 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): def update_chat(self, data):
print(f'ws update_chat {data["group_name"]}') print(f'ws update_chat {data["group_name"]}')