From 24d8741c2aedd76ed955709c9714872cacd5f5e4 Mon Sep 17 00:00:00 2001 From: Kallil Souza dos Santos Date: Thu, 19 Dec 2024 10:39:04 -0300 Subject: [PATCH 1/7] Add ticket uuid to Room --- .../rooms/migrations/0014_room_ticket_uuid.py | 18 ++++++++++++++++++ chats/apps/rooms/models.py | 1 + 2 files changed, 19 insertions(+) create mode 100644 chats/apps/rooms/migrations/0014_room_ticket_uuid.py diff --git a/chats/apps/rooms/migrations/0014_room_ticket_uuid.py b/chats/apps/rooms/migrations/0014_room_ticket_uuid.py new file mode 100644 index 00000000..be993ce8 --- /dev/null +++ b/chats/apps/rooms/migrations/0014_room_ticket_uuid.py @@ -0,0 +1,18 @@ +# Generated by Django 4.1.2 on 2024-12-19 13:38 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("rooms", "0013_room_project_uuid_room_rooms_room_project_890f5f_idx"), + ] + + operations = [ + migrations.AddField( + model_name="room", + name="ticket_uuid", + field=models.UUIDField(blank=True, null=True, verbose_name="ticket uuid"), + ), + ] diff --git a/chats/apps/rooms/models.py b/chats/apps/rooms/models.py index 7fc5887d..75a510de 100644 --- a/chats/apps/rooms/models.py +++ b/chats/apps/rooms/models.py @@ -58,6 +58,7 @@ def __init__(self, *args, **kwargs): project_uuid = models.TextField( _("project_uuid"), null=True, blank=True, default="" ) + ticket_uuid = models.UUIDField(_("ticket uuid"), null=True, blank=True) callback_url = models.TextField(_("Callback URL"), null=True, blank=True) From 1b98380af6797b5e65dda15a69693b52dccec975 Mon Sep 17 00:00:00 2001 From: Kallil Souza dos Santos Date: Thu, 19 Dec 2024 11:50:17 -0300 Subject: [PATCH 2/7] Add ticket uuid to room fixtures --- chats/fixtures/fixture_room.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/chats/fixtures/fixture_room.json b/chats/fixtures/fixture_room.json index e02f603a..31be8640 100644 --- a/chats/fixtures/fixture_room.json +++ b/chats/fixtures/fixture_room.json @@ -12,6 +12,7 @@ "mood": "angry", "country": "brazil" }, + "ticket_uuid": "66a47111-6e6f-43b3-9fdc-a92a18bc57d2", "callback_url": "http://localhost/test/66a47111-6e6f-43b3-9fdc-a92a18bc57d2", "ended_at": null, "ended_by": null, @@ -43,6 +44,7 @@ "mood": "angry", "country": "brazil" }, + "ticket_uuid": "1c830ac0-1ba7-49f9-b8c8-b96af41d4213", "callback_url": "http://localhost/test/1c830ac0-1ba7-49f9-b8c8-b96af41d4213", "ended_at": null, "ended_by": null, @@ -74,6 +76,7 @@ "mood": "angry", "country": "brazil" }, + "ticket_uuid": "ac6322ca-4a5b-4e5f-bb00-050c60e93b0b", "callback_url": "http://localhost/test/ac6322ca-4a5b-4e5f-bb00-050c60e93b0b", "ended_at": "2023-09-03T00:20:09.559Z", "ended_by": "agent", From b9317ab025113f558d108c359f4d4c8fed6e2da0 Mon Sep 17 00:00:00 2001 From: Kallil Souza dos Santos Date: Thu, 19 Dec 2024 14:52:07 -0300 Subject: [PATCH 3/7] Add ticket uuid to room flow serializer --- chats/apps/api/v1/external/rooms/serializers.py | 1 + 1 file changed, 1 insertion(+) diff --git a/chats/apps/api/v1/external/rooms/serializers.py b/chats/apps/api/v1/external/rooms/serializers.py index 06975686..133c11b4 100644 --- a/chats/apps/api/v1/external/rooms/serializers.py +++ b/chats/apps/api/v1/external/rooms/serializers.py @@ -149,6 +149,7 @@ class Meta: "contact", "created_on", "custom_fields", + "ticket_uuid", "callback_url", "is_waiting", "flow_uuid", From d1b5afba093599b744d35a43a4d9b0dd46c13b13 Mon Sep 17 00:00:00 2001 From: Kallil Souza dos Santos Date: Thu, 19 Dec 2024 15:13:51 -0300 Subject: [PATCH 4/7] Add filter by the ticket_uuid to the queryset in room user external viewset's partial update --- chats/apps/api/v1/external/rooms/viewsets.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/chats/apps/api/v1/external/rooms/viewsets.py b/chats/apps/api/v1/external/rooms/viewsets.py index 3a03edad..b3dd2b12 100644 --- a/chats/apps/api/v1/external/rooms/viewsets.py +++ b/chats/apps/api/v1/external/rooms/viewsets.py @@ -1,6 +1,7 @@ from django.conf import settings from django.core.exceptions import ObjectDoesNotExist from django.db import IntegrityError +from django.db.models import Q from django.utils import timezone from django_filters.rest_framework import DjangoFilterBackend from rest_framework import filters, status, viewsets @@ -150,9 +151,9 @@ def partial_update(self, request, pk=None): project = request_permission.project room = ( Room.objects.filter( - callback_url__endswith=pk, - project_uuid=project, - is_active=True, + (Q(ticket__uuid=pk) | Q(callback_url__endswith=pk)) + & Q(project_uuid=project) + & Q(is_active=True) ) .select_related("user", "queue__sector__project") .first() From 3184e11ac600eaf2d92c66171a531aaa0cc51315 Mon Sep 17 00:00:00 2001 From: Kallil Souza dos Santos Date: Thu, 19 Dec 2024 15:48:52 -0300 Subject: [PATCH 5/7] fix: ticket_uuid filter used in the Room queryset in the RoomUserExternalViewSet's partial_update --- chats/apps/api/v1/external/rooms/viewsets.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/chats/apps/api/v1/external/rooms/viewsets.py b/chats/apps/api/v1/external/rooms/viewsets.py index b3dd2b12..caee8db9 100644 --- a/chats/apps/api/v1/external/rooms/viewsets.py +++ b/chats/apps/api/v1/external/rooms/viewsets.py @@ -151,7 +151,7 @@ def partial_update(self, request, pk=None): project = request_permission.project room = ( Room.objects.filter( - (Q(ticket__uuid=pk) | Q(callback_url__endswith=pk)) + (Q(ticket_uuid=pk) | Q(callback_url__endswith=pk)) & Q(project_uuid=project) & Q(is_active=True) ) From 901c71918ab1c1e8df6ae595b3f7c4a6a1b5d96c Mon Sep 17 00:00:00 2001 From: Kallil Souza dos Santos Date: Fri, 20 Dec 2024 08:44:09 -0300 Subject: [PATCH 6/7] Add ticket_uuid to RoomFlowSerializer --- chats/apps/api/v1/external/rooms/serializers.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/chats/apps/api/v1/external/rooms/serializers.py b/chats/apps/api/v1/external/rooms/serializers.py index 133c11b4..c17323ee 100644 --- a/chats/apps/api/v1/external/rooms/serializers.py +++ b/chats/apps/api/v1/external/rooms/serializers.py @@ -132,6 +132,7 @@ class RoomFlowSerializer(serializers.ModelSerializer): contact = ContactRelationsSerializer(many=False, required=False, read_only=False) flow_uuid = serializers.CharField(required=False, write_only=True, allow_null=True) is_anon = serializers.BooleanField(write_only=True, required=False, default=False) + ticket_uuid = serializers.UUIDField(required=False) class Meta: model = Room @@ -144,6 +145,7 @@ class Meta: "transfer_history", # Writable Fields "sector_uuid", + "ticket_uuid", "queue_uuid", "user_email", "contact", From c4dd7c5bed10a552c026265be3ea84c77c201ba7 Mon Sep 17 00:00:00 2001 From: Kallil Souza dos Santos Date: Fri, 20 Dec 2024 08:50:37 -0300 Subject: [PATCH 7/7] fix: remove duplicated ticket_uuid field from room flow serializer --- chats/apps/api/v1/external/rooms/serializers.py | 1 - 1 file changed, 1 deletion(-) diff --git a/chats/apps/api/v1/external/rooms/serializers.py b/chats/apps/api/v1/external/rooms/serializers.py index c17323ee..186ed354 100644 --- a/chats/apps/api/v1/external/rooms/serializers.py +++ b/chats/apps/api/v1/external/rooms/serializers.py @@ -151,7 +151,6 @@ class Meta: "contact", "created_on", "custom_fields", - "ticket_uuid", "callback_url", "is_waiting", "flow_uuid",