diff --git a/objets.py b/objets.py index 2c65f06..bc420f3 100644 --- a/objets.py +++ b/objets.py @@ -486,7 +486,7 @@ class proprio(CransLdapObject): attribs = [attributs.nom, attributs.chbre, attributs.paiement, attributs.info, attributs.blacklist, attributs.controle, attributs.historique] - def __init__(self, conn, dn, mode='ro', ldif = None, machines=[]): + def __init__(self, conn, dn, mode='ro', ldif = None, machines=None): super(proprio, self).__init__(conn, dn, mode, ldif) self._machines = machines @@ -564,7 +564,7 @@ class proprio(CransLdapObject): def machines(self): """Renvoie la liste des machines""" - if not self._machines: + if self._machines is None: self._machines = self.conn.search('mid=*', dn = self.dn, scope = 1, mode=self.mode) for m in self._machines: m._proprio = self @@ -661,13 +661,27 @@ class adherent(proprio): ] ldap_name = "adherent" - def __init__(self, conn, dn, mode='ro', ldif = None): - super(adherent, self).__init__(conn, dn, mode, ldif) + def __init__(self, conn, dn, mode='ro', ldif = None, machines=None, clubs=None, imprimeur_clubs=None): + super(adherent, self).__init__(conn, dn, mode, ldif, machine) self.full = False + self._clubs = clubs + self._imprimeur_clubs = imprimeur_clubs if u'cransAccount' in [ unicode(o) for o in self['objectClass']]: self.attribs = self.attribs + crans_account_attribs self.full = True + def clubs(self): + """Renvoie la liste des clubs dont l'adherent est responsable""" + if self._clubs is None: + self._clubs = self.conn.search('responsable=%s' % self['aid'][0], scope = 1, mode=self.mode) + return self._clubs + + def imprimeur_clubs(self): + """Renvoie la liste des clubs dont l'adherent est imprimeur""" + if self._imprimeur_clubs is None: + self._imprimeur_clubs = self.conn.search('imprimeurClub=%s' % self['aid'][0], scope = 1, mode=self.mode) + return self._imprimeur_clubs + def compte(self, login = None, uidNumber=0, hash_pass = '', shell=config.login_shell): u"""Renvoie le nom du compte crans. S'il n'existe pas, et que uid est précisé, le crée."""