diff --git a/chats/apps/api/v1/external/rooms/serializers.py b/chats/apps/api/v1/external/rooms/serializers.py index 06975686..186ed354 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", diff --git a/chats/apps/api/v1/external/rooms/viewsets.py b/chats/apps/api/v1/external/rooms/viewsets.py index 3a03edad..caee8db9 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() 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) 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",