[attributs,lc_ldap] On va chercher les responsables de club de manière paresseuse
This commit is contained in:
parent
66a1eb2fb5
commit
680446be8b
2 changed files with 19 additions and 7 deletions
13
attributs.py
13
attributs.py
|
@ -444,15 +444,20 @@ class cid(intAttr):
|
|||
singlevalue = True
|
||||
optional = True
|
||||
legend = u"Identifiant du club"
|
||||
|
||||
|
||||
|
||||
class responsable(Attr):
|
||||
singlevalue = True
|
||||
optional = True
|
||||
legend = u"Responsable du club"
|
||||
|
||||
|
||||
def get_respo(self):
|
||||
if self.value == None:
|
||||
self.value=self.conn.search('aid=%s' % self.__resp)[0]
|
||||
return self.value
|
||||
|
||||
def parse_value(self, resp, ldif):
|
||||
self.value = self.conn.search('aid=%s' % resp)[0]
|
||||
self.__resp=resp
|
||||
self.value = property(self.get_respo)
|
||||
|
||||
def __unicode__(self):
|
||||
return self.value.attrs['aid'][0].__unicode__()
|
||||
|
|
13
lc_ldap.py
13
lc_ldap.py
|
@ -138,8 +138,6 @@ class lc_ldap(ldap.ldapobject.LDAPObject):
|
|||
machines[parent_dn]=[]
|
||||
machines[parent_dn].append(m)
|
||||
elif (dn.startswith('aid=') or dn.startswith('cid=') or dn==base_dn) and not parent.has_key(dn):
|
||||
# Hélas on refait une recherche ldap dans attributs.py pour trouver les responsables des club
|
||||
# ce qui prends un temps non négligeable mais est toujours mieux que de le faire pour tous les adherents
|
||||
parent[dn]=new_cransldapobject(self, dn, ldif = attrs)
|
||||
allmachines=[]
|
||||
for dn,mlist in machines.items(): # on associe propriétaires et machines
|
||||
|
@ -460,7 +458,7 @@ class proprio(CransLdapObject):
|
|||
bool_paiement = True
|
||||
except KeyError:
|
||||
pass
|
||||
if config.bl_carte_et_definitif:
|
||||
if config.bl_carte_et_definitif and not 'club' in map(lambda x:x.value,self["objectClass"]):
|
||||
bool_carte = False
|
||||
try:
|
||||
for carte in self['carteEtudiant']:
|
||||
|
@ -496,6 +494,15 @@ class machine(CransLdapObject):
|
|||
if not self._proprio:
|
||||
self._proprio = new_cransldapobject(self.conn, parent_dn, self.mode)
|
||||
return self._proprio
|
||||
|
||||
def blacklist_actif(self):
|
||||
"""Renvoie la liste des blacklistes actives sur la machine et le proprio"""
|
||||
# XXX - Proposer de filtrer les blacklistes avec un arg supplémentaire ?
|
||||
# XXX - Vérifier les blacklistes des machines pour les adhérents ?
|
||||
black=self.proprio().blacklist_actif()
|
||||
attrs = (self.attrs if self.mode not in ["w", "rw"] else self._modifs)
|
||||
black.extend(filter((lambda bl: bl.is_actif()), attrs.get("blacklist",[])))
|
||||
return black
|
||||
|
||||
|
||||
class AssociationCrans(proprio): pass
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue