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})
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)})
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)
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")
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)
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"]))
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 }
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)
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 }
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}
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)