Example #1
0
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})
Example #2
0
 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()
Example #3
0
 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)
Example #4
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)
Example #5
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)
Example #6
0
 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")
Example #7
0
 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)
Example #8
0
 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)
Example #9
0
 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")
Example #10
0
 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")
Example #11
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')
     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}
Example #12
0
 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)
Example #13
0
 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()
Example #15
0
def data_load(payload):
    """ Loads a Pet into the database """
    pet = Pet(0, payload['name'], payload['category'])
    pet.save()