def patch(self, request):
     profile = self.get_object(pk=request.user.id)
     serializer = CustomUserSerializer(profile, request.data, partial=True)
     if serializer.is_valid():
         serializer.save()
         return Response(serializer.data, status.HTTP_200_OK)
     return Response(serializer.errors, status.HTTP_400_BAD_REQUEST)
Example #2
0
def user_detail(request, pk):
    try:
        user = CustomUser.objects.get(pk=pk)

        # find a single user with an id
        if request.method == 'GET':
            user_serializer = CustomUserSerializer(user)
            return JsonResponse(user_serializer.data)

        # update a user by the id in the request
        elif request.method == 'PUT':
            user_data = JSONParser().parse(request)
            user_serializer = CustomUserSerializer(user, data=user_data)

            if user_serializer.is_valid():
                user_serializer.save()
                return JsonResponse(user_serializer.data)

            return JsonResponse(user_serializer.errors, status=status.HTTP_400_BAD_REQUEST)

        # delete a user with the specified id
        elif request.method == 'DELETE':
            user.delete()
            return JsonResponse({'message': 'User was deleted successfully!'}, status=status.HTTP_204_NO_CONTENT)

    except CustomUser.DoesNotExist:
        return JsonResponse({'message': 'The user does not exist'}, status=status.HTTP_404_NOT_FOUND)
Example #3
0
def user_list(request):
    # retrieve all users/find by username from MongoDB database
    if request.method == 'GET':
        users = CustomUser.objects.all()
        username = request.GET.get('username', None)

        if username is not None:
            users = users.filter(username__icontains=username)

        users_serializer = CustomUserSerializer(users, many=True)

        # safe = False for objects serialization
        return JsonResponse(users_serializer.data, safe=False)

    # create and save a new user
    elif request.method == 'POST':
        user_data = JSONParser().parse(request)
        user_serializer = CustomUserSerializer(data=user_data)

        if user_serializer.is_valid():
            user_serializer.save()
            return JsonResponse(user_serializer.data, status=status.HTTP_201_CREATED)

        return JsonResponse(user_serializer.errors, status=status.HTTP_400_BAD_REQUEST)

    # delete all users from the database
    elif request.method == 'DELETE':
        count = CustomUser.objects.all().delete()

        return JsonResponse({'message': '{} User were deleted successfully!'.format(count[0])}, status=status.HTTP_204_NO_CONTENT)
Example #4
0
    def test_creates_a_user(self):
        data = {"email": "*****@*****.**", "password": "******"}

        user_count = len(get_user_model().objects.exclude(email=settings.ANONYMOUS_USER_NAME))
        self.assertEqual(user_count, 0)

        serializer = CustomUserSerializer(data=data)
        self.assertTrue(serializer.is_valid())
        serializer.save()

        user_count = len(get_user_model().objects.exclude(email=settings.ANONYMOUS_USER_NAME))
        self.assertEqual(user_count, 1)

        user = get_user_model().objects.exclude(email=settings.ANONYMOUS_USER_NAME).first()
        self.assertEqual("*****@*****.**", user.email)
Example #5
0
 def post(self, request, format='json'):
     serializer = CustomUserSerializer(data=request.data)
     if serializer.is_valid():
         user = serializer.save()
         if user:
             json = serializer.data
             return Response(json, status=status.HTTP_201_CREATED)
     return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Example #6
0
def user_register(request):
    with transaction.atomic():
        serializer = CustomUserSerializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        user = serializer.save()

        Account.generate(user)

        return Response(status=status.HTTP_201_CREATED)
Example #7
0
    def post(self, request, format='json'):
        serializer = CustomUserSerializer(data=request.data)
        if serializer.is_valid():
            try:
                user = serializer.save()
            except Exception as e:
                if 'username' in str(e):
                    msg = 'username already taken'
                elif 'email' in str(e):
                    msg = 'email already taken'

                return Response({"msg": str(msg)},
                                status=status.HTTP_400_BAD_REQUEST)

            if user:
                json = serializer.data
                return Response(json, status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)