From 300ba4587d7e73cc42e16fd98e3a82c94eeb03e7 Mon Sep 17 00:00:00 2001 From: emile Date: Fri, 12 Jul 2024 09:11:14 +0300 Subject: [PATCH] new --- osinaweb/db.sqlite3 | Bin 1560576 -> 1560576 bytes .../__pycache__/consumers.cpython-310.pyc | Bin 6435 -> 6983 bytes osinaweb/support/consumers.py | 68 ++++++++++++++---- 3 files changed, 54 insertions(+), 14 deletions(-) diff --git a/osinaweb/db.sqlite3 b/osinaweb/db.sqlite3 index e30013d15ec8abd116942ed51147f83f0becfef8..d0a7a58d99f4b23a94de09f006fbebc2185d488f 100644 GIT binary patch delta 129 zcmZoz5Z|yMeu6Zk#6%fqMv2CR)&$1Z1g6#m=GFw3)&$np1h&=$_SOWB)&$Ph1g_Qu z?$!jJtqHuL?`1eSj0}uSbPddP4UH5G%&ZIztc=a|3``6xO-8eF0}vv diff --git a/osinaweb/support/__pycache__/consumers.cpython-310.pyc b/osinaweb/support/__pycache__/consumers.cpython-310.pyc index 7ed60bafcf3fea43cd93f538ad676a2cc6f51000..8c881091684d6cba9fb0281c8ea916cb3d7afd1e 100644 GIT binary patch delta 3102 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 E59<*y00000 diff --git a/osinaweb/support/consumers.py b/osinaweb/support/consumers.py index b87fe0fc..69dcb96b 100644 --- a/osinaweb/support/consumers.py +++ b/osinaweb/support/consumers.py @@ -19,20 +19,6 @@ class TicketRoomConsumer(WebsocketConsumer): self.ticket = get_object_or_404(Ticket, id=self.ticket_id) 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)( self.ticket_number, self.channel_name @@ -51,6 +37,60 @@ class TicketRoomConsumer(WebsocketConsumer): ) self.modify_online_user() + def receive(self, text_data): + text_data_json = json.loads(text_data) + event_type = text_data_json.get('event_type') + + if event_type == 'typing': + event = { + 'type': 'typing_handler', + 'user': self.scope['user'] + } + async_to_sync(self.channel_layer.group_send)( + self.ticket_number, event + ) + elif event_type == 'stop_typing': + event = { + 'type': 'stop_typing_handler', + } + async_to_sync(self.channel_layer.group_send)( + self.ticket_number, event + ) + elif event_type == 'update_reaction': + reaction = text_data_json['reaction'] + update_id = text_data_json['update_id'] + event = { + 'type': 'reaction_handler', + 'update_id': update_id, + 'reaction': reaction, + 'user': self.scope['user'] + } + async_to_sync(self.channel_layer.group_send)( + self.ticket_number, event + ) + else: + body = text_data_json['description'] + file_paths = text_data_json['filePath'] + ticketupdate = TicketUpdate.objects.create( + added_by=self.user, + description=body, + ticket=self.ticket, + date_added=datetime.now() + ) + for file_path in file_paths: + ticket_attachment = TicketAttachment( + ticket_update=ticketupdate, + file_path=file_path + ) + ticket_attachment.save() + event = { + 'type': 'update_handler', + 'update_id': ticketupdate.id + } + async_to_sync(self.channel_layer.group_send)( + self.ticket_number, event + ) + def update_handler(self, event): update_id = event['update_id'] update = TicketUpdate.objects.get(id=update_id)