From 9d0998fb2bc57286b0dc6cdfad02b25a54390bc1 Mon Sep 17 00:00:00 2001 From: SDE Date: Tue, 15 Aug 2023 16:05:41 +0300 Subject: [PATCH 1/6] 0.3.20 support chat v3 --- ChatServiceApp/funcs.py | 22 +- ChatServiceApp/js_urls.py | 2 +- ChatServiceApp/js_views.py | 216 +++++++++--------- ChatServiceApp/websocket_views.py | 74 ++++++ TWB/asgi.py | 2 +- TWB/settings.py | 2 +- .../widgets/w_chat_right_panel_tickets.html | 8 +- 7 files changed, 211 insertions(+), 115 deletions(-) diff --git a/ChatServiceApp/funcs.py b/ChatServiceApp/funcs.py index a3dab12..18d0c81 100644 --- a/ChatServiceApp/funcs.py +++ b/ChatServiceApp/funcs.py @@ -1,5 +1,5 @@ from .models import * -from django.db.models import Q +from django.db.models import Q, Value as V, Count, OuterRef, Subquery from django.http import HttpResponse, Http404, JsonResponse from django.template import loader, RequestContext from django.contrib.auth.decorators import login_required @@ -305,12 +305,28 @@ def get_ticketsDict_for_staff(user): def get_tickets_wo_manager(): - tickets = MsgGroup.objects.filter(enable=True, manager=None).order_by('-modifiedDT') + tickets = MsgGroup.objects.filter( + enable=True, manager=None + ).annotate( + unread_msgs_count=V(1) + ).order_by('-modifiedDT') + return tickets def get_tickets_for_manager(user): - tickets = MsgGroup.objects.filter(enable=True, manager=user).order_by('-modifiedDT') + msgs = Message.objects.filter(group=OuterRef('pk'), status='sended', receiver=user).values('id')[:1] + + tickets = MsgGroup.objects.filter( + enable=True, manager=user + ).annotate( + unread_msgs_count = Count(Subquery(msgs)) + # unread_msgs_count=Count( + # 'rel_messages_for_group', + # filter=Q(rel_messages_for_group__status='sended', rel_messages_for_group__receiver=user) + # ) + ).order_by('-modifiedDT') + return tickets \ No newline at end of file diff --git a/ChatServiceApp/js_urls.py b/ChatServiceApp/js_urls.py index 9b5c21d..41e9561 100644 --- a/ChatServiceApp/js_urls.py +++ b/ChatServiceApp/js_urls.py @@ -10,7 +10,7 @@ urlpatterns = [ path('support_create_ticket_form/', support_create_ticket_form_ajax, name='support_create_ticket_form_ajax'), path('create_ticket/', create_ticket_ajax, name='create_ticket_ajax'), path('support_show_chat_by_ticket/', support_show_chat_by_ticket_ajax, name='support_show_chat_by_ticket_ajax'), - path('send_msg/', send_msg_ajax, name='send_msg_ajax'), + # path('send_msg/', send_msg_ajax, name='send_msg_ajax'), # path('update_chat/', update_chat_ajax2, name='update_chat_ajax'), path('show_chat_w_user/', show_chat_w_user_ajax, name='show_chat_w_user_ajax'), ] \ No newline at end of file diff --git a/ChatServiceApp/js_views.py b/ChatServiceApp/js_views.py index a2650b9..acae6a3 100644 --- a/ChatServiceApp/js_views.py +++ b/ChatServiceApp/js_views.py @@ -231,112 +231,114 @@ def update_chat_ajax(request): return JsonResponse({'error': msg}, status=400) -@login_required(login_url='/profile/login/') -def send_msg_ajax(request): - from AuthApp.models import User - - if request.method != 'POST': - raise Http404 - - res_Dict = {} - msg = None - - try: - - data = json.loads(request.body) - ticket = None - - tpl_name = 'blocks/profile/b_messages_container.html' - - if data['text']: - - - if 'ticket_id' in data: - ticket = MsgGroup.objects.get(id=data['ticket_id']) - - sender = User.objects.get(id=data['sender']) - receiver = User.objects.get(id=data['receiver']) - - msg_create_kwargs = {} - - # если только что манагер присоединился к тикету - if ticket: - if not ticket.manager: - if sender.is_staff: - ticket.manager = sender - else: - ticket.manager = receiver - - ticket.save() - - kwargs = { - 'sender': ticket.owner, - 'receiver': ticket.manager, - 'text': ticket.text, - } - - kwargs.update({'group': ticket}) - - msg = Message.objects.create(**kwargs) - Message.objects.filter(id=msg.id).update(modifiedDT=ticket.createDT, createDT=ticket.createDT) - - res_Dict.update({ - 'ticket': ticket, - # 'cur_receiver': receiver, - # 'messages': get_messages_for_ticket(ticket), - # 'text': data['text'], - # 'modifiedDT': msg.modifiedDT - }) - - msg_create_kwargs.update({ - 'group': ticket, - }) - - res_Dict.update(get_ticketsDict_for_staff(request.user)) - - - # if not msg: - msg_create_kwargs.update({ - 'sender': sender, - 'receiver': receiver, - 'text': data['text'] - }) - - session_data = { - 'for_save_to_session':{ - 'user_alerts':{ - 'new_message': True - } - } - } - - receiver.user_profile.add_node_to_json_data(session_data, save=True) - - msg = Message.objects.create(**msg_create_kwargs) - - if ticket: - msgs = get_messages_for_ticket(ticket) - else: - msgs = get_msgs_for_chat_w_users(sender, receiver) - - receivers, unread_msgs_count = get_chat_receivers_for_user(request.user) - - - res_Dict.update({ - 'messages': msgs, - 'cur_receiver': receiver, - 'receivers': receivers, - 'text': data['text'], - 'modifiedDT': msgs[0].modifiedDT - }) - - - html = render_to_string(tpl_name, res_Dict, request=request) - return JsonResponse({'html': html}, status=200) - - except Exception as e: - msg = f'send_msg_ajax Error = {str(e)}' - return JsonResponse({'error': msg}, status=400) +# @login_required(login_url='/profile/login/') +# def send_msg_ajax(request): +# from AuthApp.models import User +# +# if request.method != 'POST': +# raise Http404 +# +# res_Dict = {} +# msg = None +# +# try: +# +# data = json.loads(request.body) +# ticket = None +# +# tpl_name = 'blocks/profile/b_messages_container.html' +# +# if data['text']: +# +# +# if 'ticket_id' in data: +# ticket = MsgGroup.objects.get(id=data['ticket_id']) +# +# sender = User.objects.get(id=data['sender']) +# receiver = User.objects.get(id=data['receiver']) +# +# msg_create_kwargs = {} +# +# # если только что манагер присоединился к тикету +# if ticket: +# if not ticket.manager: +# if sender.is_staff: +# ticket.manager = sender +# else: +# ticket.manager = receiver +# +# ticket.save() +# +# kwargs = { +# 'sender': ticket.owner, +# 'receiver': ticket.manager, +# 'text': ticket.text, +# } +# +# kwargs.update({'group': ticket}) +# +# msg = Message.objects.create(**kwargs) +# Message.objects.filter(id=msg.id).update(modifiedDT=ticket.createDT, createDT=ticket.createDT) +# +# # if +# +# res_Dict.update({ +# 'ticket': ticket, +# # 'cur_receiver': receiver, +# # 'messages': get_messages_for_ticket(ticket), +# # 'text': data['text'], +# # 'modifiedDT': msg.modifiedDT +# }) +# +# msg_create_kwargs.update({ +# 'group': ticket, +# }) +# +# res_Dict.update(get_ticketsDict_for_staff(request.user)) +# +# +# # if not msg: +# msg_create_kwargs.update({ +# 'sender': sender, +# 'receiver': receiver, +# 'text': data['text'] +# }) +# +# session_data = { +# 'for_save_to_session':{ +# 'user_alerts':{ +# 'new_message': True +# } +# } +# } +# +# receiver.user_profile.add_node_to_json_data(session_data, save=True) +# +# msg = Message.objects.create(**msg_create_kwargs) +# +# if ticket: +# msgs = get_messages_for_ticket(ticket) +# else: +# msgs = get_msgs_for_chat_w_users(sender, receiver) +# +# receivers, unread_msgs_count = get_chat_receivers_for_user(request.user) +# +# +# res_Dict.update({ +# 'messages': msgs, +# 'cur_receiver': receiver, +# 'receivers': receivers, +# 'text': data['text'], +# 'modifiedDT': msgs[0].modifiedDT +# }) +# +# +# html = render_to_string(tpl_name, res_Dict, request=request) +# return JsonResponse({'html': html}, status=200) +# +# except Exception as e: +# msg = f'send_msg_ajax Error = {str(e)}' +# return JsonResponse({'error': msg}, status=400) @@ -366,6 +368,8 @@ def support_show_chat_by_ticket_ajax(request): # if len(msgs) > 1: new_msg_allow = True + # msgs.filter(receiver=cur_receiver).update(status='seen') + Dict = { 'ticket': ticket, 'messages': msgs, diff --git a/ChatServiceApp/websocket_views.py b/ChatServiceApp/websocket_views.py index 28fcfd9..632010f 100644 --- a/ChatServiceApp/websocket_views.py +++ b/ChatServiceApp/websocket_views.py @@ -3,6 +3,39 @@ from channels.generic.websocket import WebsocketConsumer, AsyncWebsocketConsumer from asgiref.sync import async_to_sync, sync_to_async # from channels.auth import channel_session_user, channel_session_user_from_http from channels.layers import get_channel_layer +from django.template.loader import render_to_string + +def get_tickets_wo_manager_html(ticket, user_id, data): + from .funcs import get_tickets_wo_manager + + # если не менеджер - возвращаем None + if ticket.manager.id != user_id: + return None + + Dict = { + 'ticket': ticket, + 'tickets_wo_manager': get_tickets_wo_manager() + } + tickets_wo_manager_html = render_to_string('widgets/w_tickets_wo_manager.html', Dict) + + return tickets_wo_manager_html + + +def get_tickets_w_manager_html(ticket, user_id, data): + from .funcs import get_tickets_w_manager + + # если не менеджер - возвращаем None + if ticket.manager.id != user_id: + return None + + Dict = { + 'ticket': ticket, + 'tickets_w_manager': get_tickets_w_manager() + } + tickets_w_manager_html = render_to_string('widgets/w_tickets_wo_manager.html', Dict) + + return tickets_w_manager_html + class ChatConsumer(WebsocketConsumer): @@ -35,19 +68,39 @@ class ChatConsumer(WebsocketConsumer): def receive(self, text_data): print(f'ws receive text_data = {text_data}') + from AuthApp.models import User + from .models import Message, MsgGroup + + data = json.loads(text_data) sender = data['sender'] receiver = data['receiver'] + + + from .funcs import send_msg, get_update_chat_Dict data.update({ 'cur_user': sender, 'required_beep': False, }) send_msg(data) + + ticket = None + + if 'ticket_id' in data and data['ticket_id']: + ticket = MsgGroup.objects.get(id=data['ticket_id']) + # receiver_obj = User.objects.get(id=receiver) + msgs = Message.objects.filter( + receiver__id=sender, group__id=data['ticket_id'] + ) + msgs.update(status='seen') + Dict = get_update_chat_Dict(data) + + group_name = f'user_{sender}' resDict = { 'type': 'update_chat', @@ -56,6 +109,16 @@ class ChatConsumer(WebsocketConsumer): 'group_name': group_name, } + + tickets_wo_manager_html = get_tickets_wo_manager_html(ticket, sender, data) + if tickets_wo_manager_html: + resDict.update({'tickets_wo_manager_html': tickets_wo_manager_html}) + + tickets_w_manager_html = get_tickets_w_manager_html(ticket, sender, data) + if tickets_w_manager_html: + resDict.update({'tickets_w_manager_html': tickets_w_manager_html}) + + resDict.update(Dict) async_to_sync(self.channel_layer.group_send)( group_name, @@ -81,12 +144,23 @@ class ChatConsumer(WebsocketConsumer): 'receiver': sender, 'group_name': group_name, } + + tickets_wo_manager_html = get_tickets_wo_manager_html(ticket, receiver, data) + if tickets_wo_manager_html: + resDict.update({'tickets_wo_manager_html': tickets_wo_manager_html}) + + tickets_w_manager_html = get_tickets_w_manager_html(ticket, sender, data) + if tickets_w_manager_html: + resDict.update({'tickets_w_manager_html': tickets_w_manager_html}) + resDict.update(Dict) async_to_sync(self.channel_layer.group_send)( group_name, resDict ) + + def echo(self, data): print('ws echo') diff --git a/TWB/asgi.py b/TWB/asgi.py index ad656f2..436f4f6 100644 --- a/TWB/asgi.py +++ b/TWB/asgi.py @@ -11,7 +11,7 @@ import os from django.core.asgi import get_asgi_application from channels.routing import ProtocolTypeRouter, URLRouter -from channels.auth import AuthMiddlewareStack +# from channels.auth import AuthMiddlewareStack from ChatServiceApp.websocket_urls import websocket_urlpatterns from channels.security.websocket import AllowedHostsOriginValidator from channels.sessions import SessionMiddlewareStack diff --git a/TWB/settings.py b/TWB/settings.py index 94b2053..d32532e 100644 --- a/TWB/settings.py +++ b/TWB/settings.py @@ -88,7 +88,7 @@ TEMPLATES = [ }, ] -WSGI_APPLICATION = 'TWB.wsgi.application' +# WSGI_APPLICATION = 'TWB.wsgi.application' ASGI_APPLICATION = 'TWB.asgi.application' CHANNEL_LAYERS = { diff --git a/templates/widgets/w_chat_right_panel_tickets.html b/templates/widgets/w_chat_right_panel_tickets.html index b7150f5..77af64d 100644 --- a/templates/widgets/w_chat_right_panel_tickets.html +++ b/templates/widgets/w_chat_right_panel_tickets.html @@ -9,7 +9,9 @@ {{ item.owner.last_name }} {{ item.owner.first_name }} {{ item.name }} -
-
1
-
+ {% if item.unread_msgs_count %} +
+
{{ item.unread_msgs_count }}
+
+ {% endif %} \ No newline at end of file From 4c6e2200c066435deb652da6d58aff35ea5af784 Mon Sep 17 00:00:00 2001 From: borissedw Date: Tue, 15 Aug 2023 16:17:52 +0300 Subject: [PATCH 2/6] 0.0.144 --- static/js/chat_sockets.js | 14 +++++++++++++- static/js/user_profile(boris).js | 3 ++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/static/js/chat_sockets.js b/static/js/chat_sockets.js index 6a7d58c..9354d32 100644 --- a/static/js/chat_sockets.js +++ b/static/js/chat_sockets.js @@ -95,7 +95,17 @@ chatSocket.onmessage = function (e) { if (el_tab !== null){ document.querySelector(".tab_user_messanger.select").classList.remove("select") document.querySelector(`[data-cur-receiver-item="${old_item_tab_user}"]` ).classList.add("select") - document.querySelector(`[data-cur-receiver-item="${old_item_tab_user}"]` ).scrollIntoView(false) + document.querySelector(`[data-cur-receiver-item="${old_item_tab_user}"]` ).scrollIntoView({behavior: "smooth"}); + } + } + + } else if (data.tickets_w_manager_html) { + if (document.querySelector(".list_linked_tickets") !== null || document.querySelector(".list_unlinked_tickets") !== null) { + document.querySelector(".list_linked_tickets").innerHTML = data.tickets_w_manager_html + if (el_tab !== null){ + document.querySelector(".tab_user_messanger.select").classList.remove("select") + document.querySelector(`[data-cur-receiver-item="${old_item_tab_user}"]` ).classList.add("select") + document.querySelector(`[data-cur-receiver-item="${old_item_tab_user}"]` ).scrollIntoView({behavior: "smooth"}); } } @@ -111,6 +121,8 @@ chatSocket.onmessage = function (e) { } } + + } else if (data.type === "update_support_chat"){ if (msg_cont !== null){ if (msg_cont.dataset['curReceiver'] === ""){ diff --git a/static/js/user_profile(boris).js b/static/js/user_profile(boris).js index 3d9e13e..ab92a1d 100644 --- a/static/js/user_profile(boris).js +++ b/static/js/user_profile(boris).js @@ -187,7 +187,8 @@ function selectedUserMessenger (ticket_id=null,user_id=null){ document.querySelector(".info_profile").innerHTML = data.html; document.querySelector(".enter-message-inp").focus() - document.querySelector(".tab_user_messanger.select").scrollIntoView() + document.querySelector(".tab_user_messanger.select").scrollIntoView({behavior: "smooth"}); + }, error: function (data){ From 62c7694c50df111c69bb0d732e3726d8fb5cb460 Mon Sep 17 00:00:00 2001 From: SDE Date: Tue, 15 Aug 2023 16:23:16 +0300 Subject: [PATCH 3/6] 0.3.21 support chat v3 --- ChatServiceApp/websocket_views.py | 41 +++++++++++++++++-------------- 1 file changed, 22 insertions(+), 19 deletions(-) diff --git a/ChatServiceApp/websocket_views.py b/ChatServiceApp/websocket_views.py index 632010f..b8b826b 100644 --- a/ChatServiceApp/websocket_views.py +++ b/ChatServiceApp/websocket_views.py @@ -5,11 +5,11 @@ from asgiref.sync import async_to_sync, sync_to_async from channels.layers import get_channel_layer from django.template.loader import render_to_string -def get_tickets_wo_manager_html(ticket, user_id, data): +def get_tickets_wo_manager_html(ticket, user, data): from .funcs import get_tickets_wo_manager # если не менеджер - возвращаем None - if ticket.manager.id != user_id: + if not ticket or ticket.manager.id != user.id: return None Dict = { @@ -21,16 +21,16 @@ def get_tickets_wo_manager_html(ticket, user_id, data): return tickets_wo_manager_html -def get_tickets_w_manager_html(ticket, user_id, data): - from .funcs import get_tickets_w_manager +def get_tickets_w_manager_html(ticket, user, data): + from .funcs import get_tickets_for_manager # если не менеджер - возвращаем None - if ticket.manager.id != user_id: + if not ticket or ticket.manager.id != user.id: return None Dict = { 'ticket': ticket, - 'tickets_w_manager': get_tickets_w_manager() + 'tickets_w_manager': get_tickets_for_manager(user) } tickets_w_manager_html = render_to_string('widgets/w_tickets_wo_manager.html', Dict) @@ -76,7 +76,8 @@ class ChatConsumer(WebsocketConsumer): sender = data['sender'] receiver = data['receiver'] - + sender_obj = User.objects.get(id=sender) + receiver_obj = User.objects.get(id=receiver) @@ -110,13 +111,14 @@ class ChatConsumer(WebsocketConsumer): } - tickets_wo_manager_html = get_tickets_wo_manager_html(ticket, sender, data) - if tickets_wo_manager_html: - resDict.update({'tickets_wo_manager_html': tickets_wo_manager_html}) + if ticket: + tickets_wo_manager_html = get_tickets_wo_manager_html(ticket, sender_obj, data) + if tickets_wo_manager_html: + resDict.update({'tickets_wo_manager_html': tickets_wo_manager_html}) - tickets_w_manager_html = get_tickets_w_manager_html(ticket, sender, data) - if tickets_w_manager_html: - resDict.update({'tickets_w_manager_html': tickets_w_manager_html}) + tickets_w_manager_html = get_tickets_w_manager_html(ticket, sender_obj, data) + if tickets_w_manager_html: + resDict.update({'tickets_w_manager_html': tickets_w_manager_html}) resDict.update(Dict) @@ -145,13 +147,14 @@ class ChatConsumer(WebsocketConsumer): 'group_name': group_name, } - tickets_wo_manager_html = get_tickets_wo_manager_html(ticket, receiver, data) - if tickets_wo_manager_html: - resDict.update({'tickets_wo_manager_html': tickets_wo_manager_html}) + if ticket: + tickets_wo_manager_html = get_tickets_wo_manager_html(ticket, receiver_obj, data) + if tickets_wo_manager_html: + resDict.update({'tickets_wo_manager_html': tickets_wo_manager_html}) - tickets_w_manager_html = get_tickets_w_manager_html(ticket, sender, data) - if tickets_w_manager_html: - resDict.update({'tickets_w_manager_html': tickets_w_manager_html}) + tickets_w_manager_html = get_tickets_w_manager_html(ticket, receiver_obj, data) + if tickets_w_manager_html: + resDict.update({'tickets_w_manager_html': tickets_w_manager_html}) resDict.update(Dict) async_to_sync(self.channel_layer.group_send)( From f5361f679ab76731aca783822f8ee18b1bad2971 Mon Sep 17 00:00:00 2001 From: SDE Date: Tue, 15 Aug 2023 17:16:40 +0300 Subject: [PATCH 4/6] 0.3.22 support chat v3 --- ChatServiceApp/funcs.py | 13 ++++++++++--- templates/blocks/profile/b_support_chat.html | 2 +- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/ChatServiceApp/funcs.py b/ChatServiceApp/funcs.py index 18d0c81..2101eca 100644 --- a/ChatServiceApp/funcs.py +++ b/ChatServiceApp/funcs.py @@ -316,17 +316,24 @@ def get_tickets_wo_manager(): def get_tickets_for_manager(user): - msgs = Message.objects.filter(group=OuterRef('pk'), status='sended', receiver=user).values('id')[:1] + unread_msgs = Message.objects.filter( + group=OuterRef('pk'), status='sended', receiver=user + ).values('id')[:1] + + msgs = Message.objects.filter( + group=OuterRef('pk') + ).order_by('-modifiedDT').values('modifiedDT')[:1] tickets = MsgGroup.objects.filter( enable=True, manager=user ).annotate( - unread_msgs_count = Count(Subquery(msgs)) + unread_msgs_count = Count(Subquery(unread_msgs)), + last_msg_modifiedDT = Subquery(msgs) # unread_msgs_count=Count( # 'rel_messages_for_group', # filter=Q(rel_messages_for_group__status='sended', rel_messages_for_group__receiver=user) # ) - ).order_by('-modifiedDT') + ).order_by('-unread_msgs_count', '-last_msg_modifiedDT') return tickets \ No newline at end of file diff --git a/templates/blocks/profile/b_support_chat.html b/templates/blocks/profile/b_support_chat.html index 9bbe3e2..af5bb5f 100644 --- a/templates/blocks/profile/b_support_chat.html +++ b/templates/blocks/profile/b_support_chat.html @@ -19,7 +19,7 @@
- {{ ticket.manager.last_name }} {{ ticket.manager.first_name }} + {{ cur_receiver.last_name }} {{ cur_receiver.first_name }}
From 571e4b0cc11b80d855bc9537508c2ea8ec756071 Mon Sep 17 00:00:00 2001 From: borissedw Date: Tue, 15 Aug 2023 17:30:03 +0300 Subject: [PATCH 5/6] 0.0.145 --- static/js/chat_sockets.js | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/static/js/chat_sockets.js b/static/js/chat_sockets.js index 9354d32..b89d013 100644 --- a/static/js/chat_sockets.js +++ b/static/js/chat_sockets.js @@ -92,14 +92,15 @@ chatSocket.onmessage = function (e) { if (data.tickets_wo_manager_html) { if (document.querySelector(".list_linked_tickets") !== null || document.querySelector(".list_unlinked_tickets") !== null) { document.querySelector(".list_unlinked_tickets").innerHTML = data.tickets_wo_manager_html - if (el_tab !== null){ + if (el_tab !== null) { document.querySelector(".tab_user_messanger.select").classList.remove("select") - document.querySelector(`[data-cur-receiver-item="${old_item_tab_user}"]` ).classList.add("select") - document.querySelector(`[data-cur-receiver-item="${old_item_tab_user}"]` ).scrollIntoView({behavior: "smooth"}); + document.querySelector(`[data-cur-receiver-item="${old_item_tab_user}"]`).classList.add("select") + document.querySelector(`[data-cur-receiver-item="${old_item_tab_user}"]`).scrollIntoView({behavior: "smooth"}); } } - } else if (data.tickets_w_manager_html) { + } + if (data.tickets_w_manager_html) { if (document.querySelector(".list_linked_tickets") !== null || document.querySelector(".list_unlinked_tickets") !== null) { document.querySelector(".list_linked_tickets").innerHTML = data.tickets_w_manager_html if (el_tab !== null){ From 4f016990ea90a2816df3e0fba8e6390ec4efc7e7 Mon Sep 17 00:00:00 2001 From: SDE Date: Tue, 15 Aug 2023 17:34:26 +0300 Subject: [PATCH 6/6] 0.3.23 support chat v3 --- ChatServiceApp/websocket_views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ChatServiceApp/websocket_views.py b/ChatServiceApp/websocket_views.py index b8b826b..ad4bd41 100644 --- a/ChatServiceApp/websocket_views.py +++ b/ChatServiceApp/websocket_views.py @@ -32,7 +32,7 @@ def get_tickets_w_manager_html(ticket, user, data): 'ticket': ticket, 'tickets_w_manager': get_tickets_for_manager(user) } - tickets_w_manager_html = render_to_string('widgets/w_tickets_wo_manager.html', Dict) + tickets_w_manager_html = render_to_string('widgets/w_tickets_w_manager.html', Dict) return tickets_w_manager_html