diff --git a/ChatServiceApp/js_views.py b/ChatServiceApp/js_views.py index 4481ead..c2cd982 100644 --- a/ChatServiceApp/js_views.py +++ b/ChatServiceApp/js_views.py @@ -14,6 +14,8 @@ from django.urls import reverse from .funcs import * import json from datetime import datetime, time +from channels.layers import get_channel_layer +from asgiref.sync import async_to_sync @login_required(login_url='/profile/login/') @@ -422,11 +424,34 @@ def create_ticket_ajax(request): ticket.enable = True ticket.save() + + # рассылаем всем менеджерам сообщение + Dict = { 'ticket': ticket, - 'messages': get_messages_for_ticket(ticket) + 'tickets_wo_manager': get_tickets_wo_manager() } + tickets_wo_manager_html = render_to_string('widgets/w_tickets_wo_manager.html', Dict, request=request) + group_name = 'support_managers' + Dict = { + 'type': 'update_chat', + 'tickets_wo_manager_html': tickets_wo_manager_html + } + channel_layer = get_channel_layer() + async_to_sync(channel_layer.group_send)( + group_name, + Dict + ) + + + # --------------------- + + msgs_for_ticket = get_messages_for_ticket(ticket) + Dict = { + 'ticket': ticket, + 'messages': msgs_for_ticket + } html = render_to_string('blocks/profile/b_support_chat.html', Dict, request=request) @@ -447,3 +472,13 @@ def create_ticket_ajax(request): html = render_to_string('blocks/profile/b_create_ticket.html', Dict, request=request) return JsonResponse({'html': html}, status=400) + + +def sendDeployments(owner, armies): + type = "renderDeployments" + message = owner + " has " + str(armies) + " to deploy" + channel_layer = get_channel_layer() + async_to_sync(channel_layer.group_send)( + 'render_updates_group', + {'type': 'render', 'message': message} + ) \ No newline at end of file diff --git a/ChatServiceApp/websocket_views.py b/ChatServiceApp/websocket_views.py index e738604..4f2f9dc 100644 --- a/ChatServiceApp/websocket_views.py +++ b/ChatServiceApp/websocket_views.py @@ -18,8 +18,15 @@ class ChatConsumer(WebsocketConsumer): f'user_{self.scope["user"].id}', self.channel_name ) - print(f'self.room_group_name = {self.room_group_name}') - print(f'self.channel_name = {self.channel_name}') + print(f'created group user_{self.scope["user"].id}') + + if self.scope['user'].is_staff: + async_to_sync(self.channel_layer.group_add)( + f'support_managers', + self.channel_name + ) + print(f'add user {self.scope["user"].id} to group support_managers') + self.accept() diff --git a/templates/blocks/profile/b_list_of_tickets_support_chat.html b/templates/blocks/profile/b_list_of_tickets_support_chat.html index b21bf53..3576de0 100644 --- a/templates/blocks/profile/b_list_of_tickets_support_chat.html +++ b/templates/blocks/profile/b_list_of_tickets_support_chat.html @@ -1,9 +1,9 @@ {% load static %}