Move safe PDF naming logic to document.py

Let the Document class suggest the default filename for the safe PDF,
based on the provided input filename, appended with the extension
`-safe.pdf`.

Previously, this logic was copy-pasted throughout the code, which made
it difficult to maintain.
This commit is contained in:
deeplow 2022-09-19 14:08:20 +01:00
parent 7aa08457bd
commit 2bed3c10e4
No known key found for this signature in database
GPG key ID: 577982871529A52A
4 changed files with 17 additions and 13 deletions

View file

@ -9,7 +9,7 @@ from colorama import Back, Fore, Style
from . import args, container, errors
from .container import convert
from .document import Document
from .document import SAFE_EXTENSION, Document
from .global_common import GlobalCommon
from .util import get_version
@ -23,7 +23,7 @@ def print_header(s: str) -> None:
@click.option(
"--output-filename",
callback=args.validate_output_filename,
help="Default is filename ending with -safe.pdf",
help=f"Default is filename ending with {SAFE_EXTENSION}",
)
@click.option("--ocr-lang", help="Language to OCR, defaults to none")
@click.argument("filename", required=True, callback=args.validate_input_filename)
@ -38,13 +38,11 @@ def cli_main(
document = Document(filename)
# Validate safe PDF output filename
# Set PDF output filename
if output_filename:
document.output_filename = output_filename
else:
document.output_filename = (
f"{os.path.splitext(document.input_filename)[0]}-safe.pdf"
)
document.set_default_output_filename()
# Validate OCR language
if ocr_lang:

View file

@ -8,6 +8,8 @@ import appdirs
from .errors import DocumentFilenameException
SAFE_EXTENSION = "-safe.pdf"
class Document:
"""Track the state of a single document.
@ -75,3 +77,8 @@ class Document:
filename = self.normalize_filename(filename)
self.validate_output_filename(filename)
self._output_filename = filename
def set_default_output_filename(self) -> None:
self.output_filename = (
f"{os.path.splitext(self.input_filename)[0]}{SAFE_EXTENSION}"
)

View file

@ -453,12 +453,9 @@ class SettingsWidget(QtWidgets.QWidget):
f"Suspicious: {os.path.basename(self.document.input_filename)}"
)
# Update the save location
output_filename = (
f"{os.path.splitext(self.document.input_filename)[0]}-safe.pdf"
)
self.document.output_filename = output_filename
self.save_lineedit.setText(os.path.basename(output_filename))
# Set the default save location
self.document.set_default_output_filename()
self.save_lineedit.setText(os.path.basename(self.document.output_filename))
def save_browse_button_clicked(self) -> None:
filename = QtWidgets.QFileDialog.getSaveFileName(

View file

@ -6,13 +6,15 @@ import pytest
sys.dangerzone_dev = True # type: ignore[attr-defined]
from dangerzone.document import SAFE_EXTENSION
SAMPLE_DIRECTORY = "test_docs"
BASIC_SAMPLE = "sample.pdf"
test_docs_dir = Path(__file__).parent.joinpath(SAMPLE_DIRECTORY)
test_docs = [
p
for p in test_docs_dir.rglob("*")
if p.is_file() and not p.name.endswith("-safe.pdf")
if p.is_file() and not p.name.endswith(SAFE_EXTENSION)
]
# Pytest parameter decorators