diff --git a/impression/digicode.py b/impression/digicode.py index 0e81dac1..eabb985c 100644 --- a/impression/digicode.py +++ b/impression/digicode.py @@ -52,6 +52,15 @@ if socket.gethostname() not in CODES_SERVERS: raise EnvironmentError("La manipulation des codes pour le digicode n'est possible que sur %s" % ', '.join(CODES_SERVERS)) +class CommunicationError(Exception): + pass + +def check_status(req): + status = req.status_code + if status != 200: + #TODO un peu plus d'info sur l'erreur + raise CommunicationError("Bad status from intranet: %d" % status) + # ############################### # save_code # ############################### @@ -61,6 +70,7 @@ def save_code(code, user_name): """enregistre le codes pour ``user_name``""" code = str(code) response = requests.post(CREATION_LINK + code, data={'password':digicode_pass, 'user':user_name}, verify=CERTIFICATE, timeout=2) + check_status(response) try: code = int(response.content) except (TypeError, ValueError): @@ -77,6 +87,7 @@ def save_code(code, user_name): def gen_code(user_name): """On contacte l'intranet 2 pour générer le code et on récupère le résultat""" response = requests.post(CREATION_LINK, data={'password':digicode_pass, 'user':user_name}, verify=CERTIFICATE, timeout=2) + check_status(response) return response.content @@ -91,6 +102,8 @@ def list_code(login=None): La liste est sous la forme [(code, age (en sec), contenu du fichier),...] """ response = requests.post(LIST_LINK + (login if login else ""), data={'password':digicode_pass}, verify=CERTIFICATE, timeout=2) + + check_status(response) code_list = [] for line in response.content.split('\n'): if line: