diff --git a/gestion/affich_tools.py b/gestion/affich_tools.py index 1fea9248..79772419 100644 --- a/gestion/affich_tools.py +++ b/gestion/affich_tools.py @@ -106,16 +106,19 @@ OK = coul('OK', 'vert') WARNING = coul('WARNING', 'jaune') ERREUR = coul('ERREUR', 'rouge') -def to_encoding(txt, enc=encoding): - if type(txt) == unicode: - return txt.encode(enc, 'ignore') +def to_unicode(txt, enc=encoding): + if isinstance(txt, unicode): + return txt else: # On suppose d'abord que le texte est en UTF-8 try: - return txt.decode("UTF-8").encode(enc, 'ignore') + return txt.decode("UTF-8") except: # Sinon c'est surement de l'iso - return txt.decode("ISO8859-15").encode(enc, 'ignore') + return txt.decode("ISO8859-15") + +def to_encoding(txt, enc=encoding): + return to_unicode(txt).encode(enc, 'ignore') def cprint(txt, col='blanc', newline=True): t = coul(to_encoding(txt), col) diff --git a/gestion/gest_crans.py b/gestion/gest_crans.py index d2c21c4f..2683237f 100644 --- a/gestion/gest_crans.py +++ b/gestion/gest_crans.py @@ -32,7 +32,7 @@ from time import strftime, strptime, localtime, mktime import re import affich_tools, config -from affich_tools import cprint, to_encoding +from affich_tools import cprint, to_encoding, to_unicode from lock import make_lock, remove_lock from ldap_crans import crans_ldap, blacklist_items, ann_scol, droits_possibles, droits_critiques, smtpserv, script_utilisateur from ldap_crans import Adherent, AssociationCrans, Club @@ -117,7 +117,7 @@ def set_bases(adher): # Des erreurs ? if err: arg = u'--title "Inscription adhérent" ' - arg += u'--msgbox "%s\n\n" 0 0' % err + arg += u'--msgbox "%s\n\n" 0 0' % to_unicode(err) dialog(arg) # On redemande return set_bases(adher) @@ -172,7 +172,7 @@ def set_addr_ext(adher): try: adher.adresse(result) except ValueError, c: arg = u'--title "Adresse extérieure de %s" ' % adher.Nom() - arg += u'--msgbox "%s\n\n\n" 0 0' % c.args[0] + arg += u'--msgbox "%s\n\n\n" 0 0' % to_unicode(c.args[0]) dialog(arg) # On redemande return set_addr_ext(adher) @@ -370,7 +370,7 @@ def set_etudes(adher): adher.etudes(etudes) except ValueError, c: arg = u'--title "Etudes de %s" ' % adher.Nom() - arg += u'--msgbox "%s\n\n\n" 0 0' % c.args[0] + arg += u'--msgbox "%s\n\n\n" 0 0' % to_unicode(c.args[0]) dialog(arg) return set_etudes(adher) @@ -427,7 +427,7 @@ def set_mail_ext(adher): try: adher.mail(result[0]) except ValueError, c: arg = u'--title "Adresse mail extérieure de %s" ' % adher.Nom() - arg += u'--msgbox "%s\n\n\n" 0 0' % c.args[0] + arg += u'--msgbox "%s\n\n\n" 0 0' % to_unicode(c.args[0]) dialog(arg) return set_mail_ext(adher) @@ -462,7 +462,7 @@ def set_etat_civil(adher): # Des erreurs ? if err: arg = u'--title "État-civil de %s" ' % adher.Nom() - arg += u'--msgbox "%s\n\n" 0 0' % err + arg += u'--msgbox "%s\n\n" 0 0' % to_unicode(err) dialog(arg) # On redemande return set_etat_civil(adher) @@ -538,7 +538,7 @@ def set_compte(adher): except ValueError, c: e = c.args[0] if e: arg = u'--title "Création compte crans pour %s" ' % adher.Nom() - arg += u'--msgbox "%s\n\n\n" 0 0' % e + arg += u'--msgbox "%s\n\n\n" 0 0' % to_unicode(e) dialog(arg) continue break @@ -786,7 +786,7 @@ def set_club_nom(club): club.Nom(res[0]) except ValueError, c: arg = u'--title "Nom club" ' - arg += u'--msgbox "%s\n\n\n" 0 0' % c.args[0] + arg += u'--msgbox "%s\n\n\n" 0 0' % to_unicode(c.args[0]) dialog(arg) def set_local(club): @@ -897,7 +897,7 @@ def __prompt_input_menu(method, titre, prompt): except ValueError, c: arg = u'--title "%s" ' % titre - arg += u'--msgbox "%s\n\n\n" 0 0' % c.args[0] + arg += u'--msgbox "%s\n\n\n" 0 0' % to_unicode(c.args[0]) dialog(arg) return __prompt_input_menu(method, titre, prompt) else: @@ -928,7 +928,7 @@ def set_solde(clas): break except ValueError, c: arg = u'--title "Opération impossible" ' - arg += u'--msgbox "%s\n\n\n" 0 0' % c.args[0] + arg += u'--msgbox "%s\n\n\n" 0 0' % to_unicode(c.args[0]) dialog(arg) def confirm(clas): @@ -946,7 +946,7 @@ def confirm(clas): res = clas.save() except RuntimeError, c: arg = u'--title "Enregistrement" ' - arg += u'--msgbox "%s\n\n\n" 0 0' % c.args[0] + arg += u'--msgbox "%s\n\n\n" 0 0' % to_unicode(c.args[0]) dialog(arg) return 1 @@ -1056,7 +1056,7 @@ def set_blackliste(clas): step += 1 except ValueError, c: arg = u'--title "Erreur" ' - arg += u'--msgbox "%s\n\n\n" 0 0' % c.args[0] + arg += u'--msgbox "%s\n\n\n" 0 0' % to_unicode(c.args[0]) dialog(arg) step -= 1 @@ -1429,7 +1429,7 @@ def set_wifi(machine): # Des erreurs ? if err: arg = u'--title "Paramètres machine wifi" ' - arg += u'--msgbox "%s\n\n" 0 0' % err + arg += u'--msgbox "%s\n\n" 0 0' % to_unicode(err) dialog(arg) # On redemande return set_wifi(machine) @@ -1533,7 +1533,7 @@ def set_machine(machine): # Des erreurs ? if err: arg = u'--title "Paramètres machine" ' - arg += u'--msgbox "%s\n\n" 0 0' % err + arg += u'--msgbox "%s\n\n" 0 0' % to_unicode(err) dialog(arg) # On redemande return set_machine(machine) @@ -1571,7 +1571,7 @@ def del_machine(machine): machine.delete(res[0]) except EnvironmentError, c: arg = u'--title "Destruction machine" ' - arg += u'--msgbox "ERREUR n°%s\n\n\n" 0 0' % c.args[0] + arg += u'--msgbox "ERREUR n°%s\n\n\n" 0 0' % to_unicode(c.args[0]) dialog(arg) return 1 @@ -1764,7 +1764,7 @@ def modif_adher(adher): break except ValueError, c: arg = u'--title "Changement numéro de téléphone de de %s" ' % adher.Nom() - arg += u'--msgbox "%s\n\n\n" 0 0' % c.args[0] + arg += u'--msgbox "%s\n\n\n" 0 0' % to_unicode(c.args[0]) dialog(arg) elif res[0] == 'Alias': @@ -1782,7 +1782,7 @@ def modif_adher(adher): break except ValueError, c: arg = u'--title "Changement du shell de %s" ' % adher.Nom() - arg += u'--msgbox "%s\n\n\n" 0 0' % c.args[0] + arg += u'--msgbox "%s\n\n\n" 0 0' % to_unicode(c.args[0]) dialog(arg) elif res[0] == 'Solde': @@ -2202,7 +2202,7 @@ def menu_principal(): becane = MachineWifi(proprio) except ValueError, c: arg = u'--title "Nouvelle machine" ' - arg += u'--msgbox "%s\n\n\n" 0 0' % c.args[0] + arg += u'--msgbox "%s\n\n\n" 0 0' % to_unicode(c.args[0]) dialog(arg) continue if set_machine(becane):