[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
|
@ -445,14 +445,19 @@ class cid(intAttr):
|
||||||
optional = True
|
optional = True
|
||||||
legend = u"Identifiant du club"
|
legend = u"Identifiant du club"
|
||||||
|
|
||||||
|
|
||||||
class responsable(Attr):
|
class responsable(Attr):
|
||||||
singlevalue = True
|
singlevalue = True
|
||||||
optional = True
|
optional = True
|
||||||
legend = u"Responsable du club"
|
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):
|
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):
|
def __unicode__(self):
|
||||||
return self.value.attrs['aid'][0].__unicode__()
|
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]=[]
|
||||||
machines[parent_dn].append(m)
|
machines[parent_dn].append(m)
|
||||||
elif (dn.startswith('aid=') or dn.startswith('cid=') or dn==base_dn) and not parent.has_key(dn):
|
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)
|
parent[dn]=new_cransldapobject(self, dn, ldif = attrs)
|
||||||
allmachines=[]
|
allmachines=[]
|
||||||
for dn,mlist in machines.items(): # on associe propriétaires et machines
|
for dn,mlist in machines.items(): # on associe propriétaires et machines
|
||||||
|
@ -460,7 +458,7 @@ class proprio(CransLdapObject):
|
||||||
bool_paiement = True
|
bool_paiement = True
|
||||||
except KeyError:
|
except KeyError:
|
||||||
pass
|
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
|
bool_carte = False
|
||||||
try:
|
try:
|
||||||
for carte in self['carteEtudiant']:
|
for carte in self['carteEtudiant']:
|
||||||
|
@ -497,6 +495,15 @@ class machine(CransLdapObject):
|
||||||
self._proprio = new_cransldapobject(self.conn, parent_dn, self.mode)
|
self._proprio = new_cransldapobject(self.conn, parent_dn, self.mode)
|
||||||
return self._proprio
|
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
|
class AssociationCrans(proprio): pass
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue