Help - Classes and attributes

rh0dium sklass at pointcircle.com
Thu Jul 14 03:26:03 CEST 2005


Hi all,

I believe I am having a fundamental problem with my class and I can't
seem to figure out what I am doing wrong.  Basically I want a class
which can do several specific ldap queries.  So in my code I would have
multiple searches.  But I can't figure out how to do it without it
barfing..

The error is straightforward ..

LDAP Version 2.0.8
Traceback (most recent call last):
  File "./ldap-nsc.py", line 62, in ?
    l.search()
  File "./ldap-nsc.py", line 40, in search
    ldap_result_id = l.search_s(baseDN, searchScope, searchAttrs,
retrieveAttrs)
AttributeError: NSCLdap instance has no attribute 'search_s'


The code is also I believe straight forward..

import ldap

class NSCLdap:

    def __init__(self,server="sc-ldap.nsc.com"):
        who=""; cred=""
        self.server=server
        try:
            print "LDAP Version", ldap.__version__
            l=ldap.open(server)
            l.simple_bind_s(who, cred)
            l.protocol_version=ldap.VERSION3
        except ldap.LDAPError, error_message:
            print "Couldn't Connect to %s  %s " %
(server,error_message)

    def search(self, baseDN="o=nsc.com",
retrieveAttrs=None,searchAttrs="cn=*klass*" ):
        searchScope = ldap.SCOPE_SUBTREE
        try:
            ldap_result_id = l.search_s(baseDN, searchScope,
searchAttrs, retrieveAttrs)
            result_set = []
            while 1:
                result_type, result_data = l.result(ldap_result_id, 0)
                if (result_data == []):
                        break
                else:
                        ## here you don't have to append to a list
                        ## you could do whatever you want with the
individual entry
                        ## The appending to list is just for
illustration.
                        if result_type == ldap.RES_SEARCH_ENTRY:
                                result_set.append(result_data)
            print result_set
        except ldap.LDAPError, error_message:
            print "Errors on Search %s " % error_message

    def setBaseDN(self, baseDN="o=nsc.com"):
        return baseDN

if __name__ == '__main__':

    l = NSCLdap()
    l.search()


I would love some pointers - clearly my code thinks that search_s is an
attribute of my class but it's not..

TIA




More information about the Python-list mailing list