Beispiel #1
0
    def generate_tiled_image(self):
        num_pictures = 0
        if len(self.sources) >= 4:
            num_pictures = 4
        elif len(self.sources) >= 1:
            num_pictures = 1
        else:
            return None

        images = [
            config.get_storage_path(f.get_filename())
            for f in self.sources[:num_pictures]
        ]
        key = "TILED {}".format("+".join(sorted(images)))
        if not config.UPDATE and FILECACHE.get(key):
            return FILECACHE.get(key).decode('utf-8')

        config.LOGGER.info("\tTiling thumbnail for {}".format(self.node.title))
        with tempfile.NamedTemporaryFile(
                suffix=".{}".format(file_formats.PNG)) as tempf:
            tempf.close()
            create_tiled_image(images, tempf.name)
            filename = "{}.{}".format(get_hash(tempf.name), file_formats.PNG)

            copy_file_to_storage(filename, tempf.name)
            FILECACHE.set(key, bytes(filename, "utf-8"))
            return filename
Beispiel #2
0
 def test_raises_for_wrong_number_of_files(self, tmpdir):
     input_file = os.path.join(files_dir, 'file_that_does_not_exist.png')
     assert not os.path.exists(input_file)
     input_files = [input_file, input_file, input_file, input_file]
     output_file = tmpdir.join('tiled.png').strpath
     with pytest.raises(images.ThumbnailGenerationError):
         images.create_tiled_image(input_files, output_file)
Beispiel #3
0
 def test_generates_brazil_thumbnail(self, tmpdir):
     input_file = os.path.join(files_dir, 'thumbnails', 'BRAlogo1.png')
     assert os.path.exists(input_file)
     input_files = [input_file, input_file, input_file, input_file]
     output_file = tmpdir.join('tiled.png').strpath
     images.create_tiled_image(input_files, output_file)
     self.check_16_9_format(output_file)
Beispiel #4
0
 def test_generates_kolibris_thumbnail(self, tmpdir):
     filenames = ['BRAlogo1.png', 'toosquare.png', 'tootall.png', 'toowide.png']
     input_files = []
     for filename in filenames:
         input_file = os.path.join(files_dir, 'thumbnails', filename)
         assert os.path.exists(input_file)
         input_files.append(input_file)
     output_file = tmpdir.join('tiled.png').strpath
     images.create_tiled_image(input_files, output_file)
     self.check_16_9_format(output_file)
Beispiel #5
0
def create_tiled_image_wrapper(files, preset_id, node=None):
    ext = file_formats.PNG
    random.shuffle(files)
    if len(files) >= 4:
        files = files[:4]
    elif len(files) >= 1:
        files = files[:1]

    with tempfile.NamedTemporaryFile(suffix=".{}".format(ext)) as tempf:
        tempf.close()
        create_tiled_image(files, tempf.name)
        with open(tempf.name, 'rb') as tf:
            return create_file_from_contents(tf.read(), ext=ext, node=node, preset_id=preset_id)
Beispiel #6
0
def create_tiled_image_wrapper(files, preset_id, node=None):
    ext = file_formats.PNG
    random.shuffle(files)
    if len(files) >= 4:
        files = files[:4]
    elif len(files) >= 1:
        files = files[:1]

    with tempfile.NamedTemporaryFile(suffix=".{}".format(ext)) as tempf:
        tempf.close()
        create_tiled_image(files, tempf.name)
        with open(tempf.name, 'rb') as tf:
            return create_file_from_contents(tf.read(), ext=ext, node=node, preset_id=preset_id)
Beispiel #7
0
def create_tiled_image_wrapper(files, preset_id, node=None):
    ext = file_formats.PNG
    random.shuffle(files)
    if len(files) >= 4:
        files = files[:4]
    elif len(files) >= 1:
        files = files[:1]

    with tempfile.NamedTemporaryFile(suffix=".{}".format(ext)) as tempf:
        tempf.close()
        create_tiled_image(files, tempf.name)
        user = (len(files) > 0 and not isinstance(files[0], basestring) and files[0].uploaded_by) or None
        with open(tempf.name, 'rb') as tf:
            return create_file_from_contents(tf.read(), ext=ext, node=node, preset_id=preset_id, uploaded_by=user)
Beispiel #8
0
def create_tiled_image_wrapper(files, preset_id, node=None):
    ext = file_formats.PNG
    random.shuffle(files)
    if len(files) >= 4:
        files = files[:4]
    elif len(files) >= 1:
        files = files[:1]

    with tempfile.NamedTemporaryFile(suffix=".{}".format(ext)) as tempf:
        tempf.close()
        create_tiled_image(files, tempf.name)
        user = (len(files) > 0 and not isinstance(files[0], basestring) and files[0].uploaded_by) or None
        with open(tempf.name, 'rb') as tf:
            return create_file_from_contents(tf.read(), ext=ext, node=node, preset_id=preset_id, uploaded_by=user)
Beispiel #9
0
 def generate_tiled_image(self):
     num_pictures = 0
     if len(self.sources) >= 4:
         num_pictures = 4
     elif len(self.sources) >= 1:
         num_pictures = 1
     else:
         return None
     config.LOGGER.info("\tGenerating tiled thumbnail.")
     images = [
         config.get_storage_path(f.get_filename())
         for f in self.sources[:num_pictures]
     ]
     with tempfile.NamedTemporaryFile(
             suffix=".{}".format(file_formats.PNG)) as tempf:
         tempf.close()
         create_tiled_image(images, tempf.name)
         filename = "{}.{}".format(get_hash(tempf.name), file_formats.PNG)
         copy_file_to_storage(filename, tempf.name)
         return filename
Beispiel #10
0
 def test_raises_for_invalid_png(self, tmpdir, bad_png_file):
     input_file = bad_png_file.name
     input_files = [input_file, input_file, input_file, input_file]
     output_file = tmpdir.join('tiled.png').strpath
     with pytest.raises(images.ThumbnailGenerationError):
         images.create_tiled_image(input_files, output_file)