Пример #1
0
 def post(self, request):
     """
     Function is used to create new object or value in table and return status.
     :param request: request header with user info for creating new object.
     :return: user info
     """
     serializer = UserSerializer(data=request.data)
     if serializer.is_valid():
         serializer.save()
         context = {
             'username': serializer.data['username'],
             'site_url': constants.SITE_URL + constants.LOGIN
         }
         # render email html
         email_html_message = render_to_string(
             'email_templates/register_success.html', context)
         utils.send_email(subject="WELCOME!",
                          recipient=[serializer.data['email']],
                          body=email_html_message)
         api_response = ApiResponse(status=1,
                                    data=serializer.data,
                                    message=constants.CREATE_USER_SUCCESS,
                                    http_status=status.HTTP_201_CREATED)
         return api_response.create_response()
     api_response = ApiResponse(status=0,
                                message=get_error_message(serializer),
                                http_status=status.HTTP_400_BAD_REQUEST)
     return api_response.create_response()
Пример #2
0
def create(request):
    data = JSONParser().parse(request)
    serializer = UserSerializer(data=data)
    if serializer.is_valid():
        serializer.save()
        return JsonResponse(serializer.data, status=201)
    return JsonResponse(serializer.errors, status=400)
Пример #3
0
def user_detail(request, name):
    if name:
        name = name.lower()
    try:
        user = None
        user = User.objects.get(name__iexact=name)
    except User.DoesNotExist:
        if request.method == 'GET':
            return HttpResponse(status=status.HTTP_404_NOT_FOUND)

    if request.method == 'GET':
        user_serializer = UserSerializer(user)
        return JSONResponse(user_serializer.data)

    elif request.method == 'PUT':
        user_data = JSONParser().parse(request)
        if not user:
            user = User(name=name, dob=user_data['dob'])
            user.save()

        user_serializer = UserSerializer(user, data=user_data, partial=True)
        if user_serializer.is_valid():
            user_serializer.save()
            return HttpResponse(status=status.HTTP_201_CREATED)
        return JSONResponse(user_serializer.errors,
                            status=status.HTTP_400_BAD_REQUEST)

    elif request.method == 'DELETE':
        user.delete()
        return HttpResponse(status=status.HTTP_204_NO_CONTENT)
Пример #4
0
 def create(self, request):
     serializer = UserSerializer(data=request.data)
     if serializer.is_valid():
         serializer.save()
         return Response(serializer.data, status=status.HTTP_201_CREATED)
     else:
         return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Пример #5
0
 def update(self, request, partial=False, pk=None):
     print(partial)
     user = self.get_object()
     serializer = UserSerializer(user, request.data, partial=partial)
     serializer.is_valid(raise_exception=True)
     serializer.save()
     return Response(serializer.data)
Пример #6
0
 def put(self, request, user_id):
     user = self.get_object(user_id)
     serializer = UserSerializer(user, data=request.data)
     if serializer.is_valid():
         serializer.save()
         return Response(serializer.data, status=status.HTTP_200_OK)
     return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Пример #7
0
 def update(self, request, pk=None):
     queryset = models.User.objects.all()
     user = get_object_or_404(queryset, pk=pk)
     serializer = UserSerializer(user, data=request.data, partial=True)
     serializer.is_valid(raise_exception=True)
     serializer.save()
     return Response(serializer.data)
Пример #8
0
 def post(self, request):
     user_serializer = UserSerializer(data=request.data)
     if user_serializer.is_valid():
         user_serializer.save()
         return Response(user_serializer.data)
     return Response(user_serializer.errors,
                     status=status.HTTP_400_BAD_REQUEST)
Пример #9
0
def user_detail(request, pk):
    try:
        usr_id = int(pk)
        user = get_object_or_None(authUser, id=usr_id)
    except ValueError:
        user = get_object_or_None(authUser, username=pk)
    if user is None:
        return JSONError(message="User is not found",
                         code=404,
                         status=status.HTTP_404_NOT_FOUND)

    if request.method == 'GET':
        user_serializer = UserSerializer(user)
        return JSONResponse(user_serializer.data)
    elif request.method == 'PUT':
        user_data = JSONParser().parse(request)
        if ('username' in user_data):
            if not isinstance(user_data['username'], (str, unicode)):
                return JSONError(message="'username' value is not a String",
                                 code=400,
                                 status=status.HTTP_400_BAD_REQUEST)

        user_serializer = UserSerializer(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)
    elif request.method == 'DELETE':
        user.delete()
        return HttpResponse(status=status.HTTP_204_NO_CONTENT)
Пример #10
0
    def post(self, request, format=None):
        serializer = UserSerializer(data=request.data)

        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Пример #11
0
    def put(self, request, format=None):
        my_profile = request.user.get_profile()

        # User should be able to edit first_name, last_name, email here
        # TODO: Make sure this is safe as we are making two calls to serialize the request
        user_serializer = UserSerializer(
            request.user,
            data=request.DATA,
            partial=True
        )

        if not user_serializer.is_valid():
            return errors.New400BadRequest(user_serializer.errors)
        user_serializer.save()

        serializer = ProfileSerializer(
            my_profile,
            data=request.DATA,
            partial=True
        )
        print serializer.errors
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data, status=status.HTTP_200_OK)
        return errors.New400BadRequest(serializer.errors)
Пример #12
0
def user_list(request):
    if request.method == 'POST':
        serializer = UserSerializer(data=request.data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data, status=status.HTTP_201_CREATED)
    return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Пример #13
0
 def put(self, request):
     """
     Function is used for modify the password
     :param request: request header with required info.
     :return: user info or proper error message
     """
     user = request.user
     if user:
         data = {"password": request.data['password']}
         serializer = UserSerializer(user, data=data, partial=True)
         if serializer.is_valid():
             serializer.save()
             api_response = ApiResponse(
                 status=1,
                 data=serializer.data,
                 message=constants.CHANGE_PASSWORD_SUCCESS,
                 http_status=status.HTTP_201_CREATED)
             return api_response.create_response()
         api_response = ApiResponse(status=0,
                                    message=get_error_message(serializer),
                                    http_status=status.HTTP_400_BAD_REQUEST)
         return api_response.create_response()
     api_response = ApiResponse(status=0,
                                message=constants.USER_DOES_NOT_EXIST,
                                http_status=status.HTTP_404_NOT_FOUND)
     return api_response.create_response()
Пример #14
0
    def post(self, request, *args, **kwargs):
        if not request.user.is_authenticated:
            return JsonResponse({'Status': False, 'Error': 'Log in required'}, status=403)
        # проверяем обязательные аргументы

        if 'password' in request.data:
            errors = {}
            # проверяем пароль на сложность
            try:
                validate_password(request.data['password'])
            except Exception as password_error:
                error_array = []
                # noinspection PyTypeChecker
                for item in password_error:
                    error_array.append(item)
                return JsonResponse({'Status': False, 'Errors': {'password': error_array}})
            else:
                request.user.set_password(request.data['password'])

        # проверяем остальные данные
        user_serializer = UserSerializer(request.user, data=request.data, partial=True)
        if user_serializer.is_valid():
            user_serializer.save()
            return JsonResponse({'Status': True})
        else:
            return JsonResponse({'Status': False, 'Errors': user_serializer.errors})
Пример #15
0
 def post(self, request):
     data = request.data
     serializer = UserSerializer(data=data)
     if serializer.is_valid():
         serializer.save()
         return Response(serializer.data, status=status.HTTP_200_OK)
     return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Пример #16
0
def user_detail(request, pk):

    try:
        user = User.objects.get(pk=pk)
    except User.DoesNotExist:
        return HttpResponse(status=404)

    if request.method == 'GET':
        serializer = UserSerializer(user)
        return JsonResponse(serializer.data)

    elif request.method == 'PATCH':
        data = JSONParser().parse(request)
        serializer = UserSerializer(user, data=data, partial=True)
        if serializer.is_valid():
            serializer.save()
            return JsonResponse(serializer.data)
        return JsonResponse(serializer.errors, status=400)

    elif request.method == 'PUT':
        data = JSONParser().parse(request)
        serializer = UserSerializer(user, data=data)
        if serializer.is_valid():
            serializer.save()
            return JsonResponse(serializer.data)
        return JsonResponse(serializer.errors, status=400)

    elif request.method == 'DELETE':
        user.delete()
        return HttpResponse(status=204)
Пример #17
0
 def put(self, request, userid):
     user = self.get_user(userid)
     serializer = UserSerializer(user, data=request.data)
     if serializer.is_valid():
         serializer.save()
         return Response(status=status.HTTP_200_OK)
     return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Пример #18
0
 def put(self, request, pk, format=None):
      user = self.get_object(pk)
      serializer = UserSerializer(user, data=request.DATA)
      if serializer.is_valid():
          serializer.save()
          return Response(serializer.data)
      return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Пример #19
0
    def post(request):
        output = {}
        try:
            user = request.data

            # check user with clearbit
            # response = clearbit.Enrichment.find(email=user['email'], stream=True)
            # if response:
            #     #Make some action with received data
            #     pass

            serializer = UserSerializer(data=user)
            serializer.is_valid(raise_exception=True)
            serializer.save()
            output['answer'] = serializer.data
        except ValidationError as exception:
            output['answer'] = {
                "error": {
                    "status_code": str(exception.status_code),
                    "status_details": str(exception.default_detail),
                    "status_message": exception.get_full_details()
                }
            }

        return Response({"response": output}, status=status.HTTP_201_CREATED)
Пример #20
0
 def put(self, request, *args, **kwargs):
     request.data["id"] = request.user.id
     user = User.objects.get(id=request.user.id)
     serializer = UserSerializer(user, data=request.data)
     serializer.is_valid(raise_exception=True)
     serializer.save()
     return Response(serializer.data)
Пример #21
0
    def post(self, request):
        try:
            user = request.data.copy()
            logger.info("Creating new user %s", str(user))

            user['username'] = user['email'].split('@')[0]
            user['password'] = encode(user['password'])

            serializer = UserSerializer(data=user)
            serializer.is_valid(raise_exception=True)
            serializer.save()

            logger.info("New user creation was successful, welcome: %s" %
                        user['username'])
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        except ValidationError as e:
            msg = "Registration failed: "
            for detail in e.detail.values():
                msg += detail[0] + " "
            logger.exception("Registration failed")
            logger.error(msg)
            return get_error_response(msg)
        except Exception as e:
            logger.error("Registration failed because %s" % str(e), e)
            res = {'error': e}
            return Response(res)
Пример #22
0
 def post(request):
     serializer = UserSerializer(data=request.data,
                                 context={'request': request})
     if serializer.is_valid():
         serializer.save()
         return Response(serializer.data, status=status.HTTP_201_CREATED)
     return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Пример #23
0
def saveuser(request):
    serialized = UserSerializer(data=request.data)
    if serialized.is_valid():
        serialized.save()
        return render(request, 'questionscore/login.html')
    else:
        return render(request, 'questionscore/createuser.html')
Пример #24
0
 def put(self, request, pk):
     """
     Function is used for modify user info
     :param request: request header with required info.
     :param pk: primary key of a object.
     :return: user info or send proper error status
     """
     try:
         user = User.objects.get(id=pk)
     except User.DoesNotExist as e:
         logger.exception(e)
         api_response = ApiResponse(status=0,
                                    message=constants.USER_DOES_NOT_EXIST,
                                    http_status=status.HTTP_404_NOT_FOUND)
         return api_response.create_response()
     serializer = UserSerializer(user, data=request.data, partial=True)
     if serializer.is_valid():
         serializer.save()
         api_response = ApiResponse(status=1,
                                    data=serializer.data,
                                    message=constants.UPDATE_USER_SUCCESS,
                                    http_status=status.HTTP_201_CREATED)
         return api_response.create_response()
     api_response = ApiResponse(status=0,
                                message=get_error_message(serializer),
                                http_status=status.HTTP_400_BAD_REQUEST)
     return api_response.create_response()
Пример #25
0
 def post(self, request):
     serializer = UserSerializer(data=request.data) #en rest framework los datos que se envían están en data, y no en POST
     if serializer.is_valid():
         serializer.save()
         return Response(serializer.data, status=HTTP_201_CREATED)
     else:
         return Response(serializer.errors, status=HTTP_400_BAD_REQUEST)
Пример #26
0
    def post(self, request, format=None):
        request_data = request.data
        client_data = request_data["client"]
        try:
            client = Client.objects.get(user__email=client_data["user"]["email"])
            user_serializer = UserSerializer(client.user, data=client_data["user"])
        except Client.DoesNotExist:
            client = None
            user_serializer = UserSerializer(data=client_data["user"])
        # Update information for user.
        if user_serializer.is_valid():
            user_serializer.save()
        else: 
            return Response(user_serializer.errors)
        del client_data["user"]
        client_data["user_id"] = user_serializer.instance.id
        # Update information for client.
        if client:
            serializer = ClientSerializer(client, data=client_data)
        else:
            serializer = ClientSerializer(data=client_data)

        if serializer.is_valid():
            serializer.save()
            # Add this client to the provision table.
            users_db_utils.add_to_client_provision(
                serializer.instance.id)
            return Response(serializer.data,
                status=status.HTTP_201_CREATED)
        return Response(serializer.errors)
Пример #27
0
    def registration(self, request, *args, **kwargs):
        serializer = UserSerializer(data=request.data)
        if serializer.is_valid(raise_exception=True):
            serializer.save()
            return Response(status=HTTP_201_CREATED)

        return Response(serializer.errors, status=HTTP_400_BAD_REQUEST)
Пример #28
0
 def put(self, request):
     user = User.objects.get(email=request.user)
     serializer = UserSerializer(user, data=request.data, partial=True)
     if serializer.is_valid():
         serializer.save()
         return Response(serializer.data)
     return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Пример #29
0
 def update(self, request):
     user = request.user
     serializer = UserSerializer(user, data=request.data)
     if serializer.is_valid():
         serializer.save()
         return Response(serializer.data, status=status.HTTP_200_OK)
     else:
         return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Пример #30
0
 def put(self, request, pk):
     user = get_object_or_404(User, pk=pk)
     serializer = UserSerializer(instance=user, data=request.data)
     if serializer.is_valid():
         serializer.save()
         return Response(serializer.data, status=status.HTTP_200_OK)
     else:
         return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Пример #31
0
 def set_password(self, request):
     serialized = UserSerializer(data=request.DATA)
     if serialized.is_valid():
         serialized.save()
         return Response(status=status.HTTP_205_RESET_CONTENT)
     else:
         return Response(serialized.errors,
                         status=status.HTTP_400_BAD_REQUEST)
Пример #32
0
def register(request):
    data = JSONParser().parse(request)
    serializer = UserSerializer(data=data)

    if serializer.is_valid():
        serializer.save()
        return Response(serializer.data, status=201)
    return Response({"Registration": serializer.errors}, status=400)
Пример #33
0
 def put(self, request):
     user = self.get_user(self)
     serializer = UserSerializer(user, data=request.data, partial=True)
     if serializer.is_valid():
         serializer.save()
         return Response({"Status 201": "User updated successfully"},
                         status=status.HTTP_201_CREATED)
     return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Пример #34
0
 def update(self, request, pk):
     user = get_object_or_404(User, pk=pk)
     self.check_object_permissions(request, user) # compruebo si el usuario autenticado puede hacer PUT en este user
     serializer = UserSerializer(instance=user, data=request.data)
     if serializer.is_valid():
         serializer.save()
         return Response(serializer.data, status=status.HTTP_200_OK)
     else:
         return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Пример #35
0
 def update(self, req, pk):
     user = get_object_or_404(User, pk=pk)
     self.check_object_permissions(req, user)  # permisos a mano
     serializer = UserSerializer(instance=user, data=req.data)
     if serializer.is_valid():
         serializer.save()
         return Response(serializer.data, status=status.HTTP_200_OK)
     else:
         return Response(serializer.errors, status=status.HTTP_404_NOT_FOUND)
Пример #36
0
 def put(self, request, pk):
     user = get_object_or_404(User, pk=pk)
     self.check_object_permissions(request, user)
     serializer = UserSerializer(User, request.data)
     if serializer.is_valid():
         serializer.save()
         return Response(serializer.data, status=status.HTTP_200_OK)
     else:
         return Response(serializer.data, status=status.HTTP_400_BAD_REQUEST)
Пример #37
0
 def put(self, request, pk):
     user = get_object_or_404(User, pk=pk)
     self.check_object_permissions(request, user)  # llama a has_object_permission
     serializer = UserSerializer(user, data=request.data)
     if serializer.is_valid():
         serializer.save()
         return Response(serializer.data, status=HTTP_202_ACCEPTED)
     else:
         return Response(serializer.errors, status=HTTP_400_BAD_REQUEST)
Пример #38
0
 def update(self, request, pk):
     user = get_object_or_404(User, pk=pk)
     # Paso al serializados que instancia y con que la tiene que actualizar.
     serializer = UserSerializer(instance=user, data=request.data)
     if serializer.is_valid():
         serializer.save()
         return Response(serializer.data, status=status.HTTP_200_OK)
     else:
         return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Пример #39
0
 def update(self, request, pk):
     self.check_permissions(request)
     user = get_object_or_404(User, pk=pk)
     self.check_object_permissions(request, user)
     serializer = UserSerializer(instance=user, data=request.data) #Serializa este usuario con data datos
     if serializer.is_valid():
         serializer.save()
         return Response(serializer.data, status=status.HTTP_200_OK)
     else:
         return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Пример #40
0
 def put(self, request, pk):
     user = get_object_or_404(User, pk=pk)
     if request.user.is_superuser or request.user.username == user.username:
         serializer = UserSerializer(instance=user, data=request.data)
         if serializer.is_valid():
             serializer.save()
             return Response(serializer.data, status=status.HTTP_200_OK)
         else:
             return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
     else:
         return Response(status=status.HTTP_401_UNAUTHORIZED)
Пример #41
0
    def put(self, request, pk):
        user = get_object_or_404(User, pk=pk) # devuelve el objeto o, si este no existe, un error 404

        # compruebo si el usuario autenticado puede hacer PUT en este user
        # Hay que hacerlo a mano porque estamos heredando de una GenericAPIView
        # Al hacer la recuperación del objeto 'user' manualmente, la comprobacion tambien debe ser manual
        self.check_object_permissions(request, user)

        serializer = UserSerializer(instance=user, data=request.data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data, status=status.HTTP_200_OK)
        else:
            return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Пример #42
0
 def create(self, req):
     serializer = UserSerializer(data=req.data, context={'request': req})
     if serializer.is_valid():
         new_user = serializer.save()
         return Response(serializer.data, status=status.HTTP_201_CREATED)
     else:
         return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
    def put(self, request, pk):
        """
        Endpoint de modificación de usuario. Por convención, se utiliza la url de listado con una petición PUT para la modificación de un objeto de ese listado. En el serializer.save() comprueba automáticamente si tiene instancia del User; si la tiene, coge esa instancia y llama al update() del serializer; si no la tiene, llama al método create() del serializer, como en el caso del POST del UserListAPI
        """
        user = get_object_or_404(User, pk=pk)

        # compruebo manualmente si el usuario autenticado puede hacer PUT en este user
        self.check_object_permissions(request, user)

        # Actualiza los datos de la instancia recuperada con los datos que me pasan por la API
        serializer = UserSerializer(instance=user, data=request.data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data, status=status.HTTP_200_OK)
        else:
            return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Пример #44
0
 def post(self, request):
     serializer = UserSerializer(data=request.data)
     if serializer.is_valid():
         new_user = serializer.save()
         return Response(serializer.data, status=status.HTTP_201_CREATED)
     else:
         return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Пример #45
0
 def create(self, request):
     serializer = UserSerializer(data=request.data)
     if serializer.is_valid():
         new_user = serializer.save()
         send_mail(u"Bienvenido!", u"Bienvenido a Frikr!", "*****@*****.**", [new_user.email], fail_silently=True)
         return Response(serializer.data, status=status.HTTP_201_CREATED)
     else:
         return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Пример #46
0
 def create(self, request):
     serializer = UserSerializer(data=request.data)
     if serializer.is_valid():
         new_user = serializer.save()
         # Devolvemos los datos después de crear el recurso, es como un acuse de recibo.
         # no todas las apis devuelven los datos.
         return Response(serializer.data, status=status.HTTP_201_CREATED)
     else:
         return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Пример #47
0
 def post(self, request):
     serializer = UserSerializer(data=request.data)
     if serializer.is_valid():
         new_user = serializer.save()
         blog = Blog()
         blog.title = request.data.get("blog")
         blog.owner = new_user
         blog.save()
         return Response(serializer.data, status=status.HTTP_201_CREATED)
     else:
         return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Пример #48
0
 def post(self, request):
     serializer = UserSerializer(data=request.data) # se inicializa el serializer con los datos que me llegan por http mediante POST
     if serializer.is_valid():
         new_user = serializer.save() # Guarda el objeto en BB.DD. y me lo devuelve
         new_blog = Blog()
         new_blog.name = 'El blog de {0} {1}'.format(request.data.get('first_name'), request.data.get('last_name'))
         new_blog.author = new_user
         new_blog.save()
         # serializer almacena los datos en 'serializer.data'
         return Response(serializer.data, status=status.HTTP_201_CREATED)
     else:
         # serializer almacena los errores en 'serializer.errors'
         return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Пример #49
0
def user_list(request):
    """
    List all users, or create a new user.
    """
    if request.method == 'GET':
        username = str(request.GET.get('username', ''))

        if username == '':
            users = User.objects.all()
            serializer = UserSerializer(users, many=True)
            return Response(serializer.data)
        else:
            user = User.objects.get(username=username)
            serializer = UserSerializer(user, many=False)
            return Response(serializer.data)

    elif request.method == 'POST':
        serializer = UserSerializer(data=request.DATA)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
    def create(self, request):
        serializer = UserSerializer(data=request.data) #TODOS LOS MÉTODOS REST VIENEN POR EL PARAMETRO 'DATA' DE LA REQUEST
        if serializer.is_valid():
            new_user = serializer.save()

            # TODO - crear el usuario y su blog en una sóla llamada
            blog_for_newUser = Blog()
            blog_for_newUser.owner = new_user
            blog_for_newUser.name = new_user.first_name + ' ' + new_user.last_name + '\'s Personal Blog'
            blog_for_newUser.save()

            return Response(serializer.data, status=status.HTTP_201_CREATED)
        else:
            return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Пример #51
0
    def put(self, request, username, format=None):
        data = UserAccountSerializer(data=request.data).data

        user = User.objects.get(username=username)
        user_serializer = UserSerializer(user,
                                         data=data['user'])

        if user_serializer.is_valid():
            user_serializer.save()

            account = self.get_object(username)
            account.school = data.get('school')
            account.class_in_school = data.get('class_in_school')
            # client should put facebook_id to enable this
            # account.facebook_id = data.get('facebook_id')
            account.save()

            update_session_auth_hash(request, user)

            return Response(UserAccountSerializer(account).data)

        return Response(user_serializer.errors,
                        status=status.HTTP_400_BAD_REQUEST)
Пример #52
0
def user_detail(request, pk):
    """
    Retrieve, update or delete a user instance.
    """
    try:
        user = User.objects.get(pk=pk)
    except User.DoesNotExist:
        return Response(status=status.HTTP_404_NOT_FOUND)

    if request.method == 'GET':
        serializer = UserSerializer(user)
        return Response(serializer.data)

    elif request.method == 'PUT':
        serializer = UserSerializer(user, data=request.DATA)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

    elif request.method == 'DELETE':
        user.delete()
        return Response(status=status.HTTP_204_NO_CONTENT)
Пример #53
0
    def put(self, request, username, format=None):
        serializer = UserAccountSerializer(data=request.data)

        if serializer.is_valid() is False:
            return Response(
                {"message": "Cannnot update profile with provided information"}, status=status.HTTP_400_BAD_REQUEST
            )

        data = serializer.validated_data

        password = data["user"].get("password")
        confirm_password = data["user"].get("confirm_password")

        if password != confirm_password:
            return Response(
                {"message": "Password and confirm password don't match"}, status=status.HTTP_400_BAD_REQUEST
            )

        user = User.objects.get(username=username)
        user_serializer = UserSerializer(user, data=data["user"])

        if user_serializer.is_valid():
            user_serializer.save()

            account = self.get_object(username)
            account.school = data.get("school")
            account.class_in_school = data.get("class_in_school")
            # client should put facebook_id to enable this
            # account.facebook_id = data.get('facebook_id')
            account.save()

            update_session_auth_hash(request, user)

            return Response(UserAccountSerializer(account).data)

        return Response(user_serializer.errors, status=status.HTTP_400_BAD_REQUEST)
    def create(self, request):
        """
        Endpoint de creación de usuario. Guardamos automáticamente también el blog con su nombre de usuario
        :param request:
        :return:
        """
        # Creamos serializador a partir de los datos de la petición. En rest framwork, para evitar request.POST,
        # request.GET, etc., se utiliza simplemente data
        serializer = UserSerializer(data=request.data)
        if serializer.is_valid():
            new_user = serializer.save()

            # Guardamos blog para el nuevo usuario
            user_blog = Blog()
            user_blog.owner = new_user
            user_blog.save()

            return Response(serializer.data, status=status.HTTP_201_CREATED)
        else:
            return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
    def post(self, request):
        """
        Endpoint de creación de usuario. Por convención, se utiliza la url de listado con una petición POST para la creación de un objeto de ese listado. En el serializer.save() comprueba automáticamente si tiene instasncia del User; si no la tiene, llama al método create del serializer.
        """

        # Creamos serializador a partir de los datos de la petición. En rest framwork, para evitar request.POST,
        # request.GET, etc., se utiliza simplemente data
        serializer = UserSerializer(data=request.data)
        if serializer.is_valid():
            # Guardamos el usuario a través del serializer y devolvemos los datos del objeto creado
            new_user = serializer.save()

            # Guardamos blog para el nuevo usuario
            user_blog = Blog()
            user_blog.owner = new_user
            user_blog.save()

            # Respondemos código 201 (creado) y los datos del objeto creado
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        else:
            # Devolvemos diccionario con errores y el código 400 (petición errónea) si algo fue mal
            return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Пример #56
0
 def post(self, request, format=None):
     ser = UserSerializer(request.DATA)
     if ser.is_valid():
         ser.save()
         return Response(ser.data)
     return Response(ser.errors)
    def _handle_put(self, request, *args, **kwargs):
        """
        PUT handler for User Detail

        :request - HTTP request from the api call

        Here is how you change the user:
        {
            "username": "******",                  OPTIONAL
            "first_name": "Roberto",            OPTIONAL
            "last_name": "Garrison III",        OPTIONAL
            "email": "*****@*****.**"     OPTIONAL
        }

        if you want to change the password pass in the following json fields:
        {
            "username": "******",                  OPTIONAL
            "first_name": "Roberto",            OPTIONAL
            "last_name": "Garrison III",        OPTIONAL
            "email": "*****@*****.**",    OPTIONAL
            "password_1": "myPa55W0rd!",        REQUIRED
            "password_2": "myPa55W0rd!"         REQUIRED
        }

        Kwargs
        :pk - PK of the user that you want to get detail on
        """
        user = self.get_object(kwargs.get('pk'))
        response = {}

        put_data = request.DATA
        errors = False

        if put_data.get('username', None) is not None:
            if user.username != put_data.get('username') and User.objects.filter(username=put_data.get('username')).count() > 0:
                response['username'] = [
                    'Username "{0}" is currently taken, please try another.'.format(
                        put_data.get('username')),
                ]
                errors = True

        if put_data.get('email', None) is not None:
            if user.email != put_data.get('email') and User.objects.filter(email=put_data.get('email')).count() > 0:
                response['email'] = [
                    'Email "{0}" is currently in use, please try another.'.format(
                        put_data.get('email')),
                ]
                errors = True

        if put_data.get('password_1', None) is not None and put_data.get('password_2', None) is not None:
            if put_data.get('password_1') == put_data.get('password_2'):
                # update the password
                user.set_password(put_data.get('password_1'))
            else:
                response['password_1'] = [
                    'Password\'s don\'t match please try again!',
                ]
                response['password_2'] = [
                    'Password\'s don\'t match please try again!',
                ]
                errors = True

        if errors:
            self.raise_bad_request(response)

        serializer = UserSerializer(user, data=put_data)

        if serializer.is_valid():
            serializer.save()

            return serializer.data

        return self.raise_bad_request(serializer.errors)