From 067cf81d2616c6c63d73cdf0b4f838b6e679857b Mon Sep 17 00:00:00 2001 From: helllllllder Date: Tue, 24 Sep 2024 16:02:03 -0300 Subject: [PATCH] feat: projectpermission search on viewset --- chats/apps/api/v1/projects/viewsets.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/chats/apps/api/v1/projects/viewsets.py b/chats/apps/api/v1/projects/viewsets.py index 281ce2c0..a8756926 100644 --- a/chats/apps/api/v1/projects/viewsets.py +++ b/chats/apps/api/v1/projects/viewsets.py @@ -1,9 +1,12 @@ import json + from django.core.exceptions import ObjectDoesNotExist, ValidationError +from django.db.models import CharField, Value +from django.db.models.functions import Concat from django_filters.rest_framework import DjangoFilterBackend from drf_yasg import openapi from drf_yasg.utils import swagger_auto_schema -from rest_framework import status, viewsets, mixins +from rest_framework import filters, mixins, status, viewsets from rest_framework.decorators import action from rest_framework.pagination import LimitOffsetPagination from rest_framework.permissions import IsAuthenticated @@ -426,10 +429,15 @@ def partial_update(self, request, uuid=None): class ProjectPermissionViewset(viewsets.ReadOnlyModelViewSet): - queryset = ProjectPermission.objects.all() + queryset = ProjectPermission.objects.all().annotate( + full_name=Concat( + "user__first_name", Value(" "), "user__last_name", output_field=CharField() + ) + ) serializer_class = ProjectPermissionReadSerializer permission_classes = [] - filter_backends = [DjangoFilterBackend] + filter_backends = [DjangoFilterBackend, filters.SearchFilter] + search_fields = ["user_id", "full_name"] filterset_fields = ["project", "role", "status"] lookup_field = "uuid"