From 7d0d6a8352b7cc151658360e6a2f19369a69b68b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pierre-Elliott=20B=C3=A9cue?= Date: Sun, 2 Feb 2014 23:51:39 +0100 Subject: [PATCH] =?UTF-8?q?[printing]=20Retour=20=C3=A0=20try=5Fimport?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit a79e0a4113c11e4ec02d191a9f9d8de5313aee13. Il vaut mieux laisser les imports en tête de fichier dans la mesure du possible. De plus, cette erreur est plus confortable, car l'apprenti sait dès le départ qu'il y a un problème. Enfin, ce bout de code try_import peut servir pour d'autres imports posant des problèmes. On prend cependant note que try_import pour annuaires_pg n'est pas utile. --- printing/templates.py | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/printing/templates.py b/printing/templates.py index c3c2ba3..9b5f385 100644 --- a/printing/templates.py +++ b/printing/templates.py @@ -1,13 +1,36 @@ #!/bin/bash /usr/scripts/python.sh # -*- coding: utf-8 -*- from gestion.affich_tools import coul, tableau +import importlib import time import sys -import gestion.annuaires_pg + +# Import inutile, mais on en a besoin pour que le +# script continue à fonctionner. +import gestion + +def try_import(lib): + """ + Cette fonction sert à faire de l'import soft : si l'import + crashe, par exemple, si le fichier de secrets ne peut être + lu par un apprenti, ça permet toujours d'utiliser ce + qui n'utilise pas l'import raté. + """ + if not isinstance(lib, unicode): + lib = lib.decode('utf-8') + try: + lib = importlib.import_module(lib) + except: + if sys.stdout.isatty(): + print (u"Impossible d'importer %s, c'est sans doute un problème de droits." % lib).encode('utf-8') + lib = None + return lib + +# Ici, on utilise le module gestion importé +gestion.whos = try_import(u"gestion.whos") +gestion.annuaires_pg = try_import("gestion.annuaires_pg") def prise_etat(chbre): - # Il faut écrire une vrai fonction pour ça au lieu d'utiliser celle du vieux whos cf Jeudi28Novembre2013 - import gestion.whos if chbre=="????": return coul("Chambre invalide", "violet") return gestion.whos.prise_etat(chbre)[0]