support chat v3
This commit is contained in:
SDE
2023-08-18 15:49:20 +03:00
parent 80a87fb8e7
commit 48da2b2848
2 changed files with 65 additions and 40 deletions

View File

@@ -72,14 +72,39 @@ class ChatConsumer(WebsocketConsumer):
# super().__init__(args, kwargs)
# 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):
print('ws connect')
async_to_sync(self.channel_layer.group_add)(
f'user_{self.scope["user"].id}',
self.channel_name
)
print(f'created group user_{self.scope["user"].id}')
user_group = f'user_{self.scope["user"].id}'
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]:
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:
async_to_sync(self.channel_layer.group_add)(
@@ -160,40 +185,40 @@ class ChatConsumer(WebsocketConsumer):
resDict
)
group_name = f'user_{receiver}'
# if group_name in self.channel_layer.groups.keys():
data.update({
'cur_user': receiver,
'required_beep': True,
})
Dict = get_update_chat_Dict(data)
if 'support_chat_html' in Dict:
msg_type = 'update_support_chat'
else:
msg_type = 'update_chat'
resDict = {
'type': msg_type,
'sender': receiver,
'receiver': sender,
'group_name': group_name,
}
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, 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)(
group_name,
resDict
)
# group_name = f'user_{receiver}'
# # if group_name in self.channel_layer.groups.keys():
# data.update({
# 'cur_user': receiver,
# 'required_beep': True,
# })
# Dict = get_update_chat_Dict(data)
#
# if 'support_chat_html' in Dict:
# msg_type = 'update_support_chat'
# else:
# msg_type = 'update_chat'
#
# resDict = {
# 'type': msg_type,
# 'sender': receiver,
# 'receiver': sender,
# 'group_name': group_name,
# }
#
# 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, 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)(
# group_name,
# resDict
# )