mirror of
https://github.com/paperless-ngx/paperless-ngx.git
synced 2025-04-09 09:58:20 -05:00
add exception handler for invalid filename formats.
This commit is contained in:
parent
4862ce7674
commit
82168e1a51
@ -1,3 +1,4 @@
|
|||||||
|
import logging
|
||||||
import os
|
import os
|
||||||
from collections import defaultdict
|
from collections import defaultdict
|
||||||
|
|
||||||
@ -66,24 +67,27 @@ def many_to_dictionary(field):
|
|||||||
|
|
||||||
def generate_filename(document):
|
def generate_filename(document):
|
||||||
# Create filename based on configured format
|
# Create filename based on configured format
|
||||||
if settings.PAPERLESS_FILENAME_FORMAT is not None:
|
path = ""
|
||||||
tags = defaultdict(lambda: slugify(None),
|
|
||||||
many_to_dictionary(document.tags))
|
try:
|
||||||
path = settings.PAPERLESS_FILENAME_FORMAT.format(
|
if settings.PAPERLESS_FILENAME_FORMAT is not None:
|
||||||
correspondent=slugify(document.correspondent),
|
tags = defaultdict(lambda: slugify(None),
|
||||||
title=slugify(document.title),
|
many_to_dictionary(document.tags))
|
||||||
created=slugify(document.created),
|
path = settings.PAPERLESS_FILENAME_FORMAT.format(
|
||||||
created_year=document.created.year if document.created else "none",
|
correspondent=slugify(document.correspondent),
|
||||||
created_month=document.created.month if document.created else "none",
|
title=slugify(document.title),
|
||||||
created_day=document.created.day if document.created else "none",
|
created=slugify(document.created),
|
||||||
added=slugify(document.added),
|
created_year=document.created.year if document.created else "none",
|
||||||
added_year=document.added.year if document.added else "none",
|
created_month=document.created.month if document.created else "none",
|
||||||
added_month=document.added.month if document.added else "none",
|
created_day=document.created.day if document.created else "none",
|
||||||
added_day=document.added.day if document.added else "none",
|
added=slugify(document.added),
|
||||||
tags=tags,
|
added_year=document.added.year if document.added else "none",
|
||||||
)
|
added_month=document.added.month if document.added else "none",
|
||||||
else:
|
added_day=document.added.day if document.added else "none",
|
||||||
path = ""
|
tags=tags,
|
||||||
|
)
|
||||||
|
except (ValueError, KeyError, IndexError) as e:
|
||||||
|
logging.getLogger(__name__).warning("Invalid PAPERLESS_FILENAME_FORMAT: {}, falling back to default,".format(settings.PAPERLESS_FILENAME_FORMAT))
|
||||||
|
|
||||||
# Always append the primary key to guarantee uniqueness of filename
|
# Always append the primary key to guarantee uniqueness of filename
|
||||||
if len(path) > 0:
|
if len(path) > 0:
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
from django.dispatch import Signal
|
from django.dispatch import Signal
|
||||||
|
|
||||||
document_consumption_started = Signal(providing_args=["filename"])
|
document_consumption_started = Signal()
|
||||||
document_consumption_finished = Signal(providing_args=["document"])
|
document_consumption_finished = Signal()
|
||||||
document_consumer_declaration = Signal(providing_args=[])
|
document_consumer_declaration = Signal()
|
||||||
|
@ -330,3 +330,21 @@ class TestDate(TestCase):
|
|||||||
os.path.join(tmp, "notempty", "file")), True)
|
os.path.join(tmp, "notempty", "file")), True)
|
||||||
self.assertEqual(os.path.isdir(
|
self.assertEqual(os.path.isdir(
|
||||||
os.path.join(tmp, "notempty", "empty")), False)
|
os.path.join(tmp, "notempty", "empty")), False)
|
||||||
|
|
||||||
|
@override_settings(PAPERLESS_FILENAME_FORMAT="{created/[title]")
|
||||||
|
def test_invalid_format(self):
|
||||||
|
document = Document()
|
||||||
|
document.pk = 1
|
||||||
|
document.file_type = "pdf"
|
||||||
|
document.storage_type = Document.STORAGE_TYPE_UNENCRYPTED
|
||||||
|
|
||||||
|
self.assertEqual(generate_filename(document), "0000001.pdf")
|
||||||
|
|
||||||
|
@override_settings(PAPERLESS_FILENAME_FORMAT="{created__year}")
|
||||||
|
def test_invalid_format_key(self):
|
||||||
|
document = Document()
|
||||||
|
document.pk = 1
|
||||||
|
document.file_type = "pdf"
|
||||||
|
document.storage_type = Document.STORAGE_TYPE_UNENCRYPTED
|
||||||
|
|
||||||
|
self.assertEqual(generate_filename(document), "0000001.pdf")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user