digicode: exception si http status ≠ 200

This commit is contained in:
Daniel STAN 2014-10-23 22:38:42 +02:00
parent 561f4b832c
commit 9a5c8352b9

View file

@ -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: