Merge branch 'main' of https://gitea.felixits.uz/sifatbaho/backend-v1 into shaxob
# Conflicts: # core/apps/accounts/serializers/user.py # core/apps/accounts/urls.py # core/apps/accounts/views/user.py # core/apps/evaluation/urls.py # core/apps/evaluation/views/request.py
This commit is contained in:
@@ -30,6 +30,22 @@ class UserUpdateSerializer(serializers.ModelSerializer):
|
||||
"last_name",
|
||||
"avatar"
|
||||
]
|
||||
|
||||
class AdminUserSerializer(serializers.ModelSerializer):
|
||||
avatar = serializers.SerializerMethodField(method_name='get_avatar')
|
||||
|
||||
class Meta:
|
||||
model = get_user_model()
|
||||
fields = "__all__"
|
||||
|
||||
def get_avatar(self, obj):
|
||||
request = self.context.get('request')
|
||||
if obj.avatar:
|
||||
return request.build_absolute_uri(obj.avatar.url)
|
||||
return None
|
||||
|
||||
|
||||
|
||||
class UserCreateSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = get_user_model()
|
||||
@@ -38,5 +54,4 @@ class UserCreateSerializer(serializers.ModelSerializer):
|
||||
"first_name",
|
||||
"last_name",
|
||||
"password",
|
||||
"role"
|
||||
]
|
||||
"role"]
|
||||
@@ -5,7 +5,7 @@ Accounts app urls
|
||||
from django.urls import path, include
|
||||
from rest_framework_simplejwt import views as jwt_views
|
||||
from .views import RegisterView, ResetPasswordView, MeView, ChangePasswordView, UserListApiView, AdminUserListApiView, \
|
||||
AdminUpdateAPIView, AdminCreateAPIView
|
||||
AdminUserView, AdminCreateAPIView, AdminUpdateAPIView
|
||||
from rest_framework.routers import DefaultRouter
|
||||
|
||||
router = DefaultRouter()
|
||||
@@ -13,6 +13,7 @@ router.register("auth", RegisterView, basename="auth")
|
||||
router.register("auth", ResetPasswordView, basename="reset-password")
|
||||
router.register("auth", MeView, basename="me")
|
||||
router.register("auth", ChangePasswordView, basename="change-password")
|
||||
router.register("user", AdminUserView, basename="user-crud")
|
||||
|
||||
|
||||
urlpatterns = [
|
||||
|
||||
@@ -1,13 +1,15 @@
|
||||
from django.contrib.auth import get_user_model
|
||||
from django.shortcuts import get_object_or_404
|
||||
from django_core.mixins import BaseViewSetMixin
|
||||
from drf_spectacular.utils import extend_schema
|
||||
from rest_framework import generics, filters
|
||||
from rest_framework.permissions import IsAuthenticated
|
||||
from rest_framework.response import Response
|
||||
from rest_framework.views import APIView
|
||||
from rest_framework.viewsets import ModelViewSet
|
||||
|
||||
from core.apps.accounts.choices.user import RoleChoice
|
||||
from core.apps.accounts.serializers.user import UserSerializer, UserCreateSerializer
|
||||
from core.apps.accounts.serializers.user import UserSerializer, AdminUserSerializer, UserCreateSerializer
|
||||
|
||||
User = get_user_model()
|
||||
|
||||
@@ -33,6 +35,18 @@ class AdminUserListApiView(generics.ListAPIView):
|
||||
search_fields = ['phone', 'first_name', 'last_name']
|
||||
|
||||
|
||||
@extend_schema(tags=["User"], request=AdminUserSerializer)
|
||||
class AdminUserView(BaseViewSetMixin, ModelViewSet):
|
||||
queryset = User.objects.filter(role=RoleChoice.USER)
|
||||
serializer_class = AdminUserSerializer
|
||||
permission_classes = [IsAuthenticated]
|
||||
filter_backends = [filters.SearchFilter]
|
||||
search_fields = ['phone', 'first_name', 'last_name']
|
||||
|
||||
def serializer_context(self):
|
||||
return self.serializer_class(context={"request": self.request})
|
||||
|
||||
|
||||
@extend_schema(tags=['User'],
|
||||
responses={200: UserSerializer},
|
||||
request=UserCreateSerializer)
|
||||
@@ -49,10 +63,10 @@ class AdminCreateAPIView(APIView):
|
||||
|
||||
return Response(serializer.data, status=201)
|
||||
|
||||
|
||||
@extend_schema(tags=['User'],
|
||||
responses={200: UserSerializer},
|
||||
request=UserCreateSerializer)
|
||||
|
||||
class AdminUpdateAPIView(APIView):
|
||||
permission_classes = [IsAuthenticated]
|
||||
|
||||
@@ -66,5 +80,3 @@ class AdminUpdateAPIView(APIView):
|
||||
serializer.save()
|
||||
|
||||
return Response(serializer.data, status=200)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user