48 lines
1.5 KiB
Python
48 lines
1.5 KiB
Python
import rest_framework.generics
|
|
import rest_framework.permissions
|
|
import rest_framework.response
|
|
import rest_framework.viewsets
|
|
|
|
import users.models
|
|
import users.serializers
|
|
|
|
|
|
class UserViewSet(rest_framework.viewsets.ModelViewSet):
|
|
http_method_names = ("get",)
|
|
|
|
queryset = users.models.User.objects.all()
|
|
serializer_class = users.serializers.UserSerializer
|
|
permission_classes = [rest_framework.permissions.IsAuthenticated]
|
|
|
|
|
|
class RegisterView(rest_framework.generics.CreateAPIView):
|
|
http_method_names = ("post",)
|
|
serializer_class = users.serializers.UserSerializer
|
|
|
|
def post(self, request):
|
|
if users.models.User.objects.filter(
|
|
username=request.data.get("username"),
|
|
).exists():
|
|
return rest_framework.response.Response(
|
|
{
|
|
"username": [
|
|
"пользователь с таким именем уже существует.",
|
|
],
|
|
},
|
|
status=rest_framework.status.HTTP_409_CONFLICT,
|
|
)
|
|
|
|
serializer = self.get_serializer(data=request.data)
|
|
if serializer.is_valid():
|
|
serializer.save()
|
|
|
|
return rest_framework.response.Response(
|
|
serializer.data,
|
|
status=rest_framework.status.HTTP_201_CREATED,
|
|
)
|
|
|
|
return rest_framework.response.Response(
|
|
serializer.errors,
|
|
status=rest_framework.status.HTTP_400_BAD_REQUEST,
|
|
)
|