[ldap_crans] Exceptions en str

darcs-hash:20100904133907-ffbb2-fc397f6e3d005e0d49d1a1f5f791bf821cc7c4ec.gz
This commit is contained in:
Nicolas Dandrimont 2010-09-04 15:39:07 +02:00
parent 062df15601
commit b19d9cc71b
2 changed files with 116 additions and 116 deletions

View file

@ -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(u'Serveur de mail injoignable')
raise ValueError('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(u"Longueur de l'adresse mac incorrecte.")
raise ValueError("Longueur de l'adresse mac incorrecte.")
for c in mac[:]:
if c not in string.hexdigits:
raise ValueError(u"Caractère interdit '%s' dans l'adresse mac." % c)
raise ValueError("Caractère interdit '%s' dans l'adresse mac." % c)
if mac == '000000000000':
raise ValueError(u"MAC nulle interdite\nIl doit être possible de modifier l'adresse de la carte.")
raise ValueError("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(u"Adresse mail incorrecte.")
raise ValueError("Adresse mail incorrecte.")
# Pas de caractèrs bizarres
for l in mail[:]:
if not l in (string.lowercase + string.digits + '-_.@'):
raise ValueError(u"Caractère interdit dans l'adresse mail (%s)." % l)
raise ValueError("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(u"Adresse mail @crans interdite ici !")
raise ValueError("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(u'Objet (%s=%s) locké, patienter.' % (item, valeur), l)
raise EnvironmentError('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(u"Impossible de créer l'objet %s" % nom_classe)
raise ValueError("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(u'Chaîne attendue')
raise TypeError('Chaîne attendue')
if not expression:
return []
@ -745,7 +745,7 @@ class CransLdap:
champ = champ[:-1]
neg = True
except:
raise ValueError(u'Syntaxe de recherche invalide (%s)' % cond)
raise ValueError('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(u'Champ de recherche inconnu (%s)' % champ)
raise ValueError('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(u'Date de début blacklist invalide')
except: raise ValueError('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(u'Date de fin blacklist invalide')
except: raise ValueError('Date de fin blacklist invalide')
if debut == fin:
raise ValueError(u'Dates de début et de fin identiques')
raise ValueError('Dates de début et de fin identiques')
elif fin != -1 and debut > fin:
raise ValueError(u'Date de fin avant date de début')
raise ValueError('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(u'Objet non modifiable : %s' % str(self))
raise RuntimeError('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(u'Entrée en double dans le champ %s' % champ)
raise RuntimeError('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(u"Alias trop court.")
raise ValueError("Alias trop court.")
for c in new[:]:
if not c in (string.letters + string.digits + '-_.'):
raise ValueError(u"Alias : seuls les caractères alphanumériques, le -, le _ et le . sont autorisés." )
raise ValueError("Alias : seuls les caractères alphanumériques, le -, le _ et le . sont autorisés." )
if new[0] not in string.letters:
raise ValueError(u"Le premier caractère de l'alias doit être alphabétique.")
raise ValueError("Le premier caractère de l'alias doit être alphabétique.")
if mailexist(new):
raise ValueError(u"Alias existant ou correspondand à un compte.")
raise ValueError("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(u"Il faut donner un nombre en argument.")
raise ValueError("Il faut donner un nombre en argument.")
# découvert accepté
if new < config.impression.decouvert:
raise ValueError(u"Solde minimal atteint, opération non effectuée.")
raise ValueError("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, u"L'adhérent n'a pas de compte"
raise NotImplementedError("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, u"contourneGreylist prend un booléen comme argument"
raise ValueError("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, u"L'adhérent n'a pas de compte"
raise NotImplementedError("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, u"L'adhérent n'a pas de compte"
raise NotImplementedError("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, u"L'adhérent n'a pas de compte"
raise NotImplementedError("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, u"L'adhérent n'a pas de compte"
raise NotImplementedError("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, u"L'adhérent na pas de compte"
raise NotImplementedError("L'adhérent n'a 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, u"L'adhérent na pas de compte"
raise NotImplementedError("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(u"Seuls les caractères alphabétiques, l'espace et le - sont permis dans %s." % champ)
raise ValueError("Seuls les caractères alphabétiques, l'espace et le - sont permis dans %s." % champ)
if l<2:
raise ValueError(u"%s trop court." % champ)
raise ValueError("%s trop court." % champ)
if new[0] not in string.letters:
raise ValueError(u"Le premier caractère du %s doit être une lettre" % champ)
raise ValueError("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(u"Numéro de téléphone incorrect (il doit comporter uniquement des chiffres).")
raise ValueError("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(u"Chambre incorrecte.")
raise ValueError("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(u'Un adhérent en dehors du campus ne doit pas avoir de machine fixe.')
# raise ValueError('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 = u"Chambre inconnue dans le batiment, les chambres valides sont :"
aide = "Chambre inconnue dans le bâtiment, 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 += u'\n'
aide += '\n'
raise ValueError(aide)
else:
raise ValueError(u'Bâtiment inconnu.')
raise ValueError('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(u'Chambre déjà occupée.')
raise ValueError('Chambre déjà occupée.')
adh = self.search(search, self._modifiable)['adherent']
if len(adh) != 1:
raise ValueError(u'Chambre déjà occupée.')
raise ValueError('Chambre déjà occupée.')
else:
raise ValueError(u'Chambre déjà occupée.', adh[0])
raise ValueError('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(u"Adresse incorrecte.")
if l < l_min[i]: raise ValueError("Adresse incorrecte.")
# Correction si necessaire
if not new[1]:
@ -2141,7 +2141,7 @@ class Adherent(BaseProprietaire):
return False
else:
raise ValueError, u'mail_invalide ne peut prendre que None ou False en argument'
raise ValueError('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, u"charteMA prend un booléen comme argument"
raise ValueError("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, u"adherentPayant prend un booléen comme argument"
raise ValueError("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(u"Format études non valides.")
raise ValueError("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(u"Etudes non valides.")
raise ValueError("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(u"L'adhérent ne paie pas de cotisation, il n'a pas droit à un compte.")
raise ValueError("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(u"L'adhérent à déjà un compte. Login : %s" % self._data['uid'][0])
raise ValueError("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(u"Seuls les caractères alphabétiques non accentués et le - sont autorisés dans le login.")
raise ValueError("Seuls les caractères alphabétiques non accentués et le - sont autorisés dans le login.")
if l < 2:
raise ValueError(u"Login trop court.")
raise ValueError("Login trop court.")
if l > config.maxlen_login:
raise ValueError(u"Login trop long.")
raise ValueError("Login trop long.")
if login[0] == '-':
raise ValueError(u"- interdit en première position.")
raise ValueError("- interdit en première position.")
if mailexist(login):
raise ValueError(u"Login existant ou correspondant à un alias mail.", 1)
raise ValueError("Login existant ou correspondant à un alias mail.", 1)
home = '/home/' + login
if os.path.exists(home):
raise ValueError(u'Création du compte impossible : home existant', 1)
raise ValueError('Création du compte impossible : home existant', 1)
if os.path.exists("/var/mail/" + login):
raise ValueError(u'Création du compte impossible : /var/mail/%s existant' % login, 1)
raise ValueError('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(u'uidNumber pris')
raise ValueError('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(u"Plus d'uid disponibles !")
raise ValueError("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(u'Il faut avoir un compte pour avoir des droits.')
raise EnvironmentError('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(u'Il faut être administrateur pour effectuer cette opération.')
raise EnvironmentError('Il faut être administrateur pour effectuer cette opération.')
# On vérifie la liste donnée
if type(droits) != list:
raise TypeError(u'Une liste est attendue')
raise TypeError('Une liste est attendue')
new = []
for droit in droits:
droit = droit.strip()
if droit == '': continue
if droit not in droits_possibles:
raise ValueError(u'Droit %s incorrect' % droit)
raise ValueError('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, u"L'adhérent n'a pas de compte"
raise NotImplementedError("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, u"rewriteMailHeaders prend un booléen comme argument"
raise ValueError("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, u"L'adhérent n'a pas de compte"
raise NotImplementedError("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(u"Nom trop court.")
raise ValueError("Nom trop court.")
self._set('nom', [new])
return new
@ -2528,7 +2528,7 @@ class Club(BaseProprietaire):
raise ValueError
if not adher.id():
raise AttributeError(u'Adhérent invalide')
raise AttributeError('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(u'Local invalide', annu)
raise ValueError('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(u'Login incorrect')
raise ValueError('Login incorrect')
login = preattr(login)[1]
if 'posixAccount' in self._data['objectClass']:
if login != self._data['uid']:
# A déja un compte
raise ValueError(u"Le club à déjà un compte. Login : %s" % self._data['uid'][0])
raise ValueError("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(u"Login existant ou correspondant à un alias mail.", 1)
raise ValueError("Login existant ou correspondant à un alias mail.", 1)
home = '/home/' + login.replace('-', '/', 1)
if os.path.exists(home):
raise ValueError(u'Création du compte impossible : home existant', 1)
raise ValueError('Création du compte impossible : home existant', 1)
if os.path.exists("/var/mail/"+login):
raise ValueError(u'Création du compte impossible : /var/mail/%s existant'%login, 1)
raise ValueError('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(u'Il faut une chambre pour pouvoir posséder une machine fixe')
# raise ValueError('Il faut une chambre pour pouvoir posséder une machine fixe')
if chbre == '????':
raise ValueError(u'ERREUR: la chambre du propriétaire est inconnue')
raise ValueError('ERREUR: la chambre du propriétaire est inconnue')
else:
raise TypeError(u'Arguments invalides')
raise TypeError('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(u'Mac déja utilisée sur le réseau.', 1)
raise ValueError('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(u"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("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(u"Il s'agit de l'adresse MAC d'une interface PPP.", 2)
raise ValueError("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(u"Fichier de fabriquants de MAC non trouvé !")
raise RuntimeError("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(u"%s trop court." % champ.capitalize())
raise ValueError("%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(u"Seuls les caractères alphabétiques minuscules et les - sont autorisés pour %s" % champ)
raise ValueError("Seuls les caractères alphabétiques minuscules et les - sont autorisés pour %s" % champ)
if l > 17:
raise ValueError(u"%s trop long." % champ.capitalize())
raise ValueError("%s trop long." % champ.capitalize())
if not new[0].isalpha():
raise ValueError(u"Le premier caractère du champ %s doit être alphabétique" % champ)
raise ValueError("Le premier caractère du champ %s doit être alphabétique" % champ)
if new.endswith('-'):
raise ValueError(u"Le dernier caractère du champ %s ne peut être un tiret" % champ)
raise ValueError("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(u"%s : domaine non trouvé pour %s" % (champ.capitalize(), self.__class__))
raise RuntimeError("%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(u"%s : nom déjà pris" % champ.capitalize())
raise ValueError("%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(u'Impossible de trouver le réseau où placer la machine.')
raise RuntimeError('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(u"Plus d'IP libres dans %s." % ' et '.join(net))
raise RuntimeError("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(u'IP invalide ou en dehors du sous-réseau alloué.', 1)
raise ValueError('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(u'IP déjà prise.')
raise ValueError('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(u'Il faut être administrateur pour effectuer cette opération.')
raise EnvironmentError('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(u'Il faut être administrateur pour effectuer cette opération.')
raise EnvironmentError('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(u'Spécification de ports incorrecte : %s' % x)
raise ValueError('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(u'Le nombre de prises doit être un entier')
raise ValueError('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(u'Canal invalide : doit être entre 0 et 13 ou une liste de canaux')
raise ValueError('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(u'Puissance invalide : doit être entre -99 et 99')
raise ValueError('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(u'Arguments invalides')
raise TypeError('Arguments invalides')
def numero(self):
""" Retourne le numéro de facture """
fid = self._data.get('fid', [None])[0]
if fid == None:
raise NotImplementedError, u'Il faut enregistrer une facture pour connaitre son numero'
raise NotImplementedError('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, u'Propriétaire inconnu'
raise ValueError('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, u'Facture déja payée'
raise ValueError('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, u'Mode de paiement non accepté'
raise ValueError('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, u'Facture déja payée'
raise ValueError('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, u"Impossible de créditer les articles, le proprietaire n'est pas modifiable"
raise SystemError("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, u'On ne peut pas modifier une facture payée'
raise ValueError('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, u'nombre doit être un entier'
raise ValueError('nombre doit être un entier')
if float(int(art['pu']*100)/100.0) != art['pu']:
raise ValueError, u'pu ne doit pas avoir plus de 2 chiffres apres la virgule'
raise ValueError('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, u'Ne pas mettre de ~~ dans les champs'
raise ValueError('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, u'On ne peut pas modifier une facture payée'
raise ValueError('On ne peut pas modifier une facture payée')
# charge la liste des articles
arts = self._articles()