feat: dodaj ishodište i PDF račune za putni nalog
Dodano je origin_location polje kroz backend model, serializer, admin i UI modal za kreiranje/uređivanje putnog naloga (default: Zagreb). Računi putnog naloga sada prihvaćaju slike i PDF datoteke, uz backend validaciju formata, podršku za serving PDF-a i prilagodbu preview prikaza. Za greške uploada računa dodan je error toast kako bi poruke validacije bile vidljive korisniku odmah u sučelju. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
@@ -22,6 +22,15 @@ def create_test_image(filename='test.jpg', size=(40, 40), color='red'):
|
||||
)
|
||||
|
||||
|
||||
def create_test_pdf(filename='test.pdf'):
|
||||
content = b'%PDF-1.4\n1 0 obj<</Type/Catalog>>endobj\ntrailer<</Root 1 0 R>>\n%%EOF'
|
||||
return SimpleUploadedFile(
|
||||
name=filename,
|
||||
content=content,
|
||||
content_type='application/pdf',
|
||||
)
|
||||
|
||||
|
||||
class WorkOrderImagesEndpointTests(TestCase):
|
||||
def setUp(self):
|
||||
user_model = get_user_model()
|
||||
@@ -138,3 +147,23 @@ class WorkOrderImagesEndpointTests(TestCase):
|
||||
image_response = self.client.get(image_url)
|
||||
self.assertEqual(image_response.status_code, 200)
|
||||
self.assertTrue(image_response['Content-Type'].startswith('image/'))
|
||||
|
||||
def test_work_order_invoice_serializer_supports_pdf_file(self):
|
||||
invoice = WorkOrderInvoice.objects.create(
|
||||
work_order=self.work_order,
|
||||
naziv_racuna='PDF račun',
|
||||
image=create_test_pdf('invoice.pdf'),
|
||||
created_by=self.user,
|
||||
)
|
||||
list_url = f"{reverse('work-order-invoice-list')}?work_order_id={self.work_order.pk}"
|
||||
list_response = self.client.get(list_url)
|
||||
self.assertEqual(list_response.status_code, 200)
|
||||
self.assertEqual(len(list_response.data), 1)
|
||||
image_url = list_response.data[0].get('image_url')
|
||||
self.assertIsNotNone(image_url)
|
||||
self.assertIn(f'/api/fleet/work-order-invoices/{invoice.pk}/image/', image_url)
|
||||
self.assertEqual(list_response.data[0].get('image_content_type'), 'application/pdf')
|
||||
|
||||
file_response = self.client.get(image_url)
|
||||
self.assertEqual(file_response.status_code, 200)
|
||||
self.assertEqual(file_response['Content-Type'], 'application/pdf')
|
||||
|
||||
Reference in New Issue
Block a user