0.3.30
support chat v3
This commit is contained in:
@@ -72,14 +72,39 @@ class ChatConsumer(WebsocketConsumer):
|
|||||||
# super().__init__(args, kwargs)
|
# super().__init__(args, kwargs)
|
||||||
# self.room_name = None
|
# self.room_name = None
|
||||||
|
|
||||||
|
def disconnect(self, close_code):
|
||||||
|
print("Closed websocket with code: ", close_code)
|
||||||
|
|
||||||
|
for gr in self.groups:
|
||||||
|
async_to_sync(self.channel_layer.group_discard)(
|
||||||
|
gr,
|
||||||
|
self.channel_name
|
||||||
|
)
|
||||||
|
self.close()
|
||||||
|
|
||||||
def connect(self):
|
def connect(self):
|
||||||
print('ws connect')
|
print('ws connect')
|
||||||
|
|
||||||
async_to_sync(self.channel_layer.group_add)(
|
user_group = f'user_{self.scope["user"].id}'
|
||||||
f'user_{self.scope["user"].id}',
|
|
||||||
self.channel_name
|
add_to_group = False
|
||||||
)
|
if not self.groups or not user_group in self.groups or not self.channel_name in self.groups[user_group]:
|
||||||
print(f'created group user_{self.scope["user"].id}')
|
add_to_group = True
|
||||||
|
|
||||||
|
if add_to_group:
|
||||||
|
if not self.groups:
|
||||||
|
self.groups = {user_group: [self.channel_name]}
|
||||||
|
elif not user_group in self.groups:
|
||||||
|
self.groups[user_group].append(self.channel_name)
|
||||||
|
else:
|
||||||
|
self.groups.update({user_group: [self.channel_name]})
|
||||||
|
|
||||||
|
async_to_sync(self.channel_layer.group_add)(
|
||||||
|
user_group,
|
||||||
|
self.channel_name
|
||||||
|
)
|
||||||
|
|
||||||
|
print(f'created group user_{self.scope["user"].id}')
|
||||||
|
|
||||||
if self.scope['user'].is_staff:
|
if self.scope['user'].is_staff:
|
||||||
async_to_sync(self.channel_layer.group_add)(
|
async_to_sync(self.channel_layer.group_add)(
|
||||||
@@ -160,40 +185,40 @@ class ChatConsumer(WebsocketConsumer):
|
|||||||
resDict
|
resDict
|
||||||
)
|
)
|
||||||
|
|
||||||
group_name = f'user_{receiver}'
|
# group_name = f'user_{receiver}'
|
||||||
# if group_name in self.channel_layer.groups.keys():
|
# # if group_name in self.channel_layer.groups.keys():
|
||||||
data.update({
|
# data.update({
|
||||||
'cur_user': receiver,
|
# 'cur_user': receiver,
|
||||||
'required_beep': True,
|
# 'required_beep': True,
|
||||||
})
|
# })
|
||||||
Dict = get_update_chat_Dict(data)
|
# Dict = get_update_chat_Dict(data)
|
||||||
|
#
|
||||||
if 'support_chat_html' in Dict:
|
# if 'support_chat_html' in Dict:
|
||||||
msg_type = 'update_support_chat'
|
# msg_type = 'update_support_chat'
|
||||||
else:
|
# else:
|
||||||
msg_type = 'update_chat'
|
# msg_type = 'update_chat'
|
||||||
|
#
|
||||||
resDict = {
|
# resDict = {
|
||||||
'type': msg_type,
|
# 'type': msg_type,
|
||||||
'sender': receiver,
|
# 'sender': receiver,
|
||||||
'receiver': sender,
|
# 'receiver': sender,
|
||||||
'group_name': group_name,
|
# 'group_name': group_name,
|
||||||
}
|
# }
|
||||||
|
#
|
||||||
if ticket:
|
# if ticket:
|
||||||
tickets_wo_manager_html = get_tickets_wo_manager_html(ticket, receiver_obj, data)
|
# tickets_wo_manager_html = get_tickets_wo_manager_html(ticket, receiver_obj, data)
|
||||||
if tickets_wo_manager_html:
|
# if tickets_wo_manager_html:
|
||||||
resDict.update({'tickets_wo_manager_html': tickets_wo_manager_html})
|
# resDict.update({'tickets_wo_manager_html': tickets_wo_manager_html})
|
||||||
|
#
|
||||||
tickets_w_manager_html = get_tickets_w_manager_html(ticket, receiver_obj, data)
|
# tickets_w_manager_html = get_tickets_w_manager_html(ticket, receiver_obj, data)
|
||||||
if tickets_w_manager_html:
|
# if tickets_w_manager_html:
|
||||||
resDict.update({'tickets_w_manager_html': tickets_w_manager_html})
|
# resDict.update({'tickets_w_manager_html': tickets_w_manager_html})
|
||||||
|
#
|
||||||
resDict.update(Dict)
|
# resDict.update(Dict)
|
||||||
async_to_sync(self.channel_layer.group_send)(
|
# async_to_sync(self.channel_layer.group_send)(
|
||||||
group_name,
|
# group_name,
|
||||||
resDict
|
# resDict
|
||||||
)
|
# )
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ import os
|
|||||||
|
|
||||||
from django.core.asgi import get_asgi_application
|
from django.core.asgi import get_asgi_application
|
||||||
from channels.routing import ProtocolTypeRouter, URLRouter
|
from channels.routing import ProtocolTypeRouter, URLRouter
|
||||||
# from channels.auth import AuthMiddlewareStack
|
from channels.auth import AuthMiddlewareStack
|
||||||
from ChatServiceApp.websocket_urls import websocket_urlpatterns
|
from ChatServiceApp.websocket_urls import websocket_urlpatterns
|
||||||
from channels.security.websocket import AllowedHostsOriginValidator
|
from channels.security.websocket import AllowedHostsOriginValidator
|
||||||
from channels.sessions import SessionMiddlewareStack
|
from channels.sessions import SessionMiddlewareStack
|
||||||
|
|||||||
Reference in New Issue
Block a user