Exemplo 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})
Exemplo 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)})
Exemplo n.º 3
0
 def test_deserialize_lower_case_gender(self):
     """Test deserialization with lower case gender"""
     test_pet = PetFactory()
     data = test_pet.serialize()
     data["gender"] = "male"  # lower case
     pet = Pet()
     pet.deserialize(data)
     self.assertEqual(pet.gender, Gender.MALE)
Exemplo n.º 4
0
 def test_deserialize_a_pet(self):
     """ Deserialize a Pet """
     data = {"id":1, "name": "kitty", "category": "cat", "available": True}
     pet = Pet(data['id'])
     pet.deserialize(data)
     self.assertNotEqual(pet, None)
     self.assertEqual(pet.id, 1)
     self.assertEqual(pet.name, "kitty")
     self.assertEqual(pet.category, "cat")
Exemplo n.º 5
0
 def test_deserialize_a_pet(self):
     """ Test deserialization of a Pet """
     data = {"id": 1, "name": "kitty", "category": "cat", "available": True}
     pet = Pet()
     pet.deserialize(data)
     self.assertNotEqual(pet, None)
     self.assertEqual(pet.id, None)
     self.assertEqual(pet.name, "kitty")
     self.assertEqual(pet.category, "cat")
     self.assertEqual(pet.available, True)
Exemplo n.º 6
0
 def test_deserialize_a_pet(self):
     """It should de-serialize a Pet"""
     data = PetFactory().serialize()
     pet = Pet()
     pet.deserialize(data)
     self.assertNotEqual(pet, None)
     self.assertEqual(pet.id, None)
     self.assertEqual(pet.name, data["name"])
     self.assertEqual(pet.category, data["category"])
     self.assertEqual(pet.available, data["available"])
     self.assertEqual(pet.gender.name, data["gender"])
     self.assertEqual(pet.birthday, date.fromisoformat(data["birthday"]))
Exemplo n.º 7
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})
Exemplo n.º 8
0
 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
     }
Exemplo n.º 9
0
 def test_deserialize_a_pet(self):
     """Test deserialization of a Pet"""
     data = {
         "name": "Kitty",
         "category": "cat",
         "available": True,
         "gender": "FEMALE",
     }
     pet = Pet()
     pet.deserialize(data)
     self.assertNotEqual(pet, None)
     self.assertEqual(pet.id, None)
     self.assertEqual(pet.name, "Kitty")
     self.assertEqual(pet.category, "cat")
     self.assertEqual(pet.available, True)
     self.assertEqual(pet.gender, Gender.FEMALE)
 def test_deserialize_a_pet(self):
     """ Deserialize a Pet """
     data = {
         "name": "kitty",
         "category": "cat",
         "available": True,
         "gender": Gender.Female.name
     }
     pet = Pet()
     pet.deserialize(data)
     self.assertNotEqual(pet, None)
     self.assertEqual(pet.id, None)
     self.assertEqual(pet.name, "kitty")
     self.assertEqual(pet.category, "cat")
     self.assertEqual(pet.available, True)
     self.assertEqual(pet.gender, Gender.Female)
Exemplo n.º 11
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
        }
Exemplo n.º 12
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}
Exemplo n.º 13
0
 def test_deserialize_with_no_gender(self):
     """Deserialize a Pet with no gender data"""
     data = {"name": "fido", "category": "dog", "available": True}
     pet = Pet()
     pet.deserialize(data)
     self.assertEqual(pet.gender, Gender.UNKNOWN)