From 76b0de4169a44f7719d1d416df60c9d5fd5c49ce Mon Sep 17 00:00:00 2001 From: Alex Pyrgiotis Date: Mon, 30 Sep 2024 12:45:51 +0300 Subject: [PATCH] WIP: Make the dummy provider less... dummy --- dangerzone/isolation_provider/dummy.py | 61 ++++++++++---------------- 1 file changed, 22 insertions(+), 39 deletions(-) diff --git a/dangerzone/isolation_provider/dummy.py b/dangerzone/isolation_provider/dummy.py index c98f86a..e3a77bd 100644 --- a/dangerzone/isolation_provider/dummy.py +++ b/dangerzone/isolation_provider/dummy.py @@ -6,6 +6,8 @@ import sys import time from typing import Callable, Optional +from ..document import Document +from ..conversion.common import DangerzoneConverter from ..document import Document from ..util import get_resource_path from .base import IsolationProvider, terminate_process_group @@ -13,6 +15,18 @@ from .base import IsolationProvider, terminate_process_group log = logging.getLogger(__name__) +def dummy_script() -> None: + sys.stdin.read() + + pages = 2 + width = height = 9 + DangerzoneConverter._write_int(pages) + for page in range(pages): + DangerzoneConverter._write_int(width) + DangerzoneConverter._write_int(height) + DangerzoneConverter._write_bytes(width * height * 3 * b"A") + + class Dummy(IsolationProvider): """Dummy Isolation Provider (FOR TESTING ONLY) @@ -32,50 +46,19 @@ class Dummy(IsolationProvider): def install(self) -> bool: return True - def convert( - self, - document: Document, - ocr_lang: Optional[str], - progress_callback: Optional[Callable] = None, - ) -> None: - self.progress_callback = None - log.debug("Dummy converter started:") - log.debug( - f" - document: {os.path.basename(document.input_filename)} ({document.id})" - ) - log.debug(f" - ocr : {ocr_lang}") - log.debug("\n(simulating conversion)") - success = True - progress = [ - [False, "Converting to PDF using GraphicsMagick", 0.0], - [False, "Separating document into pages", 3.0], - [False, "Converting page 1/1 to pixels", 5.0], - [False, "Converted document to pixels", 50.0], - [False, "Converting page 1/1 from pixels to PDF", 50.0], - [False, "Merging 1 pages into a single PDF", 95.0], - [False, "Compressing PDF", 97.0], - [False, "Safe PDF created", 100.0], - ] - for error, text, percentage in progress: - self.print_progress(document, error, text, percentage) # type: ignore [arg-type] - if error: - success = False - if success: - shutil.copy( - get_resource_path("dummy_document.pdf"), document.output_filename - ) - document.mark_as_safe() - if document.archive_after_conversion: - document.archive() - def start_doc_to_pixels_proc(self, document: Document) -> subprocess.Popen: - dummy_cmd = ["python3", "-c", "print('The cake is a lie')"] + cmd = [ + "python3", + "-c", + "from dangerzone.isolation_provider.dummy import dummy_script;" + " dummy_script()" + ] return subprocess.Popen( - dummy_cmd, + cmd, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=self.proc_stderr, - start_new_session=True, + start_new_session=True ) def terminate_doc_to_pixels_proc(