def test_delete_item__pictures_cascade(self): """ delete a selected item and all its binded pictures """ test_utils.setup_images() item = Item.create(**TEST_ITEM) item2 = Item.create(**TEST_ITEM2) picture = Picture.create(item=item, **TEST_PICTURE) picture2 = Picture.create(item=item, **TEST_PICTURE2) picture3 = Picture.create(item=item2, **TEST_PICTURE3) imgfolder = utils.get_image_folder() path_pic = os.path.join(imgfolder, "{uuid}.{extension}".format( uuid=picture.uuid, extension=picture.extension)) path_pic2 = os.path.join(imgfolder, "{uuid}.{extension}".format( uuid=picture2.uuid, extension=picture2.extension)) path_pic3 = os.path.join(imgfolder, "{uuid}.{extension}".format( uuid=picture3.uuid, extension=picture3.extension)) open(path_pic, "wb") open(path_pic2, "wb") open(path_pic3, "wb") resp = self.app.delete('/items/{item_uuid}'.format( item_uuid=item.uuid)) assert resp.status_code == client.NO_CONTENT assert Picture.select().count() == 1 assert Item.select().count() == 1 item2 = Item.get() pic = Picture.get() assert pic == picture3 assert os.path.isfile("{path}/{picture_uuid}.{extension}".format( path=utils.get_image_folder(), picture_uuid=picture3.uuid, extension=picture3.extension)) assert not os.path.isfile("{path}/{picture_uuid}.{extension}".format( path=utils.get_image_folder(), picture_uuid=picture.uuid, extension=picture.extension)) assert not os.path.isfile("{path}/{picture_uuid}.{extension}".format( path=utils.get_image_folder(), picture_uuid=picture2.uuid, extension=picture2.extension)) test_utils.clean_images()
def get(self, picture_uuid): """Retrieve the picture specified by picture_uuid""" try: picture = Picture.get(Picture.uuid == picture_uuid) except Picture.DoesNotExist: return None, client.NOT_FOUND return send_from_directory(utils.get_image_folder(), picture.filename, as_attachment=True)
def picture_creator(num_picture, index, item): ALLOWED_EXTENSION = ['jpg', 'jpeg', 'png', 'gif'] pictures_path = get_random_pictures(num_picture) picture_id = fake.uuid4() extension = random.choice(ALLOWED_EXTENSION) Picture.create(uuid=picture_id, extension=extension, item=item) image_folder = utils.get_image_folder() if not os.path.exists(image_folder): os.makedirs(image_folder) shutil.copy2(pictures_path[index], '/{}/{}.{}'.format(image_folder, picture_id, extension))
def test_get_picture__success(self): test_utils.setup_images() item = Item.create(**TEST_ITEM) picture = Picture.create(item=item, **TEST_PICTURE) open( "{path}/{picture_uuid}.jpg".format(path=utils.get_image_folder(), picture_uuid=picture.uuid), "wb") resp = self.app.get( '/pictures/{picture_uuid}'.format(picture_uuid=picture.uuid)) assert resp.status_code == client.OK test_picture = TEST_PICTURE.copy() test_picture['item_uuid'] = item.uuid assert resp.data == b'' assert resp.headers['Content-Type'] == 'image/jpeg' test_utils.clean_images()
def test_delete_picture__success(self): test_utils.setup_images() item = Item.create(**TEST_ITEM) picture = Picture.create(item=item, **TEST_PICTURE) picture2 = Picture.create(item=item, **TEST_PICTURE2) open( "{path}/{picture_uuid}.{extension}".format( path=utils.get_image_folder(), picture_uuid=picture.uuid, extension=picture.extension), "wb") open( "{path}/{picture_uuid}.{extension}".format( path=utils.get_image_folder(), picture_uuid=WRONG_UUID, extension='jpg'), "wb") open( "{path}/{picture_uuid}.{extension}".format( path=utils.get_image_folder(), picture_uuid=picture2.uuid, extension=picture2.extension), "wb") resp = self.app.delete( '/pictures/{picture_uuid}'.format(picture_uuid=picture.uuid)) assert resp.status_code == client.NO_CONTENT assert Picture.select().count() == 1 assert Item.select().count() == 1 item2 = Item.get() assert str(item2.uuid) == TEST_ITEM['uuid'] assert item2.name == TEST_ITEM['name'] assert float(item2.price) == TEST_ITEM['price'] assert item2.description == TEST_ITEM['description'] assert os.path.isfile("{path}/{picture_uuid}.{extension}".format( path=utils.get_image_folder(), picture_uuid=WRONG_UUID, extension='jpg')) assert not os.path.isfile("{path}/{picture_uuid}.{extension}".format( path=utils.get_image_folder(), picture_uuid=picture.uuid, extension=picture.extension)) assert os.path.isfile("{path}/{picture_uuid}.{extension}".format( path=utils.get_image_folder(), picture_uuid=picture2.uuid, extension=picture2.extension)) test_utils.clean_images()
def setup_images(): """ Create images folder if doesnt exist """ if not os.path.exists(get_image_folder()): os.makedirs(get_image_folder())
def clean_images(): """ Delete all the images in the IMAGE_FOLDER """ shutil.rmtree(get_image_folder(), onerror=None)