mirror of
				https://github.com/paperless-ngx/paperless-ngx.git
				synced 2025-10-30 03:56:23 -05:00 
			
		
		
		
	Fix: Handling of Nones when using custom fields in filepath templating (#7933)
This commit is contained in:
		| @@ -82,7 +82,7 @@ def get_cf_value( | |||||||
|     name: str, |     name: str, | ||||||
|     default: str | None = None, |     default: str | None = None, | ||||||
| ) -> str | None: | ) -> str | None: | ||||||
|     if name in custom_field_data: |     if name in custom_field_data and custom_field_data[name]["value"] is not None: | ||||||
|         return custom_field_data[name]["value"] |         return custom_field_data[name]["value"] | ||||||
|     elif default is not None: |     elif default is not None: | ||||||
|         return default |         return default | ||||||
| @@ -235,8 +235,10 @@ def get_custom_fields_context( | |||||||
|             field_instance.field.data_type, |             field_instance.field.data_type, | ||||||
|             replacement_text="-", |             replacement_text="-", | ||||||
|         ) |         ) | ||||||
|  |         if field_instance.value is None: | ||||||
|  |             value = None | ||||||
|         # String types need to be sanitized |         # String types need to be sanitized | ||||||
|         if field_instance.field.data_type in { |         elif field_instance.field.data_type in { | ||||||
|             CustomField.FieldDataType.MONETARY, |             CustomField.FieldDataType.MONETARY, | ||||||
|             CustomField.FieldDataType.STRING, |             CustomField.FieldDataType.STRING, | ||||||
|             CustomField.FieldDataType.URL, |             CustomField.FieldDataType.URL, | ||||||
|   | |||||||
| @@ -1322,7 +1322,7 @@ class TestFilenameGeneration(DirectoriesMixin, TestCase): | |||||||
|             extra_data={"select_options": ["ChoiceOne", "ChoiceTwo"]}, |             extra_data={"select_options": ["ChoiceOne", "ChoiceTwo"]}, | ||||||
|         ) |         ) | ||||||
|  |  | ||||||
|         CustomFieldInstance.objects.create( |         cfi1 = CustomFieldInstance.objects.create( | ||||||
|             document=doc_a, |             document=doc_a, | ||||||
|             field=cf2, |             field=cf2, | ||||||
|             value_select=0, |             value_select=0, | ||||||
| @@ -1351,7 +1351,7 @@ class TestFilenameGeneration(DirectoriesMixin, TestCase): | |||||||
|         with override_settings( |         with override_settings( | ||||||
|             FILENAME_FORMAT=""" |             FILENAME_FORMAT=""" | ||||||
|                  {% if "Select Field" in custom_fields %} |                  {% if "Select Field" in custom_fields %} | ||||||
|                    {{ title }}_{{ custom_fields | get_cf_value('Select Field') }} |                    {{ title }}_{{ custom_fields | get_cf_value('Select Field', 'Default Value') }} | ||||||
|                  {% else %} |                  {% else %} | ||||||
|                    {{ title }} |                    {{ title }} | ||||||
|                  {% endif %} |                  {% endif %} | ||||||
| @@ -1362,6 +1362,15 @@ class TestFilenameGeneration(DirectoriesMixin, TestCase): | |||||||
|                 "Some Title_ChoiceOne.pdf", |                 "Some Title_ChoiceOne.pdf", | ||||||
|             ) |             ) | ||||||
|  |  | ||||||
|  |             # Check for handling Nones well | ||||||
|  |             cfi1.value_select = None | ||||||
|  |             cfi1.save() | ||||||
|  |  | ||||||
|  |             self.assertEqual( | ||||||
|  |                 generate_filename(doc_a), | ||||||
|  |                 "Some Title_Default Value.pdf", | ||||||
|  |             ) | ||||||
|  |  | ||||||
|         cf.name = "Invoice Number" |         cf.name = "Invoice Number" | ||||||
|         cfi.value_int = 4567 |         cfi.value_int = 4567 | ||||||
|         cfi.save() |         cfi.save() | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Trenton H
					Trenton H