From 5faac7e63d1a9f3b8bf44886eab4a2735e9f4659 Mon Sep 17 00:00:00 2001 From: Sayyid Hamid Mahdavi Date: Mon, 2 Jun 2025 15:07:59 +0330 Subject: [PATCH] detailed user api --- apps/users/urls.py | 8 +++++--- apps/users/views.py | 11 ++++++++++- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/apps/users/urls.py b/apps/users/urls.py index 22b9361..c8f4d6e 100644 --- a/apps/users/urls.py +++ b/apps/users/urls.py @@ -1,7 +1,8 @@ from django.urls import path from django.contrib.auth.views import LogoutView -from .views import UserListView, UserDetailView, AccountView, RequestOTPView, ChangePasswordView, \ - OTPLoginView, ProfileDetailView, ProfileUpdateView, RequestOTTView, UserCurrentAvatarUrlView, UserInquiryView +from .views import UserListView, UserPublicRetrieveView, AccountView, RequestOTPView, ChangePasswordView, \ + OTPLoginView, ProfileDetailView, ProfileUpdateView, RequestOTTView, UserCurrentAvatarUrlView, UserInquiryView, \ + UserDetailedRetrieveView app_name = "users" @@ -12,8 +13,9 @@ urlpatterns = [ path('account/update/', ProfileUpdateView.as_view(), name='account_update'), path('api/account/', AccountView.as_view(), name='account_api'), path('api/users/', UserListView.as_view(), name='user_list_api'), - path('api/users//', UserDetailView.as_view(), name='user_detail_api'), + path('api/users//', UserPublicRetrieveView.as_view(), name='user_public_retrieve_api'), path('api/users//avatar', UserCurrentAvatarUrlView.as_view(), name='user_avatar_api'), + path('api/users//details', UserDetailedRetrieveView.as_view(), name='user_detailed_retrieve_api'), path('api/request_otp/', RequestOTPView.as_view(), name='request_otp_api'), path('api/request_ott/', RequestOTTView.as_view(), name='request_ott_api'), path('api/change_password/', ChangePasswordView.as_view(), name='change_password_api'), diff --git a/apps/users/views.py b/apps/users/views.py index 926b0a8..e430935 100644 --- a/apps/users/views.py +++ b/apps/users/views.py @@ -32,7 +32,7 @@ class UserListView(generics.ListAPIView): } -class UserDetailView(generics.RetrieveAPIView): +class UserPublicRetrieveView(generics.RetrieveAPIView): permission_classes = [IsAuthenticatedOrTokenMatchesOASRequirements] queryset = User.objects.all() serializer_class = PublicUserSerializer @@ -41,6 +41,15 @@ class UserDetailView(generics.RetrieveAPIView): "GET": [["accounts.profile:retrieve"]], } +class UserDetailedRetrieveView(generics.RetrieveAPIView): + permission_classes = [IsAuthenticatedOrTokenMatchesOASRequirements] + queryset = User.objects.all() + serializer_class = AccountSerializer + lookup_field = 'uuid' + required_alternate_scopes = { + "GET": [["accounts.profile:detailed_retrieve"]], + } + class UserCurrentAvatarUrlView(generics.RetrieveAPIView): permission_classes = [AllowAny] queryset = User.objects.all()