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