def check_dependencies(cls) -> None:
        if not executable_is_available("xvfb-run"):
            raise BuilderDependencyNotFound(
                "this builder requires xvfb-run to be available")

        if not executable_is_available("/usr/bin/drawio"):
            raise BuilderDependencyNotFound(
                "this builder requires drawio to be available")
Beispiel #2
0
    def check_dependencies(cls) -> None:
        if not xvfbwrapper_installed:
            raise BuilderDependencyNotFound(
                "this builder requires xvfbwrapper")
        if not executable_is_available("xvfb-run"):
            raise BuilderDependencyNotFound(
                "this builder requires xvfb-run to be available")

        if not executable_is_available("drawio"):
            raise BuilderDependencyNotFound(
                "this builder requires drawio to be available")
Beispiel #3
0
    def __load_mimetypes(cls) -> typing.List[str]:
        """
        Load supported mimetypes from WAND library
        :return: list of supported mime types
        """

        mimes = imagemagick_supported_mimes()  # type: typing.List[str]
        # HACK - G.M - 2019-10-31 - Handle raw format only if ufraw-batch is installed as most common
        # default imagemagick configuration delegate raw format to ufraw-batch.
        if executable_is_available("ufraw-batch"):
            for mimetype_mapping in cls.SUPPORTED_RAW_CAMERA_MIMETYPE_MAPPING:
                mimes.append(mimetype_mapping.mimetype)
        if executable_is_available("dwebp"):
            mimes.append("image/webp")
        return mimes
Beispiel #4
0
 def check_dependencies(cls) -> None:
     if not xvfbwrapper_installed:
         raise BuilderDependencyNotFound(
             "this builder requires xvfbwrapper")
     if not executable_is_available("scribus"):
         raise BuilderDependencyNotFound(
             "this builder requires scribus to be available")
    def __load_mimetypes(cls) -> typing.List[str]:
        """
        Load supported mimetypes from WAND library
        :return: list of supported mime types
        """

        all_supported = wand.version.formats("*")
        mimes = []  # type: typing.List[str]
        for supported in all_supported:
            url = "./FILE.{0}".format(supported)  # Fake a url
            mime, enc = mimetypes.guess_type(url)
            if mime and mime not in mimes:
                if "video" not in mime:
                    # TODO - D.A. - 2018-09-24 - Do not skip video if supported
                    mimes.append(mime)
        svg_mime = "image/svg+xml"
        if svg_mime in mimes:
            # HACK - D.A. - 2018-11-07 do not convert SVG using convert
            #  The optionnal behavior is related to different configurations on Debian and Ubuntu
            # (need to remove the mimetype on Ubuntu but useless on Debian
            mimes.remove("image/svg+xml")

        # HACK - G.M - 2019-10-31 - Handle raw format only if ufraw-batch is installed as most common
        # default imagemagick configuration delegate raw format to ufraw-batch.
        if executable_is_available("ufraw-batch"):
            for mimetype in cls.SUPPORTED_RAW_CAMERA_MIMETYPE:
                mimes.append(mimetype)
        return mimes
def test_check_dependencies() -> None:
    from preview_generator.preview.builder.office__libreoffice import (
        OfficePreviewBuilderLibreoffice, )

    if executable_is_available("libreoffice"):
        OfficePreviewBuilderLibreoffice.check_dependencies()
    else:
        with pytest.raises(BuilderDependencyNotFound):
            OfficePreviewBuilderLibreoffice.check_dependencies()
    def __load_mimetypes(cls) -> typing.List[str]:
        """
        Load supported mimetypes from WAND library
        :return: list of supported mime types
        """

        mimes = imagemagick_supported_mimes()  # type: typing.List[str]
        # HACK - G.M - 2019-10-31 - Handle raw format only if ufraw-batch is installed as most common
        # default imagemagick configuration delegate raw format to ufraw-batch.
        if executable_is_available("ufraw-batch"):
            for mimetype_mapping in cls.SUPPORTED_RAW_CAMERA_MIMETYPE_MAPPING:
                mimes.append(mimetype_mapping.mimetype)
        # HACK - G.M - 2019-11-14 - disable support for postscript file in imagemagick to use
        # pillow instead
        mimes.remove("application/postscript")
        mimes.append("application/x-xcf")
        mimes.append("image/x-xcf")
        return mimes
import io
import os
from pathlib import Path

import magic
import pytest

from preview_generator.exception import InputExtensionNotFound
from preview_generator.preview.builder.office__libreoffice import OfficePreviewBuilderLibreoffice
from preview_generator.utils import executable_is_available

CACHE_DIR = "/tmp/preview-generator-tests/cache"

if not executable_is_available("libreoffice"):
    pytest.skip("libreoffice is not available.", allow_module_level=True)


def test_convert_office_document_to_pdf__ok__with_input_extension_and_mimetype() -> None:
    content = io.BytesIO(b"Test content")
    output_filepath = CACHE_DIR + "/test.pdf"
    _file = Path(output_filepath)
    assert not _file.exists()
    OfficePreviewBuilderLibreoffice().convert_office_document_to_pdf(
        content,
        cache_path=CACHE_DIR,
        input_extension=".txt",
        mimetype="text/plain",
        output_filepath=output_filepath,
    )
    assert _file.is_file()
    mime = magic.Magic(mime=True)
Beispiel #9
0
# -*- coding: utf-8 -*-

import os
import re
import shutil
import typing

from PIL import Image
import pytest

from preview_generator.manager import PreviewManager
from preview_generator.utils import executable_is_available
from tests import test_utils

if not executable_is_available("drawio"):
    pytest.skip("drawio is not available.", allow_module_level=True)

CURRENT_DIR = os.path.dirname(os.path.abspath(__file__))
CACHE_DIR = "/tmp/preview-generator-tests/cache"
IMAGE_FILE_PATH = os.path.join(CURRENT_DIR, "test_drawio.drawio")


def setup_function(function: typing.Callable) -> None:
    shutil.rmtree(CACHE_DIR, ignore_errors=True)


@pytest.mark.drawio
def test_drawio_to_jpeg() -> None:
    manager = PreviewManager(cache_folder_path=CACHE_DIR, create_folder=True)
    assert manager.has_jpeg_preview(file_path=IMAGE_FILE_PATH) is True
    path_to_file = manager.get_jpeg_preview(file_path=IMAGE_FILE_PATH,
Beispiel #10
0
 def check_dependencies(cls) -> None:
     for executable in ["pdftocairo", "pdfinfo"]:
         if not executable_is_available(executable):
             raise BuilderDependencyNotFound(
                 "this builder requires {} to be available (from poppler-utils)"
                 .format(executable))
Beispiel #11
0
 def check_dependencies(cls) -> None:
     if not executable_is_available("convert"):
         raise BuilderDependencyNotFound(
             "this builder requires convert to be available")
Beispiel #12
0
from PIL import Image
import pytest

from preview_generator.exception import UnavailablePreviewType
from preview_generator.manager import PreviewManager
from preview_generator.utils import executable_is_available
from tests import test_utils
"""
dng file from:
https://www.kenrockwell.com/leica/m9/sample-photos-3.htm
"""
CURRENT_DIR = os.path.dirname(os.path.abspath(__file__))
CACHE_DIR = "/tmp/preview-generator-tests/cache"
IMAGE_FILE_PATH = os.path.join(CURRENT_DIR, "L1004235.DNG")

if not executable_is_available("ufraw-batch"):
    pytest.skip("ufraw-batch is not available.", allow_module_level=True)


def setup_function(function: typing.Callable) -> None:
    shutil.rmtree(CACHE_DIR, ignore_errors=True)


def test_to_jpeg() -> None:
    manager = PreviewManager(cache_folder_path=CACHE_DIR, create_folder=True)
    assert manager.has_jpeg_preview(file_path=IMAGE_FILE_PATH) is True
    path_to_file = manager.get_jpeg_preview(file_path=IMAGE_FILE_PATH,
                                            height=256,
                                            width=512,
                                            force=True)
    assert os.path.exists(path_to_file) is True
Beispiel #13
0
 def check_dependencies(cls) -> None:
     if not executable_is_available(INKSCAPE_EXECUTABLE):
         raise BuilderDependencyNotFound(
             "this builder requires inkscape to be available")
Beispiel #14
0
import shutil
import typing

from PIL import Image
import pytest

from preview_generator.exception import UnavailablePreviewType
from preview_generator.manager import PreviewManager
from preview_generator.utils import executable_is_available
from tests import test_utils

CURRENT_DIR = os.path.dirname(os.path.abspath(__file__))
CACHE_DIR = "/tmp/preview-generator-tests/cache"
IMAGE_FILE_PATH = os.path.join(CURRENT_DIR, "the_webp.webp")

if not executable_is_available("dwepb"):
    pytest.skip("libreoffice is not available.", allow_module_level=True)


def setup_function(function: typing.Callable) -> None:
    shutil.rmtree(CACHE_DIR, ignore_errors=True)


def test_to_jpeg() -> None:
    manager = PreviewManager(cache_folder_path=CACHE_DIR, create_folder=True)
    assert manager.has_jpeg_preview(file_path=IMAGE_FILE_PATH) is True
    path_to_file = manager.get_jpeg_preview(
        file_path=IMAGE_FILE_PATH, height=256, width=512, force=True
    )
    assert os.path.exists(path_to_file) is True
    assert os.path.getsize(path_to_file) > 0
import typing

from PIL import Image
import pytest

from preview_generator.preview.builder.video__ffmpeg import VideoPreviewBuilderFFMPEG
from preview_generator.utils import ImgDims
from preview_generator.utils import executable_is_available

CURRENT_DIR = os.path.dirname(os.path.abspath(__file__))
CACHE_DIR = "/tmp/preview-generator-tests/cache/"
# INFO - G.M - 2019-11-05 - video from https://peach.blender.org/trailer-page/
# Big buck bunny trailer under licence cc-by
IMAGE_FILE_PATH = os.path.join(CURRENT_DIR, "trailer_400p.ogg")

if not executable_is_available("ffprobe"):
    pytest.skip("ffprobe is not available.", allow_module_level=True)


def setup_function(function: typing.Callable) -> None:
    shutil.rmtree(CACHE_DIR, ignore_errors=True)


def test_to_jpeg() -> None:
    os.makedirs(CACHE_DIR)
    builder = VideoPreviewBuilderFFMPEG()
    assert builder.has_jpeg_preview() is True
    size = ImgDims(height=256, width=512)
    preview_name = "ogg_theora_big_buck_bunny_trailer_test_ffmpeg"
    builder.build_jpeg_preview(
        file_path=IMAGE_FILE_PATH,
 def check_dependencies(cls) -> None:
     if not executable_is_available("libreoffice"):
         raise BuilderDependencyNotFound("this builder requires libreoffice to be available")
def test_executable_is_available(exec: typing.Dict[str, typing.Any]) -> None:
    executable_list = exec.get("test")  # type: typing.Any
    assert executable_is_available(executable_list) == exec.get("result")