diff --git a/shared/views/autocomplete.py b/shared/views/autocomplete.py index 168abc4b..50d0d2c2 100644 --- a/shared/views/autocomplete.py +++ b/shared/views/autocomplete.py @@ -1,3 +1,4 @@ +import logging from collections import namedtuple from dal import autocomplete @@ -12,6 +13,9 @@ else: ldap = None +django_logger = logging.getLogger("django.request") + + class SearchUnit: """Base class for all the search utilities. @@ -128,17 +132,21 @@ class LDAPSearch(SearchUnit): if ldap is None or query == "(&)": return [] - ldap_obj = ldap.initialize(self.ldap_server_url) - res = ldap_obj.search_s( - self.domain_component, ldap.SCOPE_SUBTREE, query, self.search_fields - ) - return [ - Clipper( - clipper=attrs["uid"][0].decode("utf-8"), - fullname=attrs["cn"][0].decode("utf-8"), + try: + ldap_obj = ldap.initialize(self.ldap_server_url) + res = ldap_obj.search_s( + self.domain_component, ldap.SCOPE_SUBTREE, query, self.search_fields ) - for (_, attrs) in res - ] + return [ + Clipper( + clipper=attrs["uid"][0].decode("utf-8"), + fullname=attrs["cn"][0].decode("utf-8"), + ) + for (_, attrs) in res + ] + except ldap.LDAPError as err: + django_logger.error("An LDAP error occurred", exc_info=err) + return [] # ---