2023-05-18 20:25:22 +03:00
|
|
|
from django.contrib.auth import get_user_model
|
2023-05-21 20:46:07 +03:00
|
|
|
from drf_spectacular.utils import extend_schema
|
|
|
|
from rest_framework import status, generics, permissions
|
2023-05-18 20:25:22 +03:00
|
|
|
from rest_framework.decorators import action
|
|
|
|
from rest_framework.mixins import ListModelMixin, RetrieveModelMixin, UpdateModelMixin
|
|
|
|
from rest_framework.response import Response
|
|
|
|
from rest_framework.viewsets import GenericViewSet
|
|
|
|
|
2023-05-21 20:46:07 +03:00
|
|
|
from .serializers import UserSerializer, UserRegisterSerializer
|
2023-05-18 20:25:22 +03:00
|
|
|
|
|
|
|
User = get_user_model()
|
|
|
|
|
|
|
|
|
|
|
|
class UserViewSet(RetrieveModelMixin, ListModelMixin, UpdateModelMixin, GenericViewSet):
|
|
|
|
serializer_class = UserSerializer
|
|
|
|
queryset = User.objects.all()
|
|
|
|
lookup_field = "username"
|
|
|
|
|
|
|
|
def get_queryset(self, *args, **kwargs):
|
|
|
|
assert isinstance(self.request.user.id, int)
|
|
|
|
return self.queryset.filter(id=self.request.user.id)
|
|
|
|
|
|
|
|
@action(detail=False)
|
|
|
|
def me(self, request):
|
|
|
|
serializer = UserSerializer(request.user, context={"request": request})
|
|
|
|
return Response(status=status.HTTP_200_OK, data=serializer.data)
|
2023-05-21 20:46:07 +03:00
|
|
|
|
|
|
|
|
|
|
|
class RegisterApiView(generics.CreateAPIView):
|
|
|
|
"""Creates new user and sends verification email"""
|
|
|
|
|
|
|
|
serializer_class = UserRegisterSerializer
|
|
|
|
permission_classes = [permissions.AllowAny]
|
|
|
|
|
|
|
|
@extend_schema(
|
|
|
|
operation_id="auth_user_register",
|
|
|
|
)
|
|
|
|
def post(self, request, *args, **kwargs):
|
|
|
|
return self.create(request, *args, **kwargs)
|