def create_pets(): """ Creates a Pet This endpoint will create a Pet based the data in the body that is posted """ 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: app.logger.info('Getting data from API call') data = request.get_json() app.logger.info(data) pet = Pet() pet.deserialize(data) pet.save() 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 test_key_error_on_update(self, bad_mock): """ Test KeyError on update """ bad_mock.side_effect = KeyError() pet = Pet("fido", "dog", False) pet.save() pet.name = 'Fifi' pet.update()
def test_delete_a_pet(self): pet = Pet(0, "fido", "dog") pet.save() self.assertEqual(len(Pet.all()), 1) # delete the pet and make sure it isn't in the database pet.delete() self.assertEqual(len(Pet.all()), 0)
def test_delete_a_pet(self): """ Delete a Pet """ pet = Pet(name="fido", category="dog", available=True) pet.save() self.assertEqual(len(Pet.all()), 1) # delete the pet and make sure it isn't in the database pet.delete() self.assertEqual(len(Pet.all()), 0)
def test_find_pet(self): """ Find a Pet by ID """ Pet(name="fido", category="dog", available=True).save() kitty = Pet(name="kitty", category="cat", available=False) kitty.save() pet = Pet.find(kitty.id) self.assertIsNot(pet, None) self.assertEqual(pet.id, kitty.id) self.assertEqual(pet.name, "kitty") self.assertEqual(pet.available, False)
def test_find_pet(self): """ Find a Pet by id """ Pet("fido", "dog").save() # saved_pet = Pet("kitty", "cat").save() saved_pet = Pet("kitty", "cat") saved_pet.save() pet = Pet.find(saved_pet.id) self.assertIsNot(pet, None) self.assertEqual(pet.id, saved_pet.id) self.assertEqual(pet.name, "kitty")
def test_add_a_pet(self): """ Create a pet and add it to the database """ pets = Pet.all() self.assertEqual(pets, []) pet = Pet(name="fido", category="dog", available=True) self.assertTrue(pet != None) self.assertEqual(pet.id, None) pet.save() # Asert that it was assigned an id and shows up in the database self.assertEqual(pet.id, 1) pets = Pet.all() self.assertEqual(len(pets), 1)
def test_add_a_pet(self): """ Create a pet and add it to the database """ pets = Pet.all() self.assertEqual(pets, []) pet = Pet(0, "fido", "dog") self.assertTrue(pet != None) self.assertEqual(pet.id, 0) pet.save() # Asert that it was assigned an id and shows up in the database self.assertEqual(pet.id, 1) pets = Pet.all() self.assertEqual(len(pets), 1)
def test_update_a_pet(self): pet = Pet(0, "fido", "dog") pet.save() self.assertEqual(pet.id, 1) # Change it an save it pet.category = "k9" pet.save() self.assertEqual(pet.id, 1) # Fetch it back and make sure the id hasn't changed # but the data did change pets = Pet.all() self.assertEqual(len(pets), 1) self.assertEqual(pets[0].category, "k9") self.assertEqual(pets[0].name, "fido")
def test_update_a_pet(self): """ Update a Pet """ pet = Pet(name="fido", category="dog", available=True) pet.save() self.assertEqual(pet.id, 1) # Change it an save it pet.category = "k9" pet.save() self.assertEqual(pet.id, 1) # Fetch it back and make sure the id hasn't changed # but the data did change pets = Pet.all() self.assertEqual(len(pets), 1) self.assertEqual(pets[0].category, "k9")
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') check_content_type('application/json') pet = Pet() app.logger.info('Payload = %s', api.payload) pet.deserialize(api.payload) 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 test_add_a_pet(self): """ Create a pet and add it to the database """ pets = Pet.all() self.assertEqual(pets, []) pet = Pet("fido", "dog", True) self.assertNotEqual(pet, None) self.assertEqual(pet.id, None) pet.save() # Asert that it was assigned an id and shows up in the database self.assertNotEqual(pet.id, None) pets = Pet.all() self.assertEqual(len(pets), 1) self.assertEqual(pets[0].name, "fido") self.assertEqual(pets[0].category, "dog") self.assertEqual(pets[0].available, True)
def test_update_a_pet(self): """ Update a Pet """ pet = Pet(name="fido", category_id=TestPets.dog.id, available=True) pet.save() self.assertIsNotNone(pet.id) self.assertEqual(pet.category_id, TestPets.dog.id) # Change it an save it pet.category_id = TestPets.cat.id pet.save() self.assertEqual(pet.category_id, TestPets.cat.id) # Fetch it back and make sure the id hasn't changed # but the data did change pets = Pet.all() self.assertEqual(len(pets), 1) self.assertEqual(pets[0].category_id, TestPets.cat.id)
def handle(self, *args, **options): if Vaccine.objects.exists() or Pet.objects.exists(): print("[x] Data ALready Loaded ") print(ALREDY_LOADED_ERROR_MESSAGE) return print("[+] Creating Vacine Data ") for vaccine_name in VACCINES_NAMES: vac = Vaccine(name=vaccine_name) vac.save() print("[+] Loading pet Data for adoption") for row in DictReader(open("./pet_data.csv")): pet = Pet() pet.name = row['Pet'] pet.submitter = row['Submitter'] pet.species = row['Species'] pet.breed = row['Breed'] pet.description = row['Pet Description'] pet.sex = row['Sex'] pet.age = row['Age'] raw_submission_date = row['submission date'] submission_date = UTC.localize( datetime.strptime(raw_submission_date, DATETIME_FORMAT)) pet.submission_date = submission_date pet.save() ## saving data raw_vaccination_names = row['vaccinations'] ## check if the vaccine in the avilabe list ## if it is then save it ## dont allow other vaccination outside the vaccination list vaccination_names = [ name for name in raw_vaccination_names.split('| ') if name ] for vac_name in vaccination_names: vac = Vaccine.objects.get(name=vac_name) pet.vaccinations.add(vac) pet.save()
def data_load(payload): """ Loads a Pet into the database """ pet = Pet(0, payload['name'], payload['category']) pet.save()