main
emile 10 months ago
parent 03335fcb44
commit e820faba28

@ -10,6 +10,7 @@ from customercore.models import *
import json
from django.template.loader import render_to_string
from asgiref.sync import async_to_sync
class TicketRoomConsumer(WebsocketConsumer):
def connect(self):
self.user = self.scope['user']
@ -169,9 +170,17 @@ class TicketRoomConsumer(WebsocketConsumer):
def modify_online_user(self):
connections = TicketConnection.objects.filter(ticket=self.ticket, terminated_at__isnull=True)
connections_serial = []
for connection in connections:
connection_data = {
'first_name': connection.user.first_name,
'last_name': connection.user.last_name,
}
connections_serial.append(connection_data)
event = {
'type': 'user_connection_handler',
'connections': connections,
'user': self.user,
'connections': connections_serial,
}
async_to_sync(self.channel_layer.group_send)(
self.ticket_number, event
@ -180,6 +189,7 @@ class TicketRoomConsumer(WebsocketConsumer):
def user_connection_handler(self, event):
context = {
'connections': event['connections'],
'user': event['user']
}
html = render_to_string("details_templates/partials/ticket-online-users.html", context=context)
self.send(text_data=json.dumps({
@ -188,45 +198,6 @@ class TicketRoomConsumer(WebsocketConsumer):
}))
class NewTicketConsumer(WebsocketConsumer):
def connect(self):
self.user = self.scope['user']
async_to_sync(self.channel_layer.group_add)(
"new_ticket_group",
self.channel_name
)
self.accept()
def disconnect(self, close_code):
async_to_sync(self.channel_layer.group_discard)(
"new_ticket_group",
self.channel_name
)
def new_ticket_event(self, event):
ticket_id = event['ticket_id']
ticket = Ticket.objects.get(id=ticket_id)
is_ticketstaff_member = (
hasattr(self.user, 'staffprofile') and
(self.user.staffprofile in ticket.get_all_ticket_staff() or self.user.is_superuser)
)
is_ticket_customer = (
hasattr(self.user, 'customerprofile') and
(self.user.customerprofile == ticket.customer))
if is_ticketstaff_member or is_ticket_customer:
context = {'ticket': ticket, 'new': True}
if is_ticketstaff_member:
html = render_to_string("details_templates/partials/staff-ticket-display.html", context)
else:
html = render_to_string("details_templates/partials/customer-ticket-display.html", context)
self.send(text_data=json.dumps({
'event_type': 'new_ticket',
'html': html,
'ticket_id': ticket_id
}))
class NewTicketUpdateConsumer(WebsocketConsumer):
def connect(self):
self.user = self.scope['user']

Loading…
Cancel
Save