[ldap_crans] revert...
darcs-hash:20100904135012-ffbb2-55f54088578faae5eb741cdce9d627d843e3666b.gz
This commit is contained in:
parent
b19d9cc71b
commit
36bb207274
1 changed files with 115 additions and 115 deletions
|
@ -38,7 +38,7 @@ cur_user = os.getenv('SUDO_USER') or pwd.getpwuid(os.getuid())[0]
|
|||
|
||||
if __name__ == 'ldap_crans_test' or os.environ.get('crans_ldap', '') == 'test':
|
||||
if hostname != "vo":
|
||||
raise ImportError(coul("La base de test n'est accessible que depuis vo !", "rouge"))
|
||||
raise ImportError, coul("La base de test n'est accessible que depuis vo !", "rouge")
|
||||
# Utilisation de la base de données de test (tests, séminaire...)
|
||||
# Il faut au choix :
|
||||
# - faire un import crans_ldap_test
|
||||
|
@ -158,7 +158,7 @@ def mailexist(mail):
|
|||
r = s.getreply()[0] in [250, 252]
|
||||
s.close()
|
||||
except:
|
||||
raise ValueError('Serveur de mail injoignable')
|
||||
raise ValueError(u'Serveur de mail injoignable')
|
||||
|
||||
return r
|
||||
|
||||
|
@ -218,12 +218,12 @@ def format_mac(mac):
|
|||
map(lambda x: "%02s" % x, mac.split(":"))))
|
||||
mac = mac.replace(':', '').lower()
|
||||
if len(mac) != 12:
|
||||
raise ValueError("Longueur de l'adresse mac incorrecte.")
|
||||
raise ValueError(u"Longueur de l'adresse mac incorrecte.")
|
||||
for c in mac[:]:
|
||||
if c not in string.hexdigits:
|
||||
raise ValueError("Caractère interdit '%s' dans l'adresse mac." % c)
|
||||
raise ValueError(u"Caractère interdit '%s' dans l'adresse mac." % c)
|
||||
if mac == '000000000000':
|
||||
raise ValueError("MAC nulle interdite\nIl doit être possible de modifier l'adresse de la carte.")
|
||||
raise ValueError(u"MAC nulle interdite\nIl doit être possible de modifier l'adresse de la carte.")
|
||||
|
||||
# Formatage
|
||||
mac = "%s:%s:%s:%s:%s:%s" % (mac[:2], mac[2:4], mac[4:6], mac[6:8], mac[8:10], mac[10:])
|
||||
|
@ -247,16 +247,16 @@ def validate_mail(mail, crans_allowed=False):
|
|||
if mail.count('@') != 1 \
|
||||
or not ( l-b >= 2 and l-b <= 4) \
|
||||
or a < 1 or b-a < 2:
|
||||
raise ValueError("Adresse mail incorrecte.")
|
||||
raise ValueError(u"Adresse mail incorrecte.")
|
||||
|
||||
# Pas de caractèrs bizarres
|
||||
for l in mail[:]:
|
||||
if not l in (string.lowercase + string.digits + '-_.@'):
|
||||
raise ValueError("Caractère interdit dans l'adresse mail (%s)." % l)
|
||||
raise ValueError(u"Caractère interdit dans l'adresse mail (%s)." % l)
|
||||
|
||||
# Pour les vicieux
|
||||
if not crans_allowed and mail.endswith(('crans.org','crans.ens-cachan.fr')):
|
||||
raise ValueError("Adresse mail @crans interdite ici !")
|
||||
raise ValueError(u"Adresse mail @crans interdite ici !")
|
||||
|
||||
# On enlève les blacklistes mail_invalide
|
||||
return mail
|
||||
|
@ -480,7 +480,7 @@ class CransLdap:
|
|||
# Il ne tourne plus
|
||||
self.remove_lock(res[0]) # delock
|
||||
return self.lock(item, valeur) # relock
|
||||
raise EnvironmentError('Objet (%s=%s) locké, patienter.' % (item, valeur), l)
|
||||
raise EnvironmentError(u'Objet (%s=%s) locké, patienter.' % (item, valeur), l)
|
||||
else:
|
||||
if not hasattr(self, '_locks'):
|
||||
self._locks = [lock_dn]
|
||||
|
@ -635,7 +635,7 @@ class CransLdap:
|
|||
# On crée l'objet
|
||||
return classe(entry, mode, self.conn)
|
||||
except:
|
||||
raise ValueError("Impossible de créer l'objet %s" % nom_classe)
|
||||
raise ValueError(u"Impossible de créer l'objet %s" % nom_classe)
|
||||
|
||||
|
||||
def search(self, expression, mode=''):
|
||||
|
@ -658,7 +658,7 @@ class CransLdap:
|
|||
elif type(expression) == unicode:
|
||||
expression = expression.encode('utf-8')
|
||||
else:
|
||||
raise TypeError('Chaîne attendue')
|
||||
raise TypeError(u'Chaîne attendue')
|
||||
|
||||
if not expression:
|
||||
return []
|
||||
|
@ -745,7 +745,7 @@ class CransLdap:
|
|||
champ = champ[:-1]
|
||||
neg = True
|
||||
except:
|
||||
raise ValueError('Syntaxe de recherche invalide (%s)' % cond)
|
||||
raise ValueError(u'Syntaxe de recherche invalide (%s)' % cond)
|
||||
|
||||
# Transformation de certains champs
|
||||
champ = self.trans.get(champ, champ)
|
||||
|
@ -770,7 +770,7 @@ class CransLdap:
|
|||
filtre_seul[i] = True
|
||||
|
||||
if not ok:
|
||||
raise ValueError('Champ de recherche inconnu (%s)' % champ)
|
||||
raise ValueError(u'Champ de recherche inconnu (%s)' % champ)
|
||||
|
||||
## Recherche avec chacun des filtres
|
||||
r = {} # contiendra les réponses par filtre
|
||||
|
@ -1017,7 +1017,7 @@ class BaseClasseCrans(CransLdap):
|
|||
debut = new[0] = int(time.time())
|
||||
else:
|
||||
try: debut = new[0] = int(new[0])
|
||||
except: raise ValueError('Date de début blacklist invalide')
|
||||
except: raise ValueError(u'Date de début blacklist invalide')
|
||||
|
||||
if new[1] == 'now':
|
||||
fin = new[1] = int(time.time())
|
||||
|
@ -1025,12 +1025,12 @@ class BaseClasseCrans(CransLdap):
|
|||
fin = -1
|
||||
else:
|
||||
try: fin = new[1] = int(new[1])
|
||||
except: raise ValueError('Date de fin blacklist invalide')
|
||||
except: raise ValueError(u'Date de fin blacklist invalide')
|
||||
|
||||
if debut == fin:
|
||||
raise ValueError('Dates de début et de fin identiques')
|
||||
raise ValueError(u'Dates de début et de fin identiques')
|
||||
elif fin != -1 and debut > fin:
|
||||
raise ValueError('Date de fin avant date de début')
|
||||
raise ValueError(u'Date de fin avant date de début')
|
||||
|
||||
# On dépasse la fin de sanction d'1min pour être sûr qu'elle est périmée.
|
||||
fin = fin + 60
|
||||
|
@ -1270,13 +1270,13 @@ class BaseClasseCrans(CransLdap):
|
|||
else:
|
||||
### Modification entrée
|
||||
if not self._modifiable:
|
||||
raise RuntimeError('Objet non modifiable : %s' % str(self))
|
||||
raise RuntimeError(u'Objet non modifiable : %s' % str(self))
|
||||
modlist = ldap.modlist.modifyModlist(self._init_data, self._data)
|
||||
try:
|
||||
self.conn.modify_s(self.dn, modlist)
|
||||
except ldap.TYPE_OR_VALUE_EXISTS, c:
|
||||
champ = c.args[0]['info'].split(':')[0]
|
||||
raise RuntimeError('Entrée en double dans le champ %s' % champ)
|
||||
raise RuntimeError(u'Entrée en double dans le champ %s' % champ)
|
||||
|
||||
# l'ip change, le mid aussi...
|
||||
if 'ipHostNumber' in self.modifs:
|
||||
|
@ -1443,14 +1443,14 @@ class BaseProprietaire(BaseClasseCrans):
|
|||
l, new = preattr(new)
|
||||
new = new.lower()
|
||||
if l < 2:
|
||||
raise ValueError("Alias trop court.")
|
||||
raise ValueError(u"Alias trop court.")
|
||||
for c in new[:]:
|
||||
if not c in (string.letters + string.digits + '-_.'):
|
||||
raise ValueError("Alias : seuls les caractères alphanumériques, le -, le _ et le . sont autorisés." )
|
||||
raise ValueError(u"Alias : seuls les caractères alphanumériques, le -, le _ et le . sont autorisés." )
|
||||
if new[0] not in string.letters:
|
||||
raise ValueError("Le premier caractère de l'alias doit être alphabétique.")
|
||||
raise ValueError(u"Le premier caractère de l'alias doit être alphabétique.")
|
||||
if mailexist(new):
|
||||
raise ValueError("Alias existant ou correspondand à un compte.")
|
||||
raise ValueError(u"Alias existant ou correspondand à un compte.")
|
||||
|
||||
if index != -1:
|
||||
liste[index] = new
|
||||
|
@ -1570,11 +1570,11 @@ class BaseProprietaire(BaseClasseCrans):
|
|||
try:
|
||||
new = solde + float(str(operation).replace(',', '.'))
|
||||
except ValueError:
|
||||
raise ValueError("Il faut donner un nombre en argument.")
|
||||
raise ValueError(u"Il faut donner un nombre en argument.")
|
||||
|
||||
# découvert accepté
|
||||
if new < config.impression.decouvert:
|
||||
raise ValueError("Solde minimal atteint, opération non effectuée.")
|
||||
raise ValueError(u"Solde minimal atteint, opération non effectuée.")
|
||||
|
||||
self._set('solde', [str(new)], comment)
|
||||
return new
|
||||
|
@ -1632,7 +1632,7 @@ class BaseProprietaire(BaseClasseCrans):
|
|||
|
||||
# si l'adhérent n'a pas de compte, on lève une exception
|
||||
if not self.compte():
|
||||
raise NotImplementedError("L'adhérent n'a pas de compte")
|
||||
raise NotImplementedError, u"L'adhérent n'a pas de compte"
|
||||
|
||||
# tente de modifier la valeur
|
||||
if contourneGreylist == True:
|
||||
|
@ -1640,7 +1640,7 @@ class BaseProprietaire(BaseClasseCrans):
|
|||
elif contourneGreylist == False:
|
||||
self._set('contourneGreylist', [])
|
||||
elif contourneGreylist != None:
|
||||
raise ValueError("contourneGreylist prend un booléen comme argument")
|
||||
raise ValueError, u"contourneGreylist prend un booléen comme argument"
|
||||
|
||||
# renvoie la valeur trouvée dans la base
|
||||
return bool(self._data.get('contourneGreylist', []))
|
||||
|
@ -1651,7 +1651,7 @@ class BaseProprietaire(BaseClasseCrans):
|
|||
ou False si le mot de passe n'est pas bon.
|
||||
"""
|
||||
if not self.compte():
|
||||
raise NotImplementedError("L'adhérent n'a pas de compte")
|
||||
raise NotImplementedError, u"L'adhérent n'a pas de compte"
|
||||
return ldap_passwd.checkpwd(passwd, self._data['userPassword'][0])
|
||||
|
||||
def changePasswd(self, passwd):
|
||||
|
@ -1659,7 +1659,7 @@ class BaseProprietaire(BaseClasseCrans):
|
|||
Modifie le mot de passe de l'adhérent
|
||||
"""
|
||||
if not self.compte():
|
||||
raise NotImplementedError("L'adhérent n'a pas de compte")
|
||||
raise NotImplementedError, u"L'adhérent n'a pas de compte"
|
||||
self._set('userPassword', [ldap_passwd.mkpasswd(passwd)])
|
||||
|
||||
def forward(self, new = None):
|
||||
|
@ -1669,7 +1669,7 @@ class BaseProprietaire(BaseClasseCrans):
|
|||
sinon cette metode ne fonctionnera pas
|
||||
"""
|
||||
if not self.compte():
|
||||
raise NotImplementedError("L'adhérent n'a pas de compte")
|
||||
raise NotImplementedError, u"L'adhérent n'a pas de compte"
|
||||
return config_mail.MailConfig(uid=self._data['uid'][0], forward = new)['forward']
|
||||
|
||||
def spam(self, new = None):
|
||||
|
@ -1680,20 +1680,20 @@ class BaseProprietaire(BaseClasseCrans):
|
|||
sinon cette metode ne fonctionnera pas
|
||||
"""
|
||||
if not self.compte():
|
||||
raise NotImplementedError("L'adhérent n'a pas de compte")
|
||||
raise NotImplementedError, u"L'adhérent n'a pas de compte"
|
||||
return config_mail.MailConfig(uid=self._data['uid'][0], spam = new)['spam']
|
||||
|
||||
def home(self):
|
||||
""" Retourne le home de l'adhérent """
|
||||
if not self.compte():
|
||||
raise NotImplementedError("L'adhérent n'a pas de compte")
|
||||
raise NotImplementedError, u"L'adhérent na pas de compte"
|
||||
|
||||
return self._data['homeDirectory'][0]
|
||||
|
||||
def uidNumber(self, new=None):
|
||||
""" Retourne ou change l'uidNumber de l'adhérent """
|
||||
if not self.compte():
|
||||
raise NotImplementedError("L'adhérent na pas de compte")
|
||||
raise NotImplementedError, u"L'adhérent na pas de compte"
|
||||
if new == None:
|
||||
return self._data['uidNumber'][0]
|
||||
else:
|
||||
|
@ -1944,11 +1944,11 @@ class Adherent(BaseProprietaire):
|
|||
new = new.capitalize()
|
||||
for c in strip_accents(new[:]):
|
||||
if c not in (string.letters + '- '):
|
||||
raise ValueError("Seuls les caractères alphabétiques, l'espace et le - sont permis dans %s." % champ)
|
||||
raise ValueError(u"Seuls les caractères alphabétiques, l'espace et le - sont permis dans %s." % champ)
|
||||
if l<2:
|
||||
raise ValueError("%s trop court." % champ)
|
||||
raise ValueError(u"%s trop court." % champ)
|
||||
if new[0] not in string.letters:
|
||||
raise ValueError("Le premier caractère du %s doit être une lettre" % champ)
|
||||
raise ValueError(u"Le premier caractère du %s doit être une lettre" % champ)
|
||||
|
||||
self._set(champ, [new])
|
||||
if self._data.has_key('gecos'):
|
||||
|
@ -1963,7 +1963,7 @@ class Adherent(BaseProprietaire):
|
|||
if new != 'inconnu':
|
||||
l, new = preattr(new)
|
||||
if not new.isdigit() or l < 6 or l > 15:
|
||||
raise ValueError("Numéro de téléphone incorrect (il doit comporter uniquement des chiffres).")
|
||||
raise ValueError(u"Numéro de téléphone incorrect (il doit comporter uniquement des chiffres).")
|
||||
|
||||
self._set('tel', [new])
|
||||
return new
|
||||
|
@ -1977,14 +1977,14 @@ class Adherent(BaseProprietaire):
|
|||
|
||||
l, new = preattr(new)
|
||||
if l == 0:
|
||||
raise ValueError("Chambre incorrecte.")
|
||||
raise ValueError(u"Chambre incorrecte.")
|
||||
|
||||
if new.upper() == 'EXT':
|
||||
# N'est pas ou plus sur le campus
|
||||
# Machine fixe ?
|
||||
# for m in self.machines():
|
||||
# if not isinstance(m, MachineWifi):
|
||||
# raise ValueError('Un adhérent en dehors du campus ne doit pas avoir de machine fixe.')
|
||||
# raise ValueError(u'Un adhérent en dehors du campus ne doit pas avoir de machine fixe.')
|
||||
|
||||
self._set('chbre', ['EXT'])
|
||||
return 'EXT'
|
||||
|
@ -2001,7 +2001,7 @@ class Adherent(BaseProprietaire):
|
|||
chbres = annuaires.chbre_prises(bat).keys()
|
||||
if new[1:] not in chbres or len(new)<4 or not new[1:4].isdigit():
|
||||
chbres.sort()
|
||||
aide = "Chambre inconnue dans le bâtiment, les chambres valides sont :"
|
||||
aide = u"Chambre inconnue dans le batiment, les chambres valides sont :"
|
||||
a = 0
|
||||
for c in chbres:
|
||||
if len(c)>=3 and not c[:3].isdigit():
|
||||
|
@ -2011,23 +2011,23 @@ class Adherent(BaseProprietaire):
|
|||
if c[0] != 'X':
|
||||
aide += c.ljust(5)
|
||||
a = a+1
|
||||
aide += '\n'
|
||||
aide += u'\n'
|
||||
raise ValueError(aide)
|
||||
|
||||
else:
|
||||
raise ValueError('Bâtiment inconnu.')
|
||||
raise ValueError(u'Bâtiment inconnu.')
|
||||
|
||||
# La chambre est valide, est-elle déja occupée ?
|
||||
test = self.exist('chbre=%s' % new)
|
||||
if test:
|
||||
search = test[0].split(',')[0]
|
||||
if search.split('=')[0] != 'aid':
|
||||
raise ValueError('Chambre déjà occupée.')
|
||||
raise ValueError(u'Chambre déjà occupée.')
|
||||
adh = self.search(search, self._modifiable)['adherent']
|
||||
if len(adh) != 1:
|
||||
raise ValueError('Chambre déjà occupée.')
|
||||
raise ValueError(u'Chambre déjà occupée.')
|
||||
else:
|
||||
raise ValueError('Chambre déjà occupée.', adh[0])
|
||||
raise ValueError(u'Chambre déjà occupée.', adh[0])
|
||||
|
||||
# Lock de la chambre
|
||||
self.lock('chbre', new)
|
||||
|
@ -2056,7 +2056,7 @@ class Adherent(BaseProprietaire):
|
|||
l_min = [ 2, 0, 5, 2 ]
|
||||
for i in range(0, 4):
|
||||
l, new[i] = preattr(new[i])
|
||||
if l < l_min[i]: raise ValueError("Adresse incorrecte.")
|
||||
if l < l_min[i]: raise ValueError(u"Adresse incorrecte.")
|
||||
|
||||
# Correction si necessaire
|
||||
if not new[1]:
|
||||
|
@ -2141,7 +2141,7 @@ class Adherent(BaseProprietaire):
|
|||
return False
|
||||
|
||||
else:
|
||||
raise ValueError('mail_invalide ne peut prendre que None ou False en argument')
|
||||
raise ValueError, u'mail_invalide ne peut prendre que None ou False en argument'
|
||||
|
||||
def charteMA(self, valeur=None):
|
||||
"""
|
||||
|
@ -2154,7 +2154,7 @@ class Adherent(BaseProprietaire):
|
|||
elif valeur == False:
|
||||
self._set('charteMA', [])
|
||||
elif valeur != None:
|
||||
raise ValueError("charteMA prend un booléen comme argument")
|
||||
raise ValueError, u"charteMA prend un booléen comme argument"
|
||||
|
||||
# renvoie la valeur trouvée dans la base
|
||||
return bool(self._data.get('charteMA', []))
|
||||
|
@ -2171,7 +2171,7 @@ class Adherent(BaseProprietaire):
|
|||
set_to = ['FALSE']
|
||||
self._set('adherentPayant', set_to)
|
||||
elif valeur is not None:
|
||||
raise ValueError("adherentPayant prend un booléen comme argument")
|
||||
raise ValueError, u"adherentPayant prend un booléen comme argument"
|
||||
|
||||
# bool d'une liste non vide est true, on inverse donc (la base ne peut contenir que FALSE)
|
||||
return not bool(self._data.get('adherentPayant', []))
|
||||
|
@ -2210,13 +2210,13 @@ class Adherent(BaseProprietaire):
|
|||
|
||||
# Pas grand chose à faire à part vérifier que ce sont bien des chaines
|
||||
if len(index_or_new) != 3:
|
||||
raise ValueError("Format études non valides.")
|
||||
raise ValueError(u"Format études non valides.")
|
||||
|
||||
new = ['', '', '']
|
||||
for i in range(0, 3):
|
||||
n = preattr(index_or_new[i])[1]
|
||||
if n in new or n == '':
|
||||
raise ValueError("Etudes non valides.")
|
||||
raise ValueError(u"Etudes non valides.")
|
||||
new[i] = n
|
||||
|
||||
self._set('etudes', new)
|
||||
|
@ -2263,34 +2263,34 @@ class Adherent(BaseProprietaire):
|
|||
login = login.lower()
|
||||
|
||||
if login and not self.adherentPayant():
|
||||
raise ValueError("L'adhérent ne paie pas de cotisation, il n'a pas droit à un compte.")
|
||||
raise ValueError(u"L'adhérent ne paie pas de cotisation, il n'a pas droit à un compte.")
|
||||
|
||||
if 'posixAccount' in self._data['objectClass']:
|
||||
if login != self._data['uid']:
|
||||
# A déja un compte
|
||||
raise ValueError("L'adhérent à déjà un compte. Login : %s" % self._data['uid'][0])
|
||||
raise ValueError(u"L'adhérent à déjà un compte. Login : %s" % self._data['uid'][0])
|
||||
else:
|
||||
return login
|
||||
|
||||
for c in login[:]:
|
||||
if not c in (string.letters + '-'):
|
||||
raise ValueError("Seuls les caractères alphabétiques non accentués et le - sont autorisés dans le login.")
|
||||
raise ValueError(u"Seuls les caractères alphabétiques non accentués et le - sont autorisés dans le login.")
|
||||
if l < 2:
|
||||
raise ValueError("Login trop court.")
|
||||
raise ValueError(u"Login trop court.")
|
||||
if l > config.maxlen_login:
|
||||
raise ValueError("Login trop long.")
|
||||
raise ValueError(u"Login trop long.")
|
||||
if login[0] == '-':
|
||||
raise ValueError("- interdit en première position.")
|
||||
raise ValueError(u"- interdit en première position.")
|
||||
|
||||
if mailexist(login):
|
||||
raise ValueError("Login existant ou correspondant à un alias mail.", 1)
|
||||
raise ValueError(u"Login existant ou correspondant à un alias mail.", 1)
|
||||
|
||||
home = '/home/' + login
|
||||
if os.path.exists(home):
|
||||
raise ValueError('Création du compte impossible : home existant', 1)
|
||||
raise ValueError(u'Création du compte impossible : home existant', 1)
|
||||
|
||||
if os.path.exists("/var/mail/" + login):
|
||||
raise ValueError('Création du compte impossible : /var/mail/%s existant' % login, 1)
|
||||
raise ValueError(u'Création du compte impossible : /var/mail/%s existant' % login, 1)
|
||||
|
||||
# Lock du mail
|
||||
self.lock('mail', login)
|
||||
|
@ -2317,7 +2317,7 @@ class Adherent(BaseProprietaire):
|
|||
|
||||
if uidNumber:
|
||||
if self.exist('(uidNumber=%s)' % uidNumber):
|
||||
raise ValueError('uidNumber pris')
|
||||
raise ValueError(u'uidNumber pris')
|
||||
else:
|
||||
pool_uid = range(1001, 9999)
|
||||
random.shuffle(pool_uid)
|
||||
|
@ -2328,7 +2328,7 @@ class Adherent(BaseProprietaire):
|
|||
pool_uid.append(uidNumber)
|
||||
break
|
||||
if not len(pool_uid):
|
||||
raise ValueError("Plus d'uid disponibles !")
|
||||
raise ValueError(u"Plus d'uid disponibles !")
|
||||
|
||||
try:
|
||||
self.lock('uidNumber', str(uidNumber))
|
||||
|
@ -2370,7 +2370,7 @@ class Adherent(BaseProprietaire):
|
|||
light permet de modifier les droits non critiques sans être Nounou."""
|
||||
|
||||
if droits != None and 'cransAccount' not in self._data.get('objectClass', []):
|
||||
raise EnvironmentError('Il faut avoir un compte pour avoir des droits.')
|
||||
raise EnvironmentError(u'Il faut avoir un compte pour avoir des droits.')
|
||||
|
||||
if droits == None:
|
||||
return map(decode, self._data.get('droits', []))
|
||||
|
@ -2379,18 +2379,18 @@ class Adherent(BaseProprietaire):
|
|||
if not light:
|
||||
from user_tests import isadm
|
||||
if not isadm():
|
||||
raise EnvironmentError('Il faut être administrateur pour effectuer cette opération.')
|
||||
raise EnvironmentError(u'Il faut être administrateur pour effectuer cette opération.')
|
||||
|
||||
# On vérifie la liste donnée
|
||||
if type(droits) != list:
|
||||
raise TypeError('Une liste est attendue')
|
||||
raise TypeError(u'Une liste est attendue')
|
||||
|
||||
new = []
|
||||
for droit in droits:
|
||||
droit = droit.strip()
|
||||
if droit == '': continue
|
||||
if droit not in droits_possibles:
|
||||
raise ValueError('Droit %s incorrect' % droit)
|
||||
raise ValueError(u'Droit %s incorrect' % droit)
|
||||
new.append(droit)
|
||||
|
||||
ancien = self._data.get('droits', [])
|
||||
|
@ -2435,7 +2435,7 @@ class Adherent(BaseProprietaire):
|
|||
|
||||
# si l'adhérent n'a pas de compte, on lève une exception
|
||||
if not self.compte():
|
||||
raise NotImplementedError("L'adhérent n'a pas de compte")
|
||||
raise NotImplementedError, u"L'adhérent n'a pas de compte"
|
||||
|
||||
# tente de modifier la valeur
|
||||
if rewrite == True:
|
||||
|
@ -2443,7 +2443,7 @@ class Adherent(BaseProprietaire):
|
|||
elif rewrite == False:
|
||||
self._set('rewriteMailHeaders', [])
|
||||
elif rewrite != None:
|
||||
raise ValueError("rewriteMailHeaders prend un booléen comme argument")
|
||||
raise ValueError, u"rewriteMailHeaders prend un booléen comme argument"
|
||||
|
||||
# renvoie la valeur trouvée dans la base
|
||||
return bool(self._data.get('rewriteMailHeaders', []))
|
||||
|
@ -2457,7 +2457,7 @@ class Adherent(BaseProprietaire):
|
|||
|
||||
# si l'adhérent n'a pas de compte, on lève une exception
|
||||
if not self.compte():
|
||||
raise NotImplementedError("L'adhérent n'a pas de compte")
|
||||
raise NotImplementedError, u"L'adhérent n'a pas de compte"
|
||||
|
||||
current = int(self._data.get('derniereConnexion', ['0'])[0])
|
||||
|
||||
|
@ -2500,7 +2500,7 @@ class Club(BaseProprietaire):
|
|||
l, new = preattr(new)
|
||||
new = new.capitalize()
|
||||
if l<2:
|
||||
raise ValueError("Nom trop court.")
|
||||
raise ValueError(u"Nom trop court.")
|
||||
|
||||
self._set('nom', [new])
|
||||
return new
|
||||
|
@ -2528,7 +2528,7 @@ class Club(BaseProprietaire):
|
|||
raise ValueError
|
||||
|
||||
if not adher.id():
|
||||
raise AttributeError('Adhérent invalide')
|
||||
raise AttributeError(u'Adhérent invalide')
|
||||
|
||||
self._set('responsable', [adher.id()])
|
||||
return adher
|
||||
|
@ -2565,7 +2565,7 @@ class Club(BaseProprietaire):
|
|||
|
||||
annu = annuaires.locaux_clubs()
|
||||
if new not in annu.keys():
|
||||
raise ValueError('Local invalide', annu)
|
||||
raise ValueError(u'Local invalide', annu)
|
||||
|
||||
self._set('chbre', [new])
|
||||
return new
|
||||
|
@ -2586,26 +2586,26 @@ class Club(BaseProprietaire):
|
|||
if not login.startswith('club-'):
|
||||
login = 'club-' + login
|
||||
if not re.match('^[a-z0-9]*[a-z]+[a-z0-9-]*$', login):
|
||||
raise ValueError('Login incorrect')
|
||||
raise ValueError(u'Login incorrect')
|
||||
login = preattr(login)[1]
|
||||
|
||||
if 'posixAccount' in self._data['objectClass']:
|
||||
if login != self._data['uid']:
|
||||
# A déja un compte
|
||||
raise ValueError("Le club à déjà un compte. Login : %s" % self._data['uid'][0])
|
||||
raise ValueError(u"Le club à déjà un compte. Login : %s" % self._data['uid'][0])
|
||||
else:
|
||||
return login
|
||||
|
||||
if mailexist(login) and not os.system('/usr/sbin/list_lists | grep -qi %s' % login):
|
||||
# la 2ème vérif est pour vérifier que ce n'est pas la ML du club
|
||||
raise ValueError("Login existant ou correspondant à un alias mail.", 1)
|
||||
raise ValueError(u"Login existant ou correspondant à un alias mail.", 1)
|
||||
|
||||
home = '/home/' + login.replace('-', '/', 1)
|
||||
if os.path.exists(home):
|
||||
raise ValueError('Création du compte impossible : home existant', 1)
|
||||
raise ValueError(u'Création du compte impossible : home existant', 1)
|
||||
|
||||
if os.path.exists("/var/mail/"+login):
|
||||
raise ValueError('Création du compte impossible : /var/mail/%s existant'%login, 1)
|
||||
raise ValueError(u'Création du compte impossible : /var/mail/%s existant'%login, 1)
|
||||
|
||||
# Lock du mail
|
||||
self.lock('mail', login)
|
||||
|
@ -2699,13 +2699,13 @@ class Machine(BaseClasseCrans):
|
|||
|
||||
chbre = self.__proprietaire.chbre()
|
||||
# if chbre == 'EXT' and mode == 'fixe':
|
||||
# raise ValueError('Il faut une chambre pour pouvoir posséder une machine fixe')
|
||||
# raise ValueError(u'Il faut une chambre pour pouvoir posséder une machine fixe')
|
||||
|
||||
if chbre == '????':
|
||||
raise ValueError('ERREUR: la chambre du propriétaire est inconnue')
|
||||
raise ValueError(u'ERREUR: la chambre du propriétaire est inconnue')
|
||||
|
||||
else:
|
||||
raise TypeError('Arguments invalides')
|
||||
raise TypeError(u'Arguments invalides')
|
||||
|
||||
def Nom(self):
|
||||
""" Retourne le nom de la machine """
|
||||
|
@ -2728,13 +2728,13 @@ class Machine(BaseClasseCrans):
|
|||
|
||||
# La mac serait-elle déjà connue ?
|
||||
if not multi_ok and self.exist('macAddress=%s' % mac):
|
||||
raise ValueError('Mac déja utilisée sur le réseau.', 1)
|
||||
raise ValueError(u'Mac déja utilisée sur le réseau.', 1)
|
||||
|
||||
# La MAC serait-elle une MAC à la con ?
|
||||
if mac == "00:04:4b:80:80:03":
|
||||
raise ValueError("Il s'agit de l'unique adresse MAC achetée par nVidia pour ses cartes réseau. Il faut changer cette adresse.", 2)
|
||||
raise ValueError(u"Il s'agit de l'unique adresse MAC achetée par nVidia pour ses cartes réseau. Il faut changer cette adresse.", 2)
|
||||
elif mac[0:11] == "44:45:53:54":
|
||||
raise ValueError("Il s'agit de l'adresse MAC d'une interface PPP.", 2)
|
||||
raise ValueError(u"Il s'agit de l'adresse MAC d'une interface PPP.", 2)
|
||||
|
||||
# Le test final : vendeur connu
|
||||
prefix = mac[:8].upper() + ' '
|
||||
|
@ -2746,7 +2746,7 @@ class Machine(BaseClasseCrans):
|
|||
break
|
||||
except IOError:
|
||||
# Le fichier existe pas, on sors
|
||||
raise RuntimeError("Fichier de fabriquants de MAC non trouvé !")
|
||||
raise RuntimeError(u"Fichier de fabriquants de MAC non trouvé !")
|
||||
|
||||
if not multi_ok and not vendor:
|
||||
raise ValueError(
|
||||
|
@ -2770,33 +2770,33 @@ Contactez nounou si la MAC est bien celle d'une carte.""", 3)
|
|||
l = len(new.split('.')[0])
|
||||
|
||||
if l<2:
|
||||
raise ValueError("%s trop court." % champ.capitalize())
|
||||
raise ValueError(u"%s trop court." % champ.capitalize())
|
||||
|
||||
if self.proprietaire().__class__ != AssociationCrans:
|
||||
new = new.split('.', 1)[0]
|
||||
for c in new[:]:
|
||||
if not c in (string.letters + string.digits + '-'):
|
||||
raise ValueError("Seuls les caractères alphabétiques minuscules et les - sont autorisés pour %s" % champ)
|
||||
raise ValueError(u"Seuls les caractères alphabétiques minuscules et les - sont autorisés pour %s" % champ)
|
||||
|
||||
if l > 17:
|
||||
raise ValueError("%s trop long." % champ.capitalize())
|
||||
raise ValueError(u"%s trop long." % champ.capitalize())
|
||||
|
||||
if not new[0].isalpha():
|
||||
raise ValueError("Le premier caractère du champ %s doit être alphabétique" % champ)
|
||||
raise ValueError(u"Le premier caractère du champ %s doit être alphabétique" % champ)
|
||||
|
||||
if new.endswith('-'):
|
||||
raise ValueError("Le dernier caractère du champ %s ne peut être un tiret" % champ)
|
||||
raise ValueError(u"Le dernier caractère du champ %s ne peut être un tiret" % champ)
|
||||
|
||||
# Ajout du domaine si necessaire
|
||||
if new.find('.') == -1:
|
||||
try:
|
||||
new += '.' + config.domains[self.objectClass]
|
||||
except:
|
||||
raise RuntimeError("%s : domaine non trouvé pour %s" % (champ.capitalize(), self.__class__))
|
||||
raise RuntimeError(u"%s : domaine non trouvé pour %s" % (champ.capitalize(), self.__class__))
|
||||
|
||||
# Pas déja pris ?
|
||||
if self.exist('(|(host=%s)(hostAlias=%s))' % (new, new)):
|
||||
raise ValueError("%s : nom déjà pris" % champ.capitalize())
|
||||
raise ValueError(u"%s : nom déjà pris" % champ.capitalize())
|
||||
|
||||
# Lock host
|
||||
self.lock('host', new)
|
||||
|
@ -2918,7 +2918,7 @@ Contactez nounou si la MAC est bien celle d'une carte.""", 3)
|
|||
net = config.NETs[proprio_subnet]
|
||||
pool_ip = lister_ip_dispo(proprio_subnet)
|
||||
except:
|
||||
raise RuntimeError('Impossible de trouver le réseau où placer la machine.')
|
||||
raise RuntimeError(u'Impossible de trouver le réseau où placer la machine.')
|
||||
else:
|
||||
net = config.NETs["gratuit"]
|
||||
pool_ip = lister_ip_dispo("gratuit")
|
||||
|
@ -2934,19 +2934,19 @@ Contactez nounou si la MAC est bien celle d'une carte.""", 3)
|
|||
break
|
||||
|
||||
if not len(pool_ip):
|
||||
raise RuntimeError("Plus d'IP libres dans %s." % ' et '.join(net))
|
||||
raise RuntimeError(u"Plus d'IP libres dans %s." % ' et '.join(net))
|
||||
|
||||
else:
|
||||
# L'ip est elle dans le bon sous-réseau ?
|
||||
# (accessoirement teste si l'IP est valide et ne correspond pas
|
||||
# à l'adresse de broadcast ou de réseau)
|
||||
if not iptools.AddrInNet(ip, net):
|
||||
raise ValueError('IP invalide ou en dehors du sous-réseau alloué.', 1)
|
||||
raise ValueError(u'IP invalide ou en dehors du sous-réseau alloué.', 1)
|
||||
# Reformatage
|
||||
ip = iptools.DecToQuad(iptools.QuadToDec(ip))
|
||||
# L'ip est-elle déja allouée ?
|
||||
if self.exist('ipHostNumber=%s' % ip):
|
||||
raise ValueError('IP déjà prise.')
|
||||
raise ValueError(u'IP déjà prise.')
|
||||
|
||||
# Lock ip
|
||||
self.lock('ipHostNumber', ip)
|
||||
|
@ -3015,7 +3015,7 @@ Contactez nounou si la MAC est bien celle d'une carte.""", 3)
|
|||
"""
|
||||
from user_tests import isadm
|
||||
if self.proprietaire().__class__ == AssociationCrans and not (isadm() or user_tests.getuser() == 'www-data'):
|
||||
raise EnvironmentError('Il faut être administrateur pour effectuer cette opération.')
|
||||
raise EnvironmentError(u'Il faut être administrateur pour effectuer cette opération.')
|
||||
|
||||
ret = ''
|
||||
|
||||
|
@ -3104,7 +3104,7 @@ Contactez nounou si la MAC est bien celle d'une carte.""", 3)
|
|||
""" Destruction de la machine"""
|
||||
from user_tests import isadm
|
||||
if self.proprietaire().__class__ == AssociationCrans and not isadm():
|
||||
raise EnvironmentError('Il faut être administrateur pour effectuer cette opération.')
|
||||
raise EnvironmentError(u'Il faut être administrateur pour effectuer cette opération.')
|
||||
|
||||
|
||||
self.proprio = self.__proprietaire.Nom() # On met dans un coin le nom du proprio
|
||||
|
@ -3157,7 +3157,7 @@ Contactez nounou si la MAC est bien celle d'une carte.""", 3)
|
|||
assert(len(liste) == 1 or len(liste) == 2)
|
||||
return map(lambda x: x and int(x) or '', liste)
|
||||
except:
|
||||
raise ValueError('Spécification de ports incorrecte : %s' % x)
|
||||
raise ValueError(u'Spécification de ports incorrecte : %s' % x)
|
||||
|
||||
ports = map(parse, ports)
|
||||
ports.sort()
|
||||
|
@ -3217,7 +3217,7 @@ class MachineCrans(Machine):
|
|||
try:
|
||||
new = int(new)
|
||||
except:
|
||||
raise ValueError('Le nombre de prises doit être un entier')
|
||||
raise ValueError(u'Le nombre de prises doit être un entier')
|
||||
|
||||
vals = [24, 26, 28, 50, 52]
|
||||
if new not in vals:
|
||||
|
@ -3310,7 +3310,7 @@ class BorneWifi(Machine):
|
|||
raise
|
||||
new = new + (1 << (c - 1))
|
||||
except:
|
||||
raise ValueError('Canal invalide : doit être entre 0 et 13 ou une liste de canaux')
|
||||
raise ValueError(u'Canal invalide : doit être entre 0 et 13 ou une liste de canaux')
|
||||
|
||||
self._set('canal', [str(new)])
|
||||
return new
|
||||
|
@ -3324,7 +3324,7 @@ class BorneWifi(Machine):
|
|||
new = int(new)
|
||||
if new < -99 or new > 99: raise
|
||||
except:
|
||||
raise ValueError('Puissance invalide : doit être entre -99 et 99')
|
||||
raise ValueError(u'Puissance invalide : doit être entre -99 et 99')
|
||||
|
||||
self._set('puissance', [str(new)])
|
||||
return new
|
||||
|
@ -3456,13 +3456,13 @@ class Facture(BaseClasseCrans):
|
|||
self._modifiable = 'w'
|
||||
|
||||
else:
|
||||
raise TypeError('Arguments invalides')
|
||||
raise TypeError(u'Arguments invalides')
|
||||
|
||||
def numero(self):
|
||||
""" Retourne le numéro de facture """
|
||||
fid = self._data.get('fid', [None])[0]
|
||||
if fid == None:
|
||||
raise NotImplementedError('Il faut enregistrer une facture pour connaitre son numero')
|
||||
raise NotImplementedError, u'Il faut enregistrer une facture pour connaitre son numero'
|
||||
return fid
|
||||
|
||||
def nom(self):
|
||||
|
@ -3488,7 +3488,7 @@ class Facture(BaseClasseCrans):
|
|||
elif 'club' in res[0][1]['objectClass']:
|
||||
self.__proprietaire = Club(res[0], self._modifiable, self.conn)
|
||||
else:
|
||||
raise ValueError('Propriétaire inconnu')
|
||||
raise ValueError, u'Propriétaire inconnu'
|
||||
|
||||
return self.__proprietaire
|
||||
|
||||
|
@ -3501,13 +3501,13 @@ class Facture(BaseClasseCrans):
|
|||
# modification du mode de paiement
|
||||
if new != None:
|
||||
if self.recuPaiement():
|
||||
raise ValueError('Facture déja payée')
|
||||
raise ValueError, u'Facture déja payée'
|
||||
|
||||
if not self._modifiable:
|
||||
raise NotImplementedError("La facture n'est pas modifiable")
|
||||
raise NotImplementedError, "La facture n'est pas modifiable"
|
||||
|
||||
if new not in ['liquide', 'cheque', 'paypal']:
|
||||
raise ValueError('Mode de paiement non accepté')
|
||||
raise ValueError, u'Mode de paiement non accepté'
|
||||
|
||||
self._set('modePaiement', [new])
|
||||
|
||||
|
@ -3520,13 +3520,13 @@ class Facture(BaseClasseCrans):
|
|||
|
||||
# on vérifie que la facture n'est pas déja payéee
|
||||
if new and self._data.get('recuPaiement', []):
|
||||
raise ValueError('Facture déja payée')
|
||||
raise ValueError, u'Facture déja payée'
|
||||
|
||||
# modification de la valeur
|
||||
if new != None:
|
||||
# on vérifie que la facture est modifiable
|
||||
if not self._modifiable and new:
|
||||
raise NotImplementedError("La facture n'est pas modifiable")
|
||||
raise NotImplementedError, "La facture n'est pas modifiable"
|
||||
|
||||
# on crédite les articles, si c'est pas possible, la metode
|
||||
# levera une exeption
|
||||
|
@ -3556,7 +3556,7 @@ class Facture(BaseClasseCrans):
|
|||
|
||||
# on vérifie que le propriétaire est modifiable
|
||||
if not self.proprietaire()._modifiable:
|
||||
raise SystemError("Impossible de créditer les articles, le proprietaire n'est pas modifiable")
|
||||
raise SystemError, u"Impossible de créditer les articles, le proprietaire n'est pas modifiable"
|
||||
|
||||
# on crédite les articles
|
||||
for art in self._articles():
|
||||
|
@ -3622,7 +3622,7 @@ class Facture(BaseClasseCrans):
|
|||
"""
|
||||
# on ne eut pas modifier une facture payée
|
||||
if self.recuPaiement():
|
||||
raise ValueError('On ne peut pas modifier une facture payée')
|
||||
raise ValueError, u'On ne peut pas modifier une facture payée'
|
||||
|
||||
# charge la liste des articles
|
||||
arts = self._articles()
|
||||
|
@ -3633,12 +3633,12 @@ class Facture(BaseClasseCrans):
|
|||
if type(ajoute)==list:
|
||||
for art in ajoute:
|
||||
if int(art['nombre']) != float(art['nombre']):
|
||||
raise ValueError('nombre doit être un entier')
|
||||
raise ValueError, u'nombre doit être un entier'
|
||||
if float(int(art['pu']*100)/100.0) != art['pu']:
|
||||
raise ValueError('pu ne doit pas avoir plus de 2 chiffres apres la virgule')
|
||||
raise ValueError, u'pu ne doit pas avoir plus de 2 chiffres apres la virgule'
|
||||
art['nombre'] = int(art['nombre'])
|
||||
if '~~' in ' '.join([str(x) for x in art.values()]):
|
||||
raise ValueError('Ne pas mettre de ~~ dans les champs')
|
||||
raise ValueError, u'Ne pas mettre de ~~ dans les champs'
|
||||
arts.append(art)
|
||||
|
||||
# enregistre la nouvelle liste
|
||||
|
@ -3650,7 +3650,7 @@ class Facture(BaseClasseCrans):
|
|||
"""
|
||||
# on ne eut pas modifier une facture payée
|
||||
if self.recuPaiement():
|
||||
raise ValueError('On ne peut pas modifier une facture payée')
|
||||
raise ValueError, u'On ne peut pas modifier une facture payée'
|
||||
|
||||
# charge la liste des articles
|
||||
arts = self._articles()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue