[ldap_crans.py] pylint++, retrait de l'horrible fonction strip_accents

Ignore-this: 3465477d91f2a479c05d6bd0a9ff82ea

darcs-hash:20090317171804-bd074-d1db979293761b83029ed93e912985362749c6d5.gz
This commit is contained in:
Antoine Durand-Gasselin 2009-03-17 18:18:04 +01:00
parent 59ba62490d
commit 90255b53ee

View file

@ -13,12 +13,13 @@ from socket import gethostname
import smtplib, re, os, random, string, time, sys, pwd import smtplib, re, os, random, string, time, sys, pwd
import ldap, ldap.modlist, ldap_passwd import ldap, ldap.modlist, ldap_passwd
import config, annuaires, iptools, chgpass, cPickle, config_mail import config, annuaires, iptools, cPickle, config_mail
from chgpass import chgpass from chgpass import chgpass
from affich_tools import coul, prompt, cprint from affich_tools import coul, prompt, cprint
from email_tools import send_email from email_tools import send_email
from syslog import * from syslog import openlog, closelog, syslog
from numeros_disponibles import lister_ip_dispo from numeros_disponibles import lister_ip_dispo
from unicodedata import normalize
date_format = '%d/%m/%Y %H:%M' date_format = '%d/%m/%Y %H:%M'
hostname = gethostname().split(".")[0] hostname = gethostname().split(".")[0]
@ -113,17 +114,10 @@ def decode(s):
else: else:
return s.decode('utf-8', 'ignore') # On ignore les erreurs return s.decode('utf-8', 'ignore') # On ignore les erreurs
accents = "êëèéÉÈÀÙâäàûüôöÖÔîïÎÏ'çÇÿßæÆøØ" # Si modif ici modifier aussi la fonction
def strip_accents(a): def strip_accents(a):
""" Supression des accents de la chaîne fournie """ """ Supression des accents de la chaîne fournie """
a = a.replace(u'ê','e').replace(u'ë','e').replace(u'è','e').replace(u'é','e').replace(u'É','e').replace(u'È','e') res = normalize('NFKD', decode(a)).encode('ASCII', 'ignore')
a = a.replace(u'â','a').replace(u'ä','a').replace(u'à','a').replace(u'À','a') return res.replace(' ', '_').replace("'", '')
a = a.replace(u'û','u').replace(u'ü','u').replace(u'ù','u').replace(u'Ù','u')
a = a.replace(u'ô','o').replace(u'ö','o').replace(u'Ö','o').replace(u'Ô','o')
a = a.replace(u'î','i').replace(u'ï','i').replace(u'Ï','i').replace(u'Î','i')
a = a.replace(' ','_').replace(u"'",'').replace(u'ç','c').replace(u'Ç','c')
a = a.replace(u'ÿ','y').replace(u'ß','ss').replace(u'æ','ae').replace(u'Æ','ae').replace(u'ø','o').replace(u'Ø','o')
return a
def mailexist(mail): def mailexist(mail):
""" """
@ -148,7 +142,7 @@ def preattr(val):
val est : val est :
* un entier * un entier
* une chaîne * une chaîne
* une liste avec un seul entier ou une seule cha-Aîne-b * une liste avec un seul entier ou une seule chaîne
Retourne [ len(str(val).strip), str(val).strip en utf-8 ] Retourne [ len(str(val).strip), str(val).strip en utf-8 ]
""" """
@ -507,7 +501,8 @@ class CransLdap:
if time.time() < int(date): if time.time() < int(date):
keep_date.append(date) keep_date.append(date)
if keep_date: if keep_date:
self.conn.modify_s(remove_dn, ldap.modlist.modifyModlist({'start': serv_dates[new[1:]]}, { 'start': keep_date })) mods = [{'start': serv_dates[new[1:]]}, { 'start': keep_date }]
self.conn.modify_s(remove_dn, ldap.modlist.modifyModlist(*mods))
remove_dn = None remove_dn = None
if remove_dn: if remove_dn:
@ -1231,11 +1226,15 @@ class BaseClasseCrans(CransLdap):
# Sauvegarde # Sauvegarde
t = str(self.__class__).split('.')[-1] t = str(self.__class__).split('.')[-1]
fd = open('%s/%s/%s_%s' % (config.cimetiere, t, time.strftime('%Y-%m-%d-%H:%M'), self.nom()), 'wb') fd = open('%s/%s/%s_%s' % (config.cimetiere, t,
time.strftime('%Y-%m-%d-%H:%M'),
self.nom()), 'wb')
self.conn = None # Fermeture des connexions à la base sinon cPickle ne marchera pas self.conn = None # Fermeture des connexions à la base sinon cPickle ne marchera pas
cPickle.dump(self, fd, 2) cPickle.dump(self, fd, 2)
fd.close() fd.close()
index = u"%s, %s : %s %s # %s\n" % (time.strftime(date_format), script_utilisateur, t, self.Nom() , decode(comment)) index = u"%s, %s : %s %s # %s\n" % (time.strftime(date_format),
script_utilisateur, t,
self.Nom(), decode(comment))
self.connect() # Reconnexion à la base self.connect() # Reconnexion à la base
# Destruction # Destruction
@ -1808,11 +1807,11 @@ class Adherent(BaseProprietaire):
new = new.capitalize() new = new.capitalize()
for c in new[:]: for c in new[:]:
if c not in (string.letters + '- ' + preattr(accents)[1] ): if c not in (string.letters + '- ' + preattr(accents)[1] ):
raise ValueError(u"Seuls les caractères alphabétiques, l'espace et le - sont permis dans %s." % champ.replace(u'e', u'é') ) raise ValueError(u"Seuls les caractères alphabétiques, l'espace et le - sont permis dans %s." % champ)
if l<2: if l<2:
raise ValueError(u"%s trop court." % champ.capitalize().replace(u'e', u'é')) raise ValueError(u"%s trop court." % champ)
if new[0] not in string.letters: if new[0] not in string.letters:
raise ValueError(u"Le premier caractère du %s doit être une lettre" % champ.replace(u'e', u'é') ) raise ValueError(u"Le premier caractère du %s doit être une lettre" % champ)
self._set(champ, [new]) self._set(champ, [new])
if self._data.has_key('gecos'): if self._data.has_key('gecos'):
@ -2637,7 +2636,10 @@ class Machine(BaseClasseCrans):
raise RuntimeError(u"Fichier de fabriquants de MAC non trouvé !") raise RuntimeError(u"Fichier de fabriquants de MAC non trouvé !")
if not multi_ok and not vendor: if not multi_ok and not vendor:
raise ValueError(u"Le constructeur correspondant à cette adresse MAC ne peut être trouvé.\nL'adresse MAC correspond peut-être à un pont réseau, désactivez ce pont réseau.\nContactez nounou si la MAC est bien celle d'une carte.", 3) raise ValueError(
u"""Le constructeur correspondant à cette adresse MAC ne peut être trouvé.
L'adresse MAC correspond peut-être à un pont réseau, désactivez ce pont réseau.
Contactez nounou si la MAC est bien celle d'une carte.""", 3)
# Lock de la mac # Lock de la mac
self.lock('macAddress', mac) self.lock('macAddress', mac)
@ -3475,7 +3477,10 @@ class Facture(BaseClasseCrans):
# modifie la liste des articles # modifie la liste des articles
if arts != None: if arts != None:
self._set('article',['%s~~%s~~%s~~%s' % (art['code'],art['designation'],str(art['nombre']),str(art['pu'])) for art in arts]) self._set('article',
['%s~~%s~~%s~~%s' % (art['code'], art['designation'],
str(art['nombre']), str(art['pu']))
for art in arts])
# charge la liste des articles # charge la liste des articles
arts = [] arts = []
@ -3558,7 +3563,8 @@ class Facture(BaseClasseCrans):
s += art['nombre'] * art['pu'] s += art['nombre'] * art['pu']
return s return s
def urlPaypal(self, useSandbox = False, businessMail = "paypal@crans.org", return_page=None, cancel_return_page=None): def urlPaypal(self, useSandbox = False, businessMail = "paypal@crans.org",
return_page=None, cancel_return_page=None):
""" """
Retourne l'url paypal pour le paiement de cette facture Retourne l'url paypal pour le paiement de cette facture
""" """