Pour savoir si deux résultats de deux SeachUnit
s différentes sont identiques, on appelle la méthode result_uuid
de chaque SearchUnit
. Par exemple, si on fait une recherche dans la table User
et dans le LDAP du SPI, on peut éviter d'afficher deux fois la même personne (en supposant que le username
stocke le login clipper) de la façon suivante :
class UserSearch(ModelSearch):
model = User
search_fields = ["username", "first_name", "last_name"]
def result_uuid(self, user):
return user.username
class UserAndClipperSearch(Compose):
search_units = [
("users", UserSearch()),
("clippers", LDAPSearch()), # pour LDAPSearch, `result_uuid` revoie le login clipper par défaut.
]
Avant ce patch, on précisait un attribut au lieu d'une méthode :
("users", "username", UserSearch),
("clippers", "clipper", LDAPSearch),
C'était plus hackish à mon sens et ça donne moins de souplesse, notamment je pense que ça posera problème pour authens
.