1 Commits

Author SHA1 Message Date
komoliddin
fb275a091a Add view for crud user 2026-04-24 11:21:01 +05:00
3 changed files with 32 additions and 2 deletions

View File

@@ -30,3 +30,16 @@ 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

View File

@@ -4,7 +4,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
from .views import RegisterView, ResetPasswordView, MeView, ChangePasswordView, UserListApiView, AdminUserListApiView,AdminUserView
from rest_framework.routers import DefaultRouter
router = DefaultRouter()
@@ -12,6 +12,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 = [

View File

@@ -5,8 +5,11 @@ from rest_framework.permissions import IsAuthenticated
from drf_spectacular.utils import extend_schema
from core.apps.accounts.serializers.user import UserSerializer
from core.apps.accounts.serializers.user import UserSerializer, AdminUserSerializer
from core.apps.accounts.choices.user import RoleChoice
from django_core.mixins import BaseViewSetMixin
from rest_framework.viewsets import ModelViewSet
User = get_user_model()
@@ -29,3 +32,16 @@ class AdminUserListApiView(generics.ListAPIView):
permission_classes = [IsAuthenticated]
filter_backends = [filters.SearchFilter]
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})