feat: add appraisers for auto-evaluation and add curd for this

This commit is contained in:
xoliqberdiyev
2026-04-03 17:32:05 +05:00
parent be0c96b28a
commit 9a18dda657
10 changed files with 172 additions and 7 deletions

View File

@@ -9,7 +9,8 @@ class UserSerializer(serializers.ModelSerializer):
"updated_at",
"password",
"groups",
"user_permissions"
"user_permissions",
"role"
]
model = get_user_model()

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
from .views import RegisterView, ResetPasswordView, MeView, ChangePasswordView, UserListApiView, AdminUserListApiView
from rest_framework.routers import DefaultRouter
router = DefaultRouter()
@@ -23,4 +23,6 @@ urlpatterns = [
jwt_views.TokenRefreshView.as_view(),
name="token_refresh",
),
path("user/list/", UserListApiView.as_view(), name="user-list"),
path("admin-user/list/", AdminUserListApiView.as_view(), name="admin-user-list"),
]

View File

@@ -1 +1,2 @@
from .auth import * # noqa
from .user import * # noqa

View File

@@ -0,0 +1,28 @@
from django.contrib.auth import get_user_model
from rest_framework import generics, filters
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.choices.user import RoleChoice
User = get_user_model()
@extend_schema(tags=['User'])
class UserListApiView(generics.ListAPIView):
queryset = User.objects.filter(role=RoleChoice.USER)
serializer_class = UserSerializer
permission_classes = [IsAuthenticated]
filter_backends = [filters.SearchFilter]
search_fields = ['phone', 'first_name', 'last_name']
@extend_schema(tags=['User'])
class AdminUserListApiView(generics.ListAPIView):
queryset = User.objects.exclude(role=RoleChoice.USER)
serializer_class = UserSerializer
permission_classes = [IsAuthenticated]
filter_backends = [filters.SearchFilter]
search_fields = ['phone', 'first_name', 'last_name']