/api/v1/admin-user/list/ edit va post

This commit is contained in:
Shaxobff
2026-04-23 13:54:31 +05:00
parent b8021c7728
commit 049cd6ff25
7 changed files with 82 additions and 14 deletions

View File

@@ -30,3 +30,13 @@ class UserUpdateSerializer(serializers.ModelSerializer):
"last_name",
"avatar"
]
class UserCreateSerializer(serializers.ModelSerializer):
class Meta:
model = get_user_model()
fields = [
"phone",
"first_name",
"last_name",
"password",
"role"
]

View File

@@ -4,7 +4,8 @@ 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, \
UserCreate, UserUpdate
from rest_framework.routers import DefaultRouter
router = DefaultRouter()
@@ -25,4 +26,6 @@ urlpatterns = [
),
path("user/list/", UserListApiView.as_view(), name="user-list"),
path("admin-user/list/", AdminUserListApiView.as_view(), name="admin-user-list"),
path("user/create/", UserCreate.as_view(), name="user-create"),
path("user/update/", UserUpdate.as_view(), name="user-update"),
]

View File

@@ -1,15 +1,17 @@
from django.contrib.auth import get_user_model
from django.shortcuts import get_object_or_404
from drf_spectacular.utils import extend_schema
from h11 import Response
from rest_framework import generics, filters
from rest_framework.permissions import IsAuthenticated
from rest_framework.views import APIView
from drf_spectacular.utils import extend_schema
from core.apps.accounts.serializers.user import UserSerializer
from core.apps.accounts.choices.user import RoleChoice
from core.apps.accounts.serializers.user import UserSerializer, UserCreateSerializer
User = get_user_model()
@extend_schema(tags=['User'])
class UserListApiView(generics.ListAPIView):
queryset = User.objects.filter(role=RoleChoice.USER)
@@ -29,3 +31,37 @@ class AdminUserListApiView(generics.ListAPIView):
permission_classes = [IsAuthenticated]
filter_backends = [filters.SearchFilter]
search_fields = ['phone', 'first_name', 'last_name']
@extend_schema(tags=['User'],
responses={200: UserSerializer},
request=UserCreateSerializer)
class UserCreate(APIView):
permission_classes = [IsAuthenticated]
def post(self, request):
if request.user.role not in (RoleChoice.SUPERUSER, RoleChoice.ADMIN):
return Response({'detail': 'Forbidden'}, status=403)
serializer = UserCreateSerializer(data=request.data)
serializer.is_valid(raise_exception=True)
serializer.save()
return Response(serializer.data, status=201)
@extend_schema(tags=['User'],
responses={200: UserSerializer},
request=UserCreateSerializer)
class UserUpdate(APIView):
permission_classes = [IsAuthenticated]
def put(self, request, pk):
if request.user.role not in (RoleChoice.SUPERUSER, RoleChoice.ADMIN):
return Response({'detail': 'Forbidden'}, status=403)
user = get_object_or_404(User, pk=pk)
serializer = UserCreateSerializer(user, data=request.data)
serializer.is_valid(raise_exception=True)
serializer.save()
return Response(serializer.data, status=200)

View File

@@ -1,4 +1,5 @@
import re
from django.contrib.auth import get_user_model
from rest_framework import serializers
@@ -358,8 +359,12 @@ class AutoEvaluationAppraisersSerializer(serializers.Serializer):
data['users'] = users
return data
class AutoEvaluationSerializer(ModelSerializer):
class Meta:
model = AutoEvaluationModel
fields = ("brand", "brand_model", "year", "color", "transmission", "condition", "fuel_type", "mileage")
class AutoEvaluationSerializer(serializers.Serializer):
brand = serializers.CharField()
brand_model = serializers.CharField()
year = serializers.CharField()
color = serializers.CharField()
transmission = serializers.CharField()
condition = serializers.CharField()
fuel_type = serializers.CharField()
mileage = serializers.CharField()

View File

@@ -54,7 +54,6 @@ router.register("vehicle", VehicleView, basename="vehicle")
router.register("valuation", ValuationView, basename="valuation")
router.register("property-owner", PropertyOwnerView, basename="property-owner")
router.register("customer", CustomerView, basename="customer")
router.register("auto-evaluation-request", AutoEvaluationRequestView, basename="auto")
urlpatterns = [
path("", include(router.urls)),
path("auto-evaluation/appraisers/", include(
@@ -77,4 +76,6 @@ urlpatterns = [
),
path("evaluation-request/<int:pk>/change-status/", EvaluationStatusChange.as_view(),
name="evaluation-change-status"),
path("auto-evaluation-request/", AutoEvaluationRequestView.as_view(),
name="evaluation-request-price-estimate"),
]

View File

@@ -1,17 +1,20 @@
import requests
from django.db.models import Q
from django_core.mixins import BaseViewSetMixin
from django.shortcuts import get_object_or_404
from django_core.mixins import BaseViewSetMixin
from django_filters.rest_framework import DjangoFilterBackend
from drf_spectacular.utils import extend_schema, OpenApiParameter
from rest_framework.filters import OrderingFilter, SearchFilter
from rest_framework.permissions import AllowAny, IsAuthenticated
from rest_framework.viewsets import ModelViewSet
from rest_framework.generics import GenericAPIView
from rest_framework.permissions import AllowAny, IsAuthenticated
from rest_framework.response import Response
from rest_framework.views import APIView
from rest_framework.viewsets import ModelViewSet
from core.apps.accounts.serializers.user import UserSerializer
from core.apps.evaluation.filters.auto import AutoevaluationFilter
from core.apps.evaluation.models import AutoEvaluationModel
from core.apps.evaluation.serializers import AutoEvaluationSerializer
from core.apps.evaluation.serializers.auto import (
CreateAutoevaluationSerializer,
ListAutoevaluationSerializer,
@@ -155,7 +158,16 @@ class AutoEvaluationListAppraisersView(GenericAPIView):
except Exception as e:
return Response({"error": str(e)}, status=500)
@extend_schema(
tags=["AutoEvaluation"],
request=AutoEvaluationSerializer,
)
class AutoEvaluationRequestView(APIView):
authentication_classes = []
permission_classes = [AllowAny]
def post(self, request):
serializer = AutoEvaluationSerializer(data=request.data)

View File

@@ -11,6 +11,7 @@ from rest_framework.response import Response
from rest_framework.views import APIView
from rest_framework import status
from core.apps.accounts.choices import RoleChoice
from core.apps.evaluation.filters.request import EvaluationrequestFilter
from core.apps.evaluation.models import EvaluationrequestModel
from core.apps.evaluation.serializers.request import (