Esempio n. 1
0
def create_pets():
    """
    Creates a Pet
    This endpoint will create a Pet based the data in the body that is posted
    """
    app.logger.info('Request to Create a Pet...')
    data = {}
    # Check for form submission data
    if request.headers.get(
            'Content-Type') == 'application/x-www-form-urlencoded':
        app.logger.info('Getting data from form submit')
        data = {
            'name': request.form['name'],
            'category': request.form['category'],
            'available': True
        }
    else:
        check_content_type('application/json')
        app.logger.info('Getting json data from API call')
        data = request.get_json()
    app.logger.info(data)
    pet = Pet()
    pet.deserialize(data)
    pet.save()
    app.logger.info('Pet with new id [%s] saved!', pet.id)
    message = pet.serialize()
    location_url = url_for('get_pets', pet_id=pet.id, _external=True)
    return make_response(jsonify(message), status.HTTP_201_CREATED,
                         {'Location': location_url})
Esempio n. 2
0
def create_pets():
    """
    Creates a Pet

    This endpoint will create a Pet based the data in the body that is posted
    or data that is sent via an html form post.
    """
    app.logger.info('Request to create a Pet')
    data = {}
    # Check for form submission data
    if request.headers.get(
            'Content-Type') == 'application/x-www-form-urlencoded':
        app.logger.info('Processing FORM data')
        data = {
            'name': request.form['name'],
            'category': request.form['category'],
            'available': request.form['available'].lower()
            in ['true', '1', 't']
        }
    else:
        app.logger.info('Processing JSON data')
        data = request.get_json()
    pet = Pet()
    pet.deserialize(data)
    pet.save()
    message = pet.serialize()
    return make_response(
        jsonify(message), status.HTTP_201_CREATED,
        {'Location': url_for('get_pets', pet_id=pet.id, _external=True)})
Esempio n. 3
0
def create_pets():
    """
    Creates a Pet

    This endpoint will create a Pet based the data in the body that is posted
    or data that is sent via an html form post.
    """
    app.logger.info("Request to Create a pet")
    content_type = request.headers.get("Content-Type")

    if not content_type:
        abort(status.HTTP_400_BAD_REQUEST, "No Content-Type set")

    data = {}
    # Check for form submission data
    if content_type == "application/x-www-form-urlencoded":
        app.logger.info("Processing FORM data")
        app.logger.info(type(request.form))
        app.logger.info(request.form)
        data = {
            "name": request.form["name"],
            "category": request.form["category"],
            "available": request.form["available"].lower() in ["yes", "y", "true", "t", "1"],
            "gender": request.form["gender"],
        }
        app.logger.info("Available: {} = {}".format(request.form["available"], data["available"]))
    elif content_type == "application/json":
        app.logger.info("Processing JSON data")
        data = request.get_json()
    else:
        message = "Unsupported Content-Type: {}".format(content_type)
        app.logger.info(message)
        abort(status.HTTP_400_BAD_REQUEST, message)

    # Create the Pet from the data
    pet = Pet()
    pet.deserialize(data)
    pet.create()

    message = pet.serialize()
    location_url = url_for("get_pets", pet_id=pet.id, _external=True)

    app.logger.info("Pet with ID [%s] created.", pet.id)
    return jsonify(pet.serialize()), status.HTTP_201_CREATED, {"Location": location_url}
Esempio n. 4
0
 def test_serialize_a_pet(self):
     """ Serialize a Pet """
     pet = Pet(0, "fido", "dog")
     data = pet.serialize()
     self.assertNotEqual(data, None)
     self.assertIn('id', data)
     self.assertEqual(data['id'], 0)
     self.assertIn('name', data)
     self.assertEqual(data['name'], "fido")
     self.assertIn('category', data)
     self.assertEqual(data['category'], "dog")
Esempio n. 5
0
 def test_serialize_a_pet(self):
     """ Serialize a Pet """
     pet = Pet("fido", "dog", False)
     data = pet.serialize()
     self.assertNotEqual(data, None)
     self.assertNotIn('_id', data)
     self.assertIn('name', data)
     self.assertEqual(data['name'], "fido")
     self.assertIn('category', data)
     self.assertEqual(data['category'], "dog")
     self.assertIn('available', data)
     self.assertEqual(data['available'], False)
Esempio n. 6
0
 def test_serialize_a_pet(self):
     """ Test serialization of a Pet """
     pet = Pet(name="fido", category="dog", available=False)
     data = pet.serialize()
     self.assertNotEqual(data, None)
     self.assertIn("id", data)
     self.assertEqual(data["id"], None)
     self.assertIn("name", data)
     self.assertEqual(data["name"], "fido")
     self.assertIn("category", data)
     self.assertEqual(data["category"], "dog")
     self.assertIn("available", data)
     self.assertEqual(data["available"], False)
Esempio n. 7
0
 def test_serialize_a_pet(self):
     """ Test serialization of a Pet """
     pet = Pet(name="fido", category="dog", available=False)
     data = pet.serialize()
     self.assertNotEqual(data, None)
     self.assertIn('id', data)
     self.assertEqual(data['id'], None)
     self.assertIn('name', data)
     self.assertEqual(data['name'], "fido")
     self.assertIn('category', data)
     self.assertEqual(data['category'], "dog")
     self.assertIn('available', data)
     self.assertEqual(data['available'], False)
Esempio n. 8
0
def create_pets():
    """
    Creates a Pet
    This endpoint will create a Pet based the data in the body that is posted
    """
    app.logger.info("Request to create a pet")
    check_content_type("application/json")
    pet = Pet()
    pet.deserialize(request.get_json())
    pet.create()
    message = pet.serialize()
    location_url = url_for("get_pets", pet_id=pet.id, _external=True)
    return make_response(jsonify(message), status.HTTP_201_CREATED,
                         {"Location": location_url})
 def post(self):
     """
     Creates a Pet
     This endpoint will create a Pet based the data in the body that is posted
     """
     app.logger.info('Request to Create a Pet')
     pet = Pet()
     app.logger.debug('Payload = %s', api.payload)
     pet.deserialize(api.payload)
     pet.create()
     app.logger.info('Pet with new id [%s] saved!', pet.id)
     location_url = api.url_for(PetResource, pet_id=pet.id, _external=True)
     return pet.serialize(), status.HTTP_201_CREATED, {
         'Location': location_url
     }
Esempio n. 10
0
    def post(self):
        """
        Creates a Pet

        This endpoint will create a Pet based the data in the body that is posted
        or data that is sent via an html form post.
        """
        app.logger.info('Request to Create a Pet')
        content_type = request.headers.get('Content-Type')
        if not content_type:
            abort(status.HTTP_400_BAD_REQUEST, "No Content-Type set")

        data = {}
        # Check for form submission data
        if content_type == 'application/x-www-form-urlencoded':
            app.logger.info('Processing FORM data')
            app.logger.info(type(request.form))
            app.logger.info(request.form)
            data = {
                'name':
                request.form['name'],
                'category':
                request.form['category'],
                'available':
                request.form['available'].lower()
                in ['yes', 'y', 'true', 't', '1']
            }
        elif content_type == 'application/json':
            app.logger.info('Processing JSON data')
            data = request.get_json()
        else:
            message = 'Unsupported Content-Type: {}'.format(content_type)
            app.logger.info(message)
            abort(status.HTTP_400_BAD_REQUEST, message)

        pet = Pet()
        try:
            pet.deserialize(data)
        except DataValidationError as error:
            raise BadRequest(str(error))
        pet.save()
        app.logger.info('Pet with new id [%s] saved!', pet.id)
        location_url = api.url_for(PetResource, pet_id=pet.id, _external=True)
        return pet.serialize(), status.HTTP_201_CREATED, {
            'Location': location_url
        }