On optimise la methode allMachines :

il est inutile losque l'on construit les propriétaires des machines de réintérroger l'annuaire
 ldap pour les obtenir alors que l'on vient de dumper tout l'annuaire.
Pour cela, on rajoute un paramètre optionel machines à la classe proprio, et on construit directement
les propriétaires en appelant la classe
adhérant au lieu de passer par la methode new_cransldapobject.
This commit is contained in:
Valentin Samir 2011-10-25 22:28:04 +02:00
parent 454ea3e6e1
commit 5107a71ebe

View file

@ -130,14 +130,19 @@ class lc_ldap(ldap.ldapobject.LDAPObject):
machines = []
# On récupère tous les objets ldap et on les met dans un dico
# (proxying de la base ldap)
for dn, attrs in self.search_s(base_dn, scope=2):
res[dn] = attrs
for dn, attrs in self.search_s(base_dn, scope=2): #on fait tout dans une seule boucle
#~ res[dn] = attrs
# On crée la liste des machines
for dn, attrs in res.items():
#~ for dn, attrs in res.items():
if dn.startswith('mid='):
m = new_cransldapobject(self, dn, ldif = attrs)
parent_dn = dn.split(',', 1)[1]
m._proprio = new_cransldapobject(self, parent_dn, res[parent_dn])
if not parent.has_key(parent_dn):
parent[parent_dn]=adherent(self, dn,machines= [ new_cransldapobject(self, dn,ldif=attrs)]) # on utilise pas new_cransldapobject pour optimiser les appel ldap (on passe la liste des machines)
else:
parent[parent_dn]._machines.append(new_cransldapobject(self, dn,ldif=attrs))
#~ m._proprio = new_cransldapobject(self, parent_dn, res[parent_dn],opt=machine_proprio[parent_dn])
m._proprio = parent[parent_dn]
machines.append(m)
return machines
@ -415,9 +420,9 @@ class proprio(CransLdapObject):
ofields = []
xfields = []
def __init__(self, conn, dn, mode='ro', ldif = None):
def __init__(self, conn, dn, mode='ro', ldif = None, machines=[]):
super(proprio, self).__init__(conn, dn, mode, ldif)
self._machines = []
self._machines = machines
def machines(self):
if not self._machines: