|
|
@ -18,27 +18,11 @@ class TicketRoomConsumer(WebsocketConsumer):
|
|
|
|
self.ticket_id = self.scope['url_route']['kwargs']['ticket_id']
|
|
|
|
self.ticket_id = self.scope['url_route']['kwargs']['ticket_id']
|
|
|
|
self.ticket = get_object_or_404(Ticket, id=self.ticket_id)
|
|
|
|
self.ticket = get_object_or_404(Ticket, id=self.ticket_id)
|
|
|
|
self.ticket_number = self.ticket.ticket_number
|
|
|
|
self.ticket_number = self.ticket.ticket_number
|
|
|
|
|
|
|
|
|
|
|
|
existing_connection = TicketConnection.objects.filter(ticket=self.ticket, user=self.user, terminated_at__isnull=True).delete()
|
|
|
|
|
|
|
|
TicketConnection.objects.create(
|
|
|
|
|
|
|
|
ticket=self.ticket,
|
|
|
|
|
|
|
|
user=self.user,
|
|
|
|
|
|
|
|
date=datetime.now()
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
staff_profile = StaffProfile.objects.filter(user=self.user).first()
|
|
|
|
|
|
|
|
if staff_profile:
|
|
|
|
|
|
|
|
if not TicketStaff.objects.filter(staff=staff_profile, ticket=self.ticket).exists():
|
|
|
|
|
|
|
|
TicketStaff.objects.create(
|
|
|
|
|
|
|
|
staff=staff_profile,
|
|
|
|
|
|
|
|
ticket=self.ticket,
|
|
|
|
|
|
|
|
date_added=datetime.now()
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
async_to_sync(self.channel_layer.group_add)(
|
|
|
|
async_to_sync(self.channel_layer.group_add)(
|
|
|
|
self.ticket_number, self.channel_name
|
|
|
|
self.ticket_number, self.channel_name
|
|
|
|
)
|
|
|
|
)
|
|
|
|
self.accept()
|
|
|
|
self.accept()
|
|
|
|
self.modify_online_user()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def disconnect(self, close_code):
|
|
|
|
def disconnect(self, close_code):
|
|
|
@ -170,9 +154,11 @@ class TicketRoomConsumer(WebsocketConsumer):
|
|
|
|
}))
|
|
|
|
}))
|
|
|
|
|
|
|
|
|
|
|
|
def modify_online_user(self):
|
|
|
|
def modify_online_user(self):
|
|
|
|
|
|
|
|
connections = TicketConnection.objects.filter(ticket=self.ticket, terminated_at__isnull=True)
|
|
|
|
event = {
|
|
|
|
event = {
|
|
|
|
'type': 'user_connection_handler',
|
|
|
|
'type': 'user_connection_handler',
|
|
|
|
'user': self.user,
|
|
|
|
'user': self.user,
|
|
|
|
|
|
|
|
'connections': connections,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
async_to_sync(self.channel_layer.group_send)(
|
|
|
|
async_to_sync(self.channel_layer.group_send)(
|
|
|
|
self.ticket_number, event
|
|
|
|
self.ticket_number, event
|
|
|
@ -180,6 +166,7 @@ class TicketRoomConsumer(WebsocketConsumer):
|
|
|
|
|
|
|
|
|
|
|
|
def user_connection_handler(self, event):
|
|
|
|
def user_connection_handler(self, event):
|
|
|
|
context = {
|
|
|
|
context = {
|
|
|
|
|
|
|
|
'connections': event['connections'],
|
|
|
|
'user': event['user']
|
|
|
|
'user': event['user']
|
|
|
|
}
|
|
|
|
}
|
|
|
|
html = render_to_string("details_templates/partials/ticket-online-users.html", context=context)
|
|
|
|
html = render_to_string("details_templates/partials/ticket-online-users.html", context=context)
|
|
|
|