[attributs] checks d'unicité sur la base

This commit is contained in:
Nicolas Dandrimont 2010-10-17 21:39:51 +02:00
parent 4178ad26ee
commit 82c08dfc0c

View file

@ -104,13 +104,18 @@ class Attr(object):
"""Vérifie l'unicité dans la base de la valeur (mailAlias, chbre, """Vérifie l'unicité dans la base de la valeur (mailAlias, chbre,
etc...)""" etc...)"""
attr = self.__class__.__name__ attr = self.__class__.__name__
if attr in [ "mid", "uid", "cid", "fid", "aid"]: #... etc if attr in ["mid", "uid", "cid", "fid", "aid", "ipHostNumber", "uidNumber"]:
assert not self.conn.search('%s=%s' % (attr, str(self))) res = self.conn.search('%s=%s' % (attr, str(self)))
if attr in [ "mailAlias", "canonicalAlias", 'mail', 'uid']: if res:
raise ValueError("%s déjà existant" % attr, [r.dn for r in res])
if attr in ["mailAlias", "canonicalAlias", 'mail', 'uid']:
res = self.conn.search('(|(mail=%s)(mailAlias=%s)(canonicalAlias=%s))' % ((str(self),)*3)) res = self.conn.search('(|(mail=%s)(mailAlias=%s)(canonicalAlias=%s))' % ((str(self),)*3))
if res: if res:
raise ValueError("Mail déjà existant", [r.dn for r in res]) raise ValueError("Mail déjà existant", [r.dn for r in res])
#assert not mailexist(str(self)) if attr in ["host", "hostAlias"]:
res = self.conn.search('(|(host=%s)(hostAlias=%s))' % ((str(self),)*2))
if res:
raise ValueError("Hôte déjà existant", [r.dn for r in res])
def _check_users_restrictions(self, values): def _check_users_restrictions(self, values):
"""Vérifie les restrictions supplémentaires imposées selon les """Vérifie les restrictions supplémentaires imposées selon les