Pour savoir si deux résultats de deux SeachUnits 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.