""" web_admin user_management views file """ # django imports from rest_framework.viewsets import GenericViewSet, mixins from rest_framework.filters import OrderingFilter, SearchFilter 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 # local imports from account.utils import custom_response, custom_error_response from base.constants import USER_TYPE from base.messages import SUCCESS_CODE, ERROR_CODE from web_admin.models import Article, ArticleCard, ArticleSurvey, DefaultArticleCardImage from web_admin.permission import AdminPermission from web_admin.serializers.user_management_serializer import (UserManagementListSerializer, UserManagementDetailSerializer) USER = get_user_model() class UserManagementViewSet(GenericViewSet, mixins.ListModelMixin, mixins.RetrieveModelMixin): """ api to manage (list, view, edit) user """ serializer_class = UserManagementListSerializer permission_classes = [] queryset = USER.objects.filter(is_superuser=False).prefetch_related( 'guardian_profile', 'junior_profile') 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) elif self.request.query_params.get('user_type') == dict(USER_TYPE).get('1'): return self.queryset.filter(guardian_profile__isnull=True) else: return self.queryset def list(self, request, *args, **kwargs): """ api method to list all the user :param request: :return: """ queryset = self.get_queryset() serializer = self.serializer_class(queryset, many=True) return custom_response(None, data=serializer.data) def retrieve(self, request, *args, **kwargs): queryset = self.queryset if self.request.query_params.get('user_type') == dict(USER_TYPE).get('2'): queryset = queryset.filter(guardian_profile__user__id=kwargs['pk']) elif self.request.query_params.get('user_type') == dict(USER_TYPE).get('1'): queryset = queryset.filter(junior_profile__auth__id=kwargs['pk']) serializer = UserManagementDetailSerializer(queryset, many=True) return custom_response(None, data=serializer.data)