fix: dodaj fotografije servisnih zapisa u DOCX
DOCX izvjestaj servisnih zapisa sada ugradjuje povezane fotografije nakon kompresije slike za manju velicinu dokumenta. Dodan je regresijski test koji provjerava da generirani DOCX sadrzi embedded media datoteke. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
@@ -7,9 +7,11 @@ from rest_framework.test import APIClient
|
||||
import uuid
|
||||
from io import BytesIO
|
||||
from datetime import timedelta
|
||||
import zipfile
|
||||
from PIL import Image
|
||||
|
||||
from modules.fleet.models import Vehicle, WorkOrder, WorkOrderInvoice, VehicleServiceRecord, VehicleServicePhoto, GeneratedWorkOrderPdf
|
||||
from modules.task_management.models import Task
|
||||
|
||||
|
||||
def create_test_image(filename='test.jpg', size=(40, 40), color='red'):
|
||||
@@ -55,9 +57,16 @@ class WorkOrderImagesEndpointTests(TestCase):
|
||||
creator=self.user,
|
||||
purpose='kontrola',
|
||||
)
|
||||
self.task = Task.objects.create(
|
||||
title='Test servisni zadatak',
|
||||
assigned_to=self.user,
|
||||
vehicle=self.vehicle,
|
||||
work_order=self.work_order,
|
||||
)
|
||||
|
||||
self.service_record = VehicleServiceRecord.objects.create(
|
||||
vehicle=self.vehicle,
|
||||
task=self.task,
|
||||
performed_by=self.user,
|
||||
description='Servisni zapis za test izolacije fotografija.',
|
||||
service_title='Test servis',
|
||||
@@ -240,3 +249,22 @@ class WorkOrderImagesEndpointTests(TestCase):
|
||||
cached.refresh_from_db()
|
||||
self.assertFalse(cached.is_active)
|
||||
self.assertEqual(cached.status, 'failed')
|
||||
|
||||
def test_service_records_docx_contains_embedded_service_photos(self):
|
||||
VehicleServicePhoto.objects.create(
|
||||
service_record=self.service_record,
|
||||
image=create_test_image('service-record-docx.jpg', size=(320, 200), color='blue'),
|
||||
description='DOCX photo',
|
||||
uploaded_by=self.user,
|
||||
)
|
||||
|
||||
response = self.client.get(f"/api/fleet/work-orders/{self.work_order.pk}/service-records-docx/")
|
||||
self.assertEqual(response.status_code, 200, response.content)
|
||||
self.assertEqual(
|
||||
response['Content-Type'],
|
||||
'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
|
||||
)
|
||||
|
||||
archive = zipfile.ZipFile(BytesIO(response.content))
|
||||
media_files = [name for name in archive.namelist() if name.startswith('word/media/')]
|
||||
self.assertTrue(media_files, archive.namelist())
|
||||
|
||||
Reference in New Issue
Block a user