Try to return JSON error when receiving API call fails
although in my testing, the error still got raised somehow in the tweens or something? client then sees it as a 500 response and gets no JSON
This commit is contained in:
parent
a1b05540be
commit
de8751b86c
|
@ -2,7 +2,7 @@
|
||||||
################################################################################
|
################################################################################
|
||||||
#
|
#
|
||||||
# Rattail -- Retail Software Framework
|
# Rattail -- Retail Software Framework
|
||||||
# Copyright © 2010-2023 Lance Edgar
|
# Copyright © 2010-2024 Lance Edgar
|
||||||
#
|
#
|
||||||
# This file is part of Rattail.
|
# This file is part of Rattail.
|
||||||
#
|
#
|
||||||
|
@ -27,6 +27,7 @@ Tailbone Web API - Receiving Batches
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
import humanize
|
import humanize
|
||||||
|
import sqlalchemy as sa
|
||||||
|
|
||||||
from rattail.db import model
|
from rattail.db import model
|
||||||
from rattail.util import pretty_quantity
|
from rattail.util import pretty_quantity
|
||||||
|
@ -440,9 +441,17 @@ class ReceivingBatchRowViews(APIBatchRowView):
|
||||||
# handler takes care of the row receiving logic for us
|
# handler takes care of the row receiving logic for us
|
||||||
kwargs = dict(form.validated)
|
kwargs = dict(form.validated)
|
||||||
del kwargs['row']
|
del kwargs['row']
|
||||||
self.batch_handler.receive_row(row, **kwargs)
|
try:
|
||||||
|
self.batch_handler.receive_row(row, **kwargs)
|
||||||
|
self.Session.flush()
|
||||||
|
except Exception as error:
|
||||||
|
log.warning("receive() failed", exc_info=True)
|
||||||
|
if isinstance(error, sa.exc.DataError) and hasattr(error, 'orig'):
|
||||||
|
error = str(error.orig)
|
||||||
|
else:
|
||||||
|
error = str(error)
|
||||||
|
return {'error': error}
|
||||||
|
|
||||||
self.Session.flush()
|
|
||||||
return self._get(obj=row)
|
return self._get(obj=row)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
|
|
Loading…
Reference in a new issue