gold eggs backend
Some checks failed
Build and Push to Docker Hub / build-test-push (push) Failing after 1m55s
Some checks failed
Build and Push to Docker Hub / build-test-push (push) Failing after 1m55s
This commit is contained in:
2
core/http/views/__init__.py
Normal file
2
core/http/views/__init__.py
Normal file
@@ -0,0 +1,2 @@
|
||||
from .auth import * # noqa
|
||||
from .generics import * # noqa
|
||||
25
core/http/views/auth.py
Normal file
25
core/http/views/auth.py
Normal file
@@ -0,0 +1,25 @@
|
||||
from django.utils.translation import gettext as _
|
||||
from rest_framework import views
|
||||
from rest_framework import request
|
||||
from rest_framework import throttling
|
||||
|
||||
from core import enums
|
||||
from core import services
|
||||
from core.http import serializers
|
||||
from core.http.views import generics as http_views
|
||||
|
||||
|
||||
class AbstractSendSms(views.APIView, http_views.ApiResponse):
|
||||
serializer_class = serializers.ResendSerializer
|
||||
throttle_classes = [throttling.UserRateThrottle]
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super().__init__(*args, **kwargs)
|
||||
self.service = services.UserService()
|
||||
|
||||
def post(self, request: request.Request):
|
||||
ser = self.serializer_class(data=request.data)
|
||||
ser.is_valid(raise_exception=True)
|
||||
phone = ser.data.get("phone")
|
||||
self.service.send_confirmation(phone)
|
||||
return self.success(_(enums.Messages.SEND_MESSAGE) % {"phone": phone})
|
||||
67
core/http/views/generics.py
Normal file
67
core/http/views/generics.py
Normal file
@@ -0,0 +1,67 @@
|
||||
from rest_framework import generics, response, status
|
||||
|
||||
from core.exceptions import BreakException
|
||||
|
||||
|
||||
class ApiResponse:
|
||||
def response(
|
||||
self,
|
||||
success=True,
|
||||
message="",
|
||||
data=None,
|
||||
status_code=status.HTTP_200_OK,
|
||||
**kwargs
|
||||
):
|
||||
if data is None:
|
||||
data = {}
|
||||
response_data = {
|
||||
"success": success,
|
||||
"message": message,
|
||||
"data": data,
|
||||
**kwargs,
|
||||
}
|
||||
|
||||
return response.Response(data=response_data, status=status_code)
|
||||
|
||||
def success(
|
||||
self, message="", data=None, status_code=status.HTTP_200_OK, **kwargs
|
||||
):
|
||||
return self.response(True, message, data, status_code, **kwargs)
|
||||
|
||||
def error(
|
||||
self,
|
||||
message="",
|
||||
data=None,
|
||||
error_code=0,
|
||||
status_code=status.HTTP_400_BAD_REQUEST,
|
||||
exception=None,
|
||||
**kwargs
|
||||
):
|
||||
if isinstance(exception, BreakException):
|
||||
raise exception
|
||||
return self.response(
|
||||
False, message, data, status_code, error_code=error_code, **kwargs
|
||||
) # noqa
|
||||
|
||||
|
||||
class ListApiView(generics.ListAPIView, ApiResponse):
|
||||
def list(self, request, *args, **kwargs):
|
||||
queryset = self.filter_queryset(self.get_queryset())
|
||||
|
||||
page = self.paginate_queryset(queryset)
|
||||
if page is not None:
|
||||
serializer = self.get_serializer(page, many=True)
|
||||
return self.get_paginated_response(serializer.data)
|
||||
|
||||
serializer = self.get_serializer(queryset, many=True)
|
||||
return self.success(data=serializer.data)
|
||||
|
||||
|
||||
class CreateApiView(generics.CreateAPIView, ApiResponse):
|
||||
def create(self, request, *args, **kwargs):
|
||||
super().create(request, *args, **kwargs)
|
||||
return self.success(
|
||||
self.message
|
||||
if hasattr(self, "message")
|
||||
else "Muvaffaqiyatli yaratildi"
|
||||
) # noqa
|
||||
29
core/http/views/user.py
Normal file
29
core/http/views/user.py
Normal file
@@ -0,0 +1,29 @@
|
||||
from rest_framework.generics import UpdateAPIView
|
||||
|
||||
from core.http.models import User
|
||||
from core.http.serializers.user import (
|
||||
UserAvatarUpdateSerializer,
|
||||
UserUpdateSerializer,
|
||||
)
|
||||
|
||||
|
||||
class UserUpdateView(UpdateAPIView):
|
||||
serializer_class = UserUpdateSerializer
|
||||
queryset = User.objects.all()
|
||||
|
||||
def get_object(self):
|
||||
return self.request.user
|
||||
|
||||
def perform_update(self, serializer):
|
||||
serializer.save(user=self.request.user)
|
||||
|
||||
|
||||
class UserAvatarUpdateView(UpdateAPIView):
|
||||
serializer_class = UserAvatarUpdateSerializer
|
||||
queryset = User.objects.all()
|
||||
|
||||
def get_object(self):
|
||||
return self.request.user
|
||||
|
||||
def perform_update(self, serializer):
|
||||
serializer.save(user=self.request.user)
|
||||
Reference in New Issue
Block a user