diff --git a/ChatServiceApp/funcs.py b/ChatServiceApp/funcs.py index 0097fdb..61da623 100644 --- a/ChatServiceApp/funcs.py +++ b/ChatServiceApp/funcs.py @@ -8,20 +8,21 @@ def get_msgs_for_chat_w_users(user1, user2): Q(sender=user1) | Q(receiver=user1), Q(sender=user2) | Q(receiver=user2), group=None - ) + ).order_by('-modifiedDT') return msgs def get_chat_receivers_for_user(user): receivers = Message.objects.filter( Q(sender=user) | Q(receiver=user), group=None - ).order_by('-modifiedDT').values('sender', 'receiver') + ).order_by('-modifiedDT')#.select_related('sender', 'receiver').values('sender', 'receiver').distinct() receivers_list = [] - receivers_list.extend([item['sender'] for item in receivers if item['sender'] != user]) - receivers_list.extend([item['receiver'] for item in receivers if item['receiver'] != user]) - return receivers_list + receivers_list.extend((item.sender for item in receivers if item.sender != user)) + receivers_list.extend((item.receiver for item in receivers if item.receiver != user)) + + return list(set(receivers_list)) def get_messages_for_ticket(ticket): return ticket.rel_messages_for_group.filter(enable=True).order_by('-modifiedDT') diff --git a/ChatServiceApp/js_views.py b/ChatServiceApp/js_views.py index 45708a6..e98b827 100644 --- a/ChatServiceApp/js_views.py +++ b/ChatServiceApp/js_views.py @@ -57,6 +57,8 @@ def send_msg_ajax(request): data = json.loads(request.body) ticket = None + tpl_name = 'blocks/profile/b_chats.html' + if data['text']: @@ -67,13 +69,14 @@ def send_msg_ajax(request): receiver = User.objects.get(id=data['receiver']) # если только что манагер присоединился к тикету - if ticket and not ticket.manager: - if sender.is_staff: - ticket.manager = sender - else: - ticket.manager = receiver + if ticket: + if not ticket.manager: + if sender.is_staff: + ticket.manager = sender + else: + ticket.manager = receiver - ticket.save() + ticket.save() kwargs = { 'sender': ticket.owner, @@ -81,32 +84,45 @@ def send_msg_ajax(request): 'text': ticket.text, } - if ticket: - kwargs.update({'group': ticket}) + kwargs.update({'group': ticket}) msg = Message.objects.create(**kwargs) Message.objects.filter(id=msg.id).update(modifiedDT=ticket.createDT, createDT=ticket.createDT) - # ------------ - kwargs = { - 'sender': sender, - 'receiver': receiver, - 'text': data['text'] - } + res_Dict.update({ + 'ticket': ticket, + 'cur_receiver': receiver, + 'messages': get_messages_for_ticket(ticket), + 'text': ticket.text, + 'modifiedDT': ticket.modifiedDT + }) + res_Dict.update(get_ticketsDict_for_staff(request.user)) - if ticket: - kwargs.update({'group': ticket}) + tpl_name = 'blocks/profile/b_support_chat.html' - msg = Message.objects.create(**kwargs) + else: + + kwargs = { + 'sender': sender, + 'receiver': receiver, + 'text': data['text'] + } + + msg = Message.objects.create(**kwargs) + + receivers = get_chat_receivers_for_user(request.user) + msgs = get_msgs_for_chat_w_users(sender, receiver) + + res_Dict.update({ + 'messages': msgs, + 'cur_receiver': receiver, + 'receivers': receivers, + 'text': data['text'], + 'modifiedDT': msgs[0].modifiedDT + }) - res_Dict.update({ - 'ticket': ticket, - 'messages': get_messages_for_ticket(ticket) - }) - res_Dict.update(get_ticketsDict_for_staff(request.user)) - tpl_name = 'blocks/profile/b_support_chat.html' html = render_to_string(tpl_name, res_Dict, request=request) return JsonResponse({'html': html}, status=200) diff --git a/templates/blocks/profile/b_chats.html b/templates/blocks/profile/b_chats.html index a852d49..310df78 100644 --- a/templates/blocks/profile/b_chats.html +++ b/templates/blocks/profile/b_chats.html @@ -32,7 +32,7 @@ {#