mirror of
https://github.com/HamzaSha1/zod-backend.git
synced 2025-11-27 00:54:54 +00:00
user detail view api, searching user list, count
This commit is contained in:
@ -8,6 +8,7 @@ from rest_framework import status
|
||||
from rest_framework.decorators import action
|
||||
from rest_framework.permissions import IsAuthenticated, AllowAny
|
||||
from django.contrib.auth import get_user_model
|
||||
from django.db.models import Q
|
||||
|
||||
# local imports
|
||||
from account.utils import custom_response, custom_error_response
|
||||
@ -27,16 +28,23 @@ class UserManagementViewSet(GenericViewSet, mixins.ListModelMixin, mixins.Retrie
|
||||
"""
|
||||
serializer_class = UserManagementListSerializer
|
||||
permission_classes = []
|
||||
queryset = USER.objects.filter(is_superuser=False).prefetch_related(
|
||||
'guardian_profile', 'junior_profile')
|
||||
queryset = USER.objects.filter(is_superuser=False
|
||||
).prefetch_related('guardian_profile',
|
||||
'junior_profile'
|
||||
).exclude(junior_profile__isnull=True,
|
||||
guardian_profile__isnull=True).order_by('date_joined')
|
||||
filter_backends = (SearchFilter,)
|
||||
search_fields = ['first_name', 'last_name']
|
||||
|
||||
def get_queryset(self):
|
||||
if self.request.query_params.get('user_type') == dict(USER_TYPE).get('2'):
|
||||
return self.queryset.filter(junior_profile__isnull=True)
|
||||
queryset = self.queryset.filter(junior_profile__isnull=True)
|
||||
elif self.request.query_params.get('user_type') == dict(USER_TYPE).get('1'):
|
||||
return self.queryset.filter(guardian_profile__isnull=True)
|
||||
queryset = self.queryset.filter(guardian_profile__isnull=True)
|
||||
else:
|
||||
return self.queryset
|
||||
queryset = self.queryset
|
||||
queryset = self.filter_queryset(queryset)
|
||||
return queryset
|
||||
|
||||
def list(self, request, *args, **kwargs):
|
||||
"""
|
||||
@ -45,8 +53,11 @@ class UserManagementViewSet(GenericViewSet, mixins.ListModelMixin, mixins.Retrie
|
||||
:return:
|
||||
"""
|
||||
queryset = self.get_queryset()
|
||||
serializer = self.serializer_class(queryset, many=True)
|
||||
return custom_response(None, data=serializer.data)
|
||||
count = queryset.count()
|
||||
paginator = self.pagination_class()
|
||||
paginated_queryset = paginator.paginate_queryset(queryset, request)
|
||||
serializer = self.serializer_class(paginated_queryset, many=True)
|
||||
return custom_response(None, data=serializer.data, count=count)
|
||||
|
||||
def retrieve(self, request, *args, **kwargs):
|
||||
queryset = self.queryset
|
||||
|
||||
Reference in New Issue
Block a user