mirror of
https://github.com/inventree/InvenTree.git
synced 2026-09-27 14:16:02 +00:00
Ensure generated label PDFs have correct extension (#12870)
* Ensure generated label PDFs retain their extension * Test generated label PDF filename handling
This commit is contained in:
@@ -81,6 +81,9 @@ class InvenTreeLabelPlugin(LabelPrintingMixin, SettingsMixin, InvenTreePlugin):
|
||||
data = pdf_file.getvalue()
|
||||
pdf_file.close()
|
||||
|
||||
filename = kwargs.get('filename', 'labels.pdf')
|
||||
filename = kwargs.get('filename') or 'labels.pdf'
|
||||
|
||||
if not filename.lower().endswith('.pdf'):
|
||||
filename = f'{filename}.pdf'
|
||||
|
||||
return ContentFile(data, name=filename)
|
||||
|
||||
@@ -518,6 +518,35 @@ class LabelTest(InvenTreeAPITestCase):
|
||||
self.assertEqual(output.plugin, 'inventreelabel')
|
||||
self.assertTrue(output.output.name.endswith('.pdf'))
|
||||
|
||||
# Filename patterns without an extension must still produce PDF filenames.
|
||||
template.filename_pattern = 'unit_test_label'
|
||||
template.save()
|
||||
|
||||
output = template.print(items=parts[:1], plugin=plugin)
|
||||
|
||||
self.assertTrue(output.output.name.endswith('.pdf'))
|
||||
|
||||
def test_generated_file_filename(self):
|
||||
"""PDF filenames retain existing suffixes and default when empty."""
|
||||
template = LabelTemplate.objects.filter(enabled=True, model_type='part').first()
|
||||
plugin = registry.get_plugin('inventreelabel')
|
||||
plugin.before_printing()
|
||||
plugin.outputs.append(
|
||||
plugin.render_to_pdf(template, Part.objects.first(), None)
|
||||
)
|
||||
|
||||
for kwargs, expected in [
|
||||
({'filename': 'unit_test_label'}, 'unit_test_label.pdf'),
|
||||
({'filename': 'unit_test_label.pdf'}, 'unit_test_label.pdf'),
|
||||
({'filename': 'unit_test_label.PDF'}, 'unit_test_label.PDF'),
|
||||
({'filename': ''}, 'labels.pdf'),
|
||||
({'filename': None}, 'labels.pdf'),
|
||||
({}, 'labels.pdf'),
|
||||
]:
|
||||
with self.subTest(kwargs=kwargs):
|
||||
output = plugin.get_generated_file(**kwargs)
|
||||
self.assertEqual(output.name, expected)
|
||||
|
||||
def test_print_custom_template(self):
|
||||
"""Test printing against a custom template file."""
|
||||
template_string = """
|
||||
|
||||
Reference in New Issue
Block a user