From 4d84fa1d3649f0b18a03b53b6f76f4867f55736b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bertrand=20N=C3=A9ron?= <bneron@pasteur.fr> Date: Thu, 21 Jan 2016 15:43:46 +0100 Subject: [PATCH] diferentiate the response when data are invalid than where ceredntials invalid when data are not valid a forbiden error is thrown and the message was not clear. know the 2 origin of erro data or credentials are treated separately and an improved message is displayed to the user --- src/parser/parser.py | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/src/parser/parser.py b/src/parser/parser.py index 68dced2..9bdc7de 100755 --- a/src/parser/parser.py +++ b/src/parser/parser.py @@ -211,7 +211,22 @@ def fill_db(server_uri, db_name, user, passwd, replicon_db, system_db, force_upd g[field] = value genes.append(g) secretion_system.genes = genes - secreton_db.save_doc(secretion_system, force_update=force_update) + try: + secreton_db.save_doc(secretion_system, force_update=force_update) + except restkit.errors.Unauthorized as err: + import re + reason = re.search('"reason":"(.*)"}$', err.message) + if reason: + reason = reason.groups()[0] + else: + reason = '' + import json + raise RuntimeError("Invalid data: {0} \ndata = \n{1}".format(reason, + json.dumps(secretion_system.to_json(), + indent=4) + ) + ) + if __name__ == '__main__': import argparse @@ -285,8 +300,9 @@ if __name__ == '__main__': replicon_db, system_db, force_update=args.force_update) break except restkit.errors.Unauthorized as err: - try_again += 1 - if try_again > 2: - sys.exit("Authentication failure") - except Exception as err: - sys.exit(2) + if err.status_int == 401: + try_again += 1 + if try_again > 2: + sys.exit("Authentication failure") + else: + raise err -- GitLab