mirror of
https://github.com/paperless-ngx/paperless-ngx.git
synced 2026-01-12 21:44:21 -06:00
Fix: include replace none logic in storage path preview, improve jinja conditionals for empty metadata (#11315)
This commit is contained in:
@@ -52,6 +52,33 @@ class FilePathTemplate(Template):
|
||||
return clean_filepath(original_render)
|
||||
|
||||
|
||||
class PlaceholderString(str):
|
||||
"""
|
||||
String subclass used as a sentinel for empty metadata values inside templates.
|
||||
|
||||
- Renders as \"-none-\" to preserve existing filename cleaning logic.
|
||||
- Compares equal to either \"-none-\" or \"none\" so templates can check for either.
|
||||
- Evaluates to False so {% if correspondent %} behaves intuitively.
|
||||
"""
|
||||
|
||||
def __new__(cls, value: str = "-none-"):
|
||||
return super().__new__(cls, value)
|
||||
|
||||
def __bool__(self) -> bool:
|
||||
return False
|
||||
|
||||
def __eq__(self, other) -> bool:
|
||||
if isinstance(other, str) and other == "none":
|
||||
other = "-none-"
|
||||
return super().__eq__(other)
|
||||
|
||||
def __ne__(self, other) -> bool:
|
||||
return not self.__eq__(other)
|
||||
|
||||
|
||||
NO_VALUE_PLACEHOLDER = PlaceholderString("-none-")
|
||||
|
||||
|
||||
_template_environment.undefined = _LogStrictUndefined
|
||||
|
||||
_template_environment.filters["get_cf_value"] = get_cf_value
|
||||
@@ -128,7 +155,7 @@ def get_added_date_context(document: Document) -> dict[str, str]:
|
||||
def get_basic_metadata_context(
|
||||
document: Document,
|
||||
*,
|
||||
no_value_default: str,
|
||||
no_value_default: str = NO_VALUE_PLACEHOLDER,
|
||||
) -> dict[str, str]:
|
||||
"""
|
||||
Given a Document, constructs some basic information about it. If certain values are not set,
|
||||
@@ -266,7 +293,7 @@ def validate_filepath_template_and_render(
|
||||
# Build the context dictionary
|
||||
context = (
|
||||
{"document": document}
|
||||
| get_basic_metadata_context(document, no_value_default="-none-")
|
||||
| get_basic_metadata_context(document, no_value_default=NO_VALUE_PLACEHOLDER)
|
||||
| get_creation_date_context(document)
|
||||
| get_added_date_context(document)
|
||||
| get_tags_context(tags_list)
|
||||
|
||||
Reference in New Issue
Block a user