nanterre: améliorer la gestion des erreurs dans les appels de WS à SAGA (fixes #18701)
* si pas 200, erreur, retourner un extrait du contenu * si pas XML, erreur, retourner un extrait du contenu * ne plus logger dans soap_call mais compter sur api_views.py pour le faire (c'est d'ailleurs fait)
This commit is contained in:
parent
5590604b38
commit
7dafbc6382
|
@ -231,7 +231,7 @@ def test_tiers_saga(app, settings, nanterre_classic_family):
|
|||
}
|
||||
)
|
||||
assert response.json['err'] == 1
|
||||
assert response.json['errors'] == [u'Ça va pas du tout']
|
||||
assert response.json['errors'] == [u'SAGA erreur: Ça va pas du tout']
|
||||
|
||||
response = app.post_json(
|
||||
reverse('rsu-api-saga-retour-asynchrone'),
|
||||
|
@ -240,4 +240,4 @@ def test_tiers_saga(app, settings, nanterre_classic_family):
|
|||
}
|
||||
)
|
||||
assert response.json['err'] == 1
|
||||
assert response.json['errors'] == [u'Ça va pas du tout']
|
||||
assert response.json['errors'] == [u'SAGA erreur: Ça va pas du tout']
|
||||
|
|
|
@ -69,17 +69,23 @@ class Saga(object):
|
|||
'SOAPAction': "'\"'\"",
|
||||
})
|
||||
except requests.RequestException as e:
|
||||
logging.getLogger(__name__).warning('impossible de contacter SAGA', exc_info=True)
|
||||
return None, unicode(repr(e))
|
||||
et = ET.fromstring(response.text)
|
||||
return None, u'SAGA connexion impossible: %r' % e
|
||||
|
||||
if response.status_code != 200:
|
||||
return None, u'SAGA response is not 200: %s %r' % (response.status_code,
|
||||
response.content[:1024])
|
||||
try:
|
||||
et = ET.fromstring(response.content)
|
||||
except:
|
||||
return None, u'SAGA invalid XML content: %r' % response.content[:1024]
|
||||
content_node = et.find('.//{%s}%s' % (self.ns, content_tag))
|
||||
if content_node is None:
|
||||
return None, 'no content node'
|
||||
return None, u'SAGA no content node: %r' % response.content[:1024]
|
||||
# pluging XML inside XML is so stupid :(
|
||||
tree = ET.fromstring(content_node.text.encode('utf-8'))
|
||||
|
||||
if tree.tag == 'erreur':
|
||||
return None, tree.text
|
||||
return None, u'SAGA erreur: %s' % tree.text
|
||||
|
||||
return tree, None
|
||||
|
||||
|
@ -94,7 +100,7 @@ class Saga(object):
|
|||
return None, error
|
||||
|
||||
if tree.tag != 'code_tiers_federe':
|
||||
return None, 'no code_tiers_federe node'
|
||||
return None, u'SAGA no code_tiers_federe node: %r' % ET.tostring(tree)
|
||||
return tree.text, None
|
||||
|
||||
def get_child_content(self, tree, child_name):
|
||||
|
@ -191,7 +197,7 @@ class Saga(object):
|
|||
return None, error
|
||||
|
||||
if tree.tag != 'url':
|
||||
return None, 'tag is not url'
|
||||
return None, u'SAGA tag is not url: %r' % ET.tostring(tree)
|
||||
|
||||
return tree.text, None
|
||||
|
||||
|
@ -206,11 +212,8 @@ class Saga(object):
|
|||
if tree is None:
|
||||
return None, error
|
||||
|
||||
if tree.tag == 'erreur':
|
||||
return None, tree.text
|
||||
|
||||
if tree.tag != 'ok':
|
||||
return None, 'tag is not ok'
|
||||
return None, u'SAGA tag is not ok: %r' % ET.tostring(tree)
|
||||
result = {
|
||||
'code_tiers': tree.attrib.get('code_tiers'),
|
||||
'etat': tree.attrib['etat'],
|
||||
|
@ -234,11 +237,8 @@ class Saga(object):
|
|||
if tree is None:
|
||||
return None, error
|
||||
|
||||
if tree.tag == 'erreur':
|
||||
return None, tree.text
|
||||
|
||||
if tree.tag != 'ok':
|
||||
return None, 'tag is not ok'
|
||||
return None, u'SAGA tag is not ok: %r' % ET.tostring(tree)
|
||||
result = {
|
||||
'code_tiers': tree.attrib.get('code_tiers'),
|
||||
'etat': tree.attrib['etat'],
|
||||
|
|
Loading…
Reference in New Issue