From f3c4f737bfb2fcec7c3b39ca09cf4c7666fb271e Mon Sep 17 00:00:00 2001 From: "yoojung.choi" Date: Tue, 15 Aug 2023 15:19:32 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20success=20=ED=9B=84=20cancel=20?= =?UTF-8?q?=EC=8B=9C=20=EB=A9=94=EC=8B=9C=EC=A7=80=20=EC=A0=84=EC=86=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- call/consumers/receive_consumers.py | 3 +++ call/models/assign.py | 13 ++++++++++++- call/services/call_cancel_service.py | 9 +++++++-- 3 files changed, 22 insertions(+), 3 deletions(-) diff --git a/call/consumers/receive_consumers.py b/call/consumers/receive_consumers.py index 4598478f..774eb192 100644 --- a/call/consumers/receive_consumers.py +++ b/call/consumers/receive_consumers.py @@ -22,3 +22,6 @@ def send_message(self, event): 'driver_id': driver_id, 'assign_id': assign_id, }) + + def cancel(self, event_dict): + self.send_json(event_dict) diff --git a/call/models/assign.py b/call/models/assign.py index 851667ff..3660789a 100644 --- a/call/models/assign.py +++ b/call/models/assign.py @@ -45,7 +45,18 @@ def websocket_message(instance: Assign, created: bool): "type": message_type, "assign_id": assign_pk, }) - + + if instance.status == 'cancel' and instance.driver_id: + message_type = "cancel" + instance.channel_layer_group_send( + "drivers", + { + "assign_id": assign_pk, + "driver_id": instance.driver_id.id, + "type": message_type, + } + ) + def call__on_post_save(instance: Assign, created: bool, **kwargs): websocket_message(instance, created) diff --git a/call/services/call_cancel_service.py b/call/services/call_cancel_service.py index 2d7ea7fd..6017f9ec 100644 --- a/call/services/call_cancel_service.py +++ b/call/services/call_cancel_service.py @@ -1,4 +1,5 @@ from call.models import Assign +from driver.models import CustomDriver from rest_framework import exceptions def cancel_call(cancel_call_data): @@ -10,6 +11,10 @@ def cancel_call(cancel_call_data): get_assign_info = Assign.objects.get(id=assign_id) get_assign_info.status = 'cancel' get_assign_info.save(update_fields=['status']) + if get_assign_info.driver_id is not None: + driver = get_assign_info.driver_id + get_driver_info = CustomDriver.objects.get(id=driver.id) + get_driver_info.is_able = True + get_driver_info.save(update_fields=['is_able']) except Assign.DoesNotExist: - raise exceptions.NotFound("해당 데이터를 찾을 수 없습니다.") - \ No newline at end of file + raise exceptions.NotFound("해당 데이터를 찾을 수 없습니다.") \ No newline at end of file