clean up account swagger

This commit is contained in:
Parsa Nazer
2025-03-27 16:37:20 +03:30
parent 212333f495
commit 2a26b50d23
2 changed files with 45 additions and 14 deletions
+1 -2
View File
@@ -1,12 +1,11 @@
from django.urls import path
from . import views
from djoser.urls.jwt import views as djoser_jwt_views
urlpatterns = [
path('profile', views.ProfileView.as_view()),
path('verify', djoser_jwt_views.TokenVerifyView.as_view(), name='jwt-verify'),
path('verify', views.TokenVerifyView.as_view(), name='jwt-verify'),
path('send_otp', views.SendOTPView.as_view(), name='send-otp-view'),
path('yee_token_bedeeee', views.KonGhoshadToken.as_view()),
path('address/create', views.CreateAddressView.as_view(), name='create-address'),
+44 -12
View File
@@ -5,7 +5,7 @@ from rest_framework.response import Response
from .serializers import *
from .models import UserAddressModel, User, SecurityBreachAttemptModel
from rest_framework.permissions import IsAuthenticated, AllowAny
from drf_spectacular.utils import extend_schema, OpenApiParameter
from drf_spectacular.utils import extend_schema, OpenApiParameter, extend_schema_view
from rest_framework_simplejwt.views import TokenObtainPairView
from django.shortcuts import get_object_or_404, redirect
from rest_framework_simplejwt.tokens import RefreshToken
@@ -19,7 +19,7 @@ from rest_framework_simplejwt.tokens import RefreshToken
class SendOTPView(APIView):
permission_classes = [AllowAny]
@extend_schema(
tags=["Authentication"],
tags=["authentication"],
request={
"application/json": {
"type": "object",
@@ -70,7 +70,7 @@ Code: {otp}"""
class CustomTokenObtainPairView(TokenObtainPairView):
serializer_class = CustomTokenObtainPairSerializer
@extend_schema(
tags=["Authentication"]
tags=["authentication"]
)
def post(self, request, *args, **kwargs):
phone = request.data.get("phone")
@@ -93,10 +93,10 @@ class CustomTokenObtainPairView(TokenObtainPairView):
class KonGhoshadToken(TokenObtainPairView):
class KonGhoshadToken(APIView):
serializer_class = CustomTokenObtainPairSerializer
@extend_schema(
tags=["Authentication"]
tags=["authentication"]
)
def get(self, request, *args, **kwargs):
random_user = User.objects.all().first()
@@ -116,12 +116,16 @@ class KonGhoshadToken(TokenObtainPairView):
class ProfileView(APIView):
serializer_class = ProfileSerializer
permission_classes = [IsAuthenticated]
@extend_schema(
tags=["accounts profile"]
)
def get(self, request):
user_ser = self.serializer_class(instance=request.user, context={'request': request})
return Response(user_ser.data, status=status.HTTP_200_OK)
@extend_schema(
tags=["accounts profile"]
)
def patch(self, request):
user = request.user
user_ser = self.serializer_class(user, data=request.data, partial=True, context={'request': request})
@@ -130,6 +134,10 @@ class ProfileView(APIView):
return Response(user_ser.data)
return Response(user_ser.errors, status=status.HTTP_400_BAD_REQUEST)
@extend_schema_view(
post=extend_schema(tags=["accounts address"])
)
class CreateAddressView(generics.CreateAPIView):
queryset = UserAddressModel.objects.all()
serializer_class = UserAddressSerializer
@@ -139,7 +147,10 @@ class CreateAddressView(generics.CreateAPIView):
user = self.request.user
is_first_address = not UserAddressModel.objects.filter(user=user).exists()
serializer.save(user=user, is_main=is_first_address)
@extend_schema_view(
put=extend_schema(tags=["accounts address"]),
patch=extend_schema(tags=["accounts address"])
)
class EditAddressView(generics.UpdateAPIView):
queryset = UserAddressModel.objects.all()
serializer_class = UserAddressSerializer
@@ -147,21 +158,27 @@ class EditAddressView(generics.UpdateAPIView):
def get_queryset(self):
return UserAddressModel.objects.filter(user=self.request.user)
@extend_schema_view(
delete=extend_schema(tags=["accounts address"])
)
class DeleteAddressView(generics.DestroyAPIView):
queryset = UserAddressModel.objects.all()
permission_classes = [permissions.IsAuthenticated]
def get_queryset(self):
return UserAddressModel.objects.filter(user=self.request.user)
@extend_schema_view(
get=extend_schema(tags=["accounts address"])
)
class GetUserAddressesView(generics.ListAPIView):
serializer_class = UserAddressSerializer
permission_classes = [permissions.IsAuthenticated]
def get_queryset(self):
return UserAddressModel.objects.filter(user=self.request.user)
@extend_schema_view(
get=extend_schema(tags=["accounts address"])
)
class GetIDUserAddressView(generics.RetrieveAPIView):
serializer_class = UserAddressSerializer
permission_classes = [permissions.IsAuthenticated]
@@ -174,6 +191,9 @@ class GetIDUserAddressView(generics.RetrieveAPIView):
class SubscribeView(APIView):
serializer_class = PushSubscriptionSerializer
permission_classes = [IsAuthenticated]
@extend_schema(
tags=["accounts subscribe"]
)
def post(self, request):
push_ser = self.serializer_class(data=request.data)
if push_ser.is_valid():
@@ -191,6 +211,9 @@ class UnsubscribeSerializer(serializers.Serializer):
class UnsubscribeView(APIView):
permission_classes = [IsAuthenticated]
serializer_class = UnsubscribeSerializer
@extend_schema(
tags=["accounts subscribe"]
)
def post(self, request):
endpoint = request.data.get("end_point")
if not endpoint:
@@ -221,6 +244,7 @@ class LogoutView(APIView):
@extend_schema(
request=LogoutSerializer,
tags=["authentication"],
responses={205: None, 400: "Bad request (invalid token or missing data)"},
)
def post(self, request):
@@ -230,4 +254,12 @@ class LogoutView(APIView):
token.blacklist()
return Response(status=status.HTTP_205_RESET_CONTENT)
except Exception as e:
return Response(status=status.HTTP_400_BAD_REQUEST)
return Response(status=status.HTTP_400_BAD_REQUEST)
from djoser.urls.jwt import views as djoser_jwt_views
@extend_schema_view(
post=extend_schema(tags=["authentication"])
)
class TokenVerifyView(djoser_jwt_views.TokenVerifyView):
pass