[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]
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."""