mirror of
https://github.com/HamzaSha1/zod-backend.git
synced 2025-07-16 02:16:16 +00:00
59 lines
2.4 KiB
Python
59 lines
2.4 KiB
Python
"""
|
|
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)
|