suppression du problème d'accent pour de bon ; ajout de souplesse dans l'entree des mac et nom de machine (normalisation silencieuse du nom de machine)

This commit is contained in:
Roven Gabriel 2013-09-13 22:37:31 +02:00
parent abb643bdbe
commit b95925fb7d
2 changed files with 24 additions and 8 deletions

View File

@ -237,6 +237,9 @@ class MachineAddController(AuthenticatedRestController):
member_base_dn = ldap_config.username_base_dn + residence_dn
member = Member.get_by_uid(self.user, residence_dn, member_uid)
mac = mac.strip()
name = name.strip()
#Vérification que l'adresse mac soit correcte
mac_match = re.match('^([0-9A-Fa-f]{2}[:-]?){5}([0-9A-Fa-f]{2})$', mac)
if mac_match is None:
@ -275,9 +278,9 @@ class MachineAddController(AuthenticatedRestController):
raise Exception("mac address already exist")
#endif
# Vérification que le nom de machine n'existe pas déjà
# Note : on cherche sur toute la résidence (residence_dn)
# Nettoyage des erreurs communes
name = name.strip().replace(" ", "-").replace("_", "-")
name = Translations.strip_accents(name)
# On modifie silencieusement le nom de la machine si il existe déjà
def try_name(name, number):

View File

@ -41,6 +41,9 @@ class Ldap(object):
scope : portée de recherche (SCOPE_SUBTREE, SCOPE_BASE, SCOPE_ONELEVEL)
"""
def search(self, dn, filter, scope = ldap.SCOPE_SUBTREE):
dn = Ldap.str_attribute(dn)
filter = Ldap.str_attribute(filter)
try:
results = self.__connection.search_s(dn, scope, filter)
except ldap.NO_SUCH_OBJECT:
@ -90,13 +93,11 @@ class Ldap(object):
@staticmethod
def str_attributes(attributes):
def str_value(value):
if isinstance(value, str):
return value
elif isinstance(value, list):
return [str(subval) for subval in value]
if isinstance(value, list):
return [Ldap.str_attribute(subval) for subval in value]
#end if
return str(value)
return Ldap.str_attribute(value)
#end def
return dict([
@ -105,6 +106,18 @@ class Ldap(object):
])
#end def
@staticmethod
def str_attribute(value):
if isinstance(value, str):
return value
elif isinstance(value, unicode):
return unicode.encode(value, "utf-8")
#end if
return str(value)
#end def
""" Remplace les attributs d'un dn donné
dn : adresse de l'élément
attributes : dictionnaire d'attributs