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 @@ {#
#} {# Пользователи#} {#
#} -{# {% include "widgets/w_tab_user.html" %}#} +{# {% include "widgets/w_chat_right_panel_tickets.html" %}#} {#
#} {#
#} {##} @@ -42,7 +42,8 @@
- {{ ticket.manager.last_name }} {{ ticket.manager.first_name }} +{# {{ ticket.manager.last_name }} {{ ticket.manager.first_name }}#} + {{ cur_receiver.last_name }} {{ cur_receiver.first_name }}
@@ -52,14 +53,10 @@
{% if not messages %} - {% with text=ticket.text modifiedDT=ticket.modifiedDT %} - {% include "widgets/w_message.html" %} - {% endwith %} + {% include "widgets/w_message.html" %} {% else %} {% for msg in messages %} - {% with text=msg.text modifiedDT=msg.modifiedDT %} - {% include "widgets/w_message.html" %} - {% endwith %} + {% include "widgets/w_message.html" %} {% endfor %} {% endif %}
@@ -79,7 +76,11 @@
{% if tickets_wo_manager %} {% for item in tickets_wo_manager %} - {% include "widgets/w_tab_user.html" %} + {% include "widgets/w_chat_right_panel_tickets.html" %} + {% endfor %} + {% else %} + {% for item in receivers %} + {% include "widgets/w_chat_right_panel_users.html" %} {% endfor %} {% endif %} diff --git a/templates/blocks/profile/b_support_chat.html b/templates/blocks/profile/b_support_chat.html index 8cf6e61..38f9a60 100644 --- a/templates/blocks/profile/b_support_chat.html +++ b/templates/blocks/profile/b_support_chat.html @@ -61,7 +61,7 @@
{% if tickets_wo_manager %} {% for item in tickets_wo_manager %} - {% include "widgets/w_tab_user.html" %} + {% include "widgets/w_chat_right_panel_tickets.html" %} {% endfor %} {% endif %} @@ -70,7 +70,7 @@ Тикеты в работе {% if tickets_for_manager %} {% for item in tickets_for_manager %} - {% include "widgets/w_tab_user.html" %} + {% include "widgets/w_chat_right_panel_tickets.html" %} {% endfor %} {% endif %}
diff --git a/templates/widgets/w_tab_user.html b/templates/widgets/w_chat_right_panel_tickets.html similarity index 100% rename from templates/widgets/w_tab_user.html rename to templates/widgets/w_chat_right_panel_tickets.html diff --git a/templates/widgets/w_chat_right_panel_users.html b/templates/widgets/w_chat_right_panel_users.html new file mode 100644 index 0000000..1454749 --- /dev/null +++ b/templates/widgets/w_chat_right_panel_users.html @@ -0,0 +1,15 @@ +{% load static %} +
+
+ +
+
+
+
+ {{ item.last_name }} {{ item.first_name }} + {{ item.id }} +
+
+
1
+
+
\ No newline at end of file diff --git a/templates/widgets/w_message.html b/templates/widgets/w_message.html index 253ed64..bb72f5d 100644 --- a/templates/widgets/w_message.html +++ b/templates/widgets/w_message.html @@ -9,11 +9,11 @@
- {{ text }} + {% if msg %}{{ msg.text }}{% else %}{{ ticket.text }}{% endif %}
- {{ modifiedDT }} + {% if msg %}{{ msg.modifiedDT }}{% else %}{{ ticket.modifiedDT }}{% endif %}