2
0
mirror of https://github.com/inventree/InvenTree.git synced 2025-04-28 11:36:44 +00:00

Handle errors when printing reports (#5360) (#5361)

- Re-throw as a ValidationError
- Results in a 400 error, not a 500

(cherry picked from commit 5f3d3b28b367e4ead79aeafc34c8c8da4d7564cf)

Co-authored-by: Oliver <oliver.henry.walters@gmail.com>
This commit is contained in:
github-actions[bot] 2023-07-28 14:23:43 +10:00 committed by GitHub
parent afa7ed873f
commit 946fe2df29
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -18,6 +18,7 @@ import InvenTree.helpers
import order.models
import part.models
from InvenTree.api import MetadataView
from InvenTree.exceptions import log_error
from InvenTree.filters import InvenTreeSearchFilter
from InvenTree.mixins import ListAPI, RetrieveAPI, RetrieveUpdateDestroyAPI
from stock.models import StockItem, StockItemAttachment
@ -181,6 +182,7 @@ class ReportPrintMixin:
# Start with a default report name
report_name = "report.pdf"
try:
# Merge one or more PDF files into a single download
for item in items_to_print:
report = self.get_object()
@ -254,6 +256,17 @@ class ReportPrintMixin:
inline=inline,
)
except Exception as exc:
# Log the exception to the database
log_error(request.path)
# Re-throw the exception to the client as a DRF exception
raise ValidationError({
'error': 'Report printing failed',
'detail': str(exc),
'path': request.path,
})
def get(self, request, *args, **kwargs):
"""Default implementation of GET for a print endpoint.