[objets] Ajout de methodes à adherent pour récupérer les clubs dont il est responsable ou imprimeur

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 []
This commit is contained in:
Valentin Samir 2013-06-03 16:53:54 +02:00
parent 616acdbb7a
commit f069ead1ea

View file

@ -486,7 +486,7 @@ class proprio(CransLdapObject):
attribs = [attributs.nom, attributs.chbre, attributs.paiement, attributs.info, attributs.blacklist, attributs.controle, attributs.historique] 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) super(proprio, self).__init__(conn, dn, mode, ldif)
self._machines = machines self._machines = machines
@ -564,7 +564,7 @@ class proprio(CransLdapObject):
def machines(self): def machines(self):
"""Renvoie la liste des machines""" """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) self._machines = self.conn.search('mid=*', dn = self.dn, scope = 1, mode=self.mode)
for m in self._machines: for m in self._machines:
m._proprio = self m._proprio = self
@ -661,13 +661,27 @@ class adherent(proprio):
] ]
ldap_name = "adherent" ldap_name = "adherent"
def __init__(self, conn, dn, mode='ro', ldif = None): def __init__(self, conn, dn, mode='ro', ldif = None, machines=None, clubs=None, imprimeur_clubs=None):
super(adherent, self).__init__(conn, dn, mode, ldif) super(adherent, self).__init__(conn, dn, mode, ldif, machine)
self.full = False self.full = False
self._clubs = clubs
self._imprimeur_clubs = imprimeur_clubs
if u'cransAccount' in [ unicode(o) for o in self['objectClass']]: if u'cransAccount' in [ unicode(o) for o in self['objectClass']]:
self.attribs = self.attribs + crans_account_attribs self.attribs = self.attribs + crans_account_attribs
self.full = True 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): 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 u"""Renvoie le nom du compte crans. S'il n'existe pas, et que uid
est précisé, le crée.""" est précisé, le crée."""