def _search(self, search_on='cn', query='', attrs=None, limit=10): context = self.context if attrs is None: attrs = ['uid', 'cn', 'mail'] # connect to the LDAP server portal_properties = getToolByName(context, 'portal_properties') props = getattr(portal_properties, 'portlet_contact_properties') if props.ldap_search_recursive: SCOPE = ldap.SCOPE_SUBTREE else: SCOPE = ldap.SCOPE_ONELEVEL server = LdapServer(props.ldap_server_host, props.ldap_server_port, props.ldap_bind_dn, props.ldap_bind_password, props.ldap_search_base, SCOPE) server.connect() # search contacts results = [] if server.is_connected(): results = server.search(search_on, query, attrs=attrs)[:int(limit)] # close connection server.close() return results
def _setPhoto_ldap(context, uid, photo): portal_properties = getToolByName(context, 'portal_properties') props = portal_properties.portlet_contact_properties if props.ldap_search_recursive: SCOPE = ldap.SCOPE_SUBTREE else: SCOPE = ldap.SCOPE_ONELEVEL server = LdapServer(props.ldap_server_host, props.ldap_server_port, props.ldap_bind_dn, props.ldap_bind_password, props.ldap_search_base, SCOPE) server.connect() entries = server.search('uid', uid, attrs=['jpegPhoto']) contact = entries[0]['datas'] old_photo = contact.get('jpegPhoto') if old_photo: old_photo = old_photo[0] else: old_photo = '' old = {'jpegPhoto': old_photo} new = {'jpegPhoto': photo} ldif = modlist.modifyModlist(old, new) server.l.modify_s(entries[0]['path'], ldif) server.close()