wscalls: do not log/notify about app errors anymore (#87554) #1218

Merged
fpeters merged 1 commits from wip/87554-wscall-do-no-record-app-errors into main 2024-03-06 18:10:04 +01:00
4 changed files with 21 additions and 8 deletions

View File

@ -241,12 +241,12 @@ def test_webservice_on_error(http_requests, emails, notify_on_errors, record_on_
'500': '500 Internal Server Error',
'json-err0': None,
'json-err0int': None,
'json-err1': 'err: 1',
'json-err1int': 'err: 1',
'json-err1-with-desc': 'err: 1, err_desc: :(',
'json-errstr': 'err: bug',
'json-errheader1': 'err: 1',
'json-errheaderstr': 'err: bug',
'json-err1': None,
'json-err1int': None,
'json-err1-with-desc': None,
'json-errstr': None,
'json-errheader1': None,
'json-errheaderstr': None,
}
wscall.request = {'url': 'http://remote.example.net/%s' % url_part}
wscall.store()

View File

@ -51,6 +51,17 @@ class NamedWsCallUI:
)
form.add(WsCallRequestWidget, 'request', value=self.wscall.request, title=_('Request'), required=True)
form.widgets.append(
HtmlWidget(
'<div class="infonotice"><p>%s</p></div>'
% _(
'This tab is about connection, payload, and HTTP errors. '
'Application errors ("err" property in response different than zero) '
'are always silent.'
),
tab=('error', _('Error Handling')),
)
)
form.add(
CheckboxWidget,
'notify_on_errors',
@ -63,6 +74,7 @@ class NamedWsCallUI:
'record_on_errors',
title=_('Record on errors'),
value=self.wscall.record_on_errors if self.wscall.slug else True,
default_value=True,

Détail vu en passant, pour que l'onglet "Gestion des erreurs" ne soit pas marqué comme contenant une modification dès le début.

Détail vu en passant, pour que l'onglet "Gestion des erreurs" ne soit pas marqué comme contenant une modification dès le début.
tab=('error', _('Error Handling')),
)
if not self.wscall.is_readonly():

View File

@ -565,6 +565,7 @@ class HtmlWidget:
self.attrs = {}
self.string = string
self.title = title
self.tab = kwargs.pop('tab', None)

Visiblement c'est la première fois qu'on met un HtmlWidget dans un onglet.

Visiblement c'est la première fois qu'on met un HtmlWidget dans un onglet.
def render(self):
return self.render_content()

View File

@ -205,8 +205,8 @@ def call_webservice(
)
return (None, None, None)
app_error_code = get_app_error_code(response, data, 'json')
if (app_error_code != 0 or status >= 400) and (notify_on_errors or record_on_errors):
if status >= 400 and (notify_on_errors or record_on_errors):
app_error_code = get_app_error_code(response, data, 'json')

Soit on est dans le cas "appel webservice nommé" et on n'enregistre plus les erreurs applicatives (l'objet du ticket); soit pour les appels webservices dans les workflows on passe déjà notify_on_errors=False et record_on_errors=False donc on n'entrait pas là-dedans.

Soit on est dans le cas "appel webservice nommé" et on n'enregistre plus les erreurs applicatives (l'objet du ticket); soit pour les appels webservices dans les workflows on passe déjà notify_on_errors=False et record_on_errors=False donc on n'entrait pas là-dedans.
record_wscall_error(status, data, response, app_error_code, notify_on_errors, record_on_errors)
return (response, status, data)