From f069ead1ea40b6dbe8c177dd8bd7dd1b9e2dea60 Mon Sep 17 00:00:00 2001 From: Valentin Samir Date: Mon, 3 Jun 2013 16:53:54 +0200 Subject: [PATCH] =?UTF-8?q?[objets]=20Ajout=20de=20methodes=20=C3=A0=20adh?= =?UTF-8?q?erent=20pour=20r=C3=A9cup=C3=A9rer=20les=20clubs=20dont=20il=20?= =?UTF-8?q?est=20responsable=20ou=20imprimeur?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit On en profite pour corriger la methode analogue dans proprio pour machine : On initialise bien la valeur interne par None et pas par une liste vide. En effet, il est possible que l'adherent possède 0 machines et alors il n'est pas utile de récupérer ses machines si self._machines vaut [] --- objets.py | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) 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."""