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()
|
data = pdf_file.getvalue()
|
||||||
pdf_file.close()
|
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)
|
return ContentFile(data, name=filename)
|
||||||
|
|||||||
@@ -518,6 +518,35 @@ class LabelTest(InvenTreeAPITestCase):
|
|||||||
self.assertEqual(output.plugin, 'inventreelabel')
|
self.assertEqual(output.plugin, 'inventreelabel')
|
||||||
self.assertTrue(output.output.name.endswith('.pdf'))
|
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):
|
def test_print_custom_template(self):
|
||||||
"""Test printing against a custom template file."""
|
"""Test printing against a custom template file."""
|
||||||
template_string = """
|
template_string = """
|
||||||
|
|||||||
Reference in New Issue
Block a user