Si on filtre sur un champ spcial, on ne renvoie que les machines qui
possdent ce champ. darcs-hash:20060311150927-68412-9d6f081e27c1f1c6dcbc43ae48c604dffe3bd083.gz
This commit is contained in:
parent
119271691a
commit
b520059397
1 changed files with 25 additions and 2 deletions
|
@ -244,6 +244,9 @@ class crans_ldap:
|
|||
'ip': 'ipHostNumber',
|
||||
'telephone': 'tel'}
|
||||
|
||||
# Les différentes classes LDAP de machines
|
||||
ldap_machines_classes = ['machineFixe', 'machineWifi', 'machineCrans', 'borneWifi']
|
||||
|
||||
# Champs de recherche pour la recherche automatique
|
||||
auto_search_machines_champs = \
|
||||
['macAddress', 'host', 'ipHostNumber', 'hostAlias']
|
||||
|
@ -630,8 +633,12 @@ class crans_ldap:
|
|||
|
||||
# Initialisation
|
||||
filtre = {}
|
||||
filtre_seul = {}
|
||||
# filtre_seul[i] est True si la requête porte sur un champ
|
||||
# qui n'est pas dans toutes les machines, mais dans i
|
||||
for i in filtres:
|
||||
filtre[i] = ''
|
||||
filtre_seul[i] = False
|
||||
|
||||
conds = expression.split('&')
|
||||
|
||||
|
@ -659,12 +666,27 @@ class crans_ldap:
|
|||
if champ in self.auto_search_champs[i] + self.non_auto_search_champs[i]:
|
||||
filtre[i] += build_filtre(champ, expr, neg)
|
||||
ok = True
|
||||
if champ not in self.auto_search_machines_champs \
|
||||
and champ not in self.non_auto_search_machines_champs:
|
||||
filtre_seul[i] = True
|
||||
|
||||
if not ok:
|
||||
raise ValueError(u'Champ de recherche inconnu (%s)' % champ)
|
||||
|
||||
## Recherche avec chacun des filtres
|
||||
r = {} # contiendra les réponses par filtre
|
||||
|
||||
# On efface les bons filtres si la requête porte sur des
|
||||
# champs spéciaux
|
||||
ok = False
|
||||
for i in self.ldap_machines_classes:
|
||||
ok = ok or filtre_seul[i]
|
||||
if ok:
|
||||
# Il y a au moins un champ spécial
|
||||
for i in self.ldap_machines_classes:
|
||||
if not filtre_seul[i]:
|
||||
filtre[i] = ''
|
||||
|
||||
for i in filtres:
|
||||
if filtre[i] != '':
|
||||
# Filtre valide
|
||||
|
@ -739,8 +761,9 @@ class crans_ldap:
|
|||
result[i].append(self.make(r, mode))
|
||||
|
||||
# Backward-compatibilité
|
||||
result['machine'] = result['machineCrans'] + result['borneWifi']
|
||||
result['machine'] += result['machineFixe'] + result['machineWifi']
|
||||
result['machine'] = []
|
||||
for i in self.ldap_machines_classes:
|
||||
result['machine'] += result[i]
|
||||
|
||||
return result
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue