Hi, I'm writing an LDAP plugin for my TG2 application. In this I wrote a small class based decorator with args to set up a connection and call the necessary functionality but I'm having problems with it. Here's my code:
class getConnection(object): def __init__(self, settings, credentials): self.settings = settings self.credentials = credentials def __call__(self, f): def wrapped_f(*args, **kw): ...code snipped... try: if tls: connection.start_tls_s() if anon: con.simple_bind_s() else: con.simple_bind_s( dn, pw ) except ldap.LDAPError, e: print e.message['info'] else: kw['conn'] = connection try: f(*args, **kw) except Exception, e: print 'Exception in Plugin execution: %s' % e finally: connection.unbind() return wrapped_f class LdapPlugin(Plugin): ... def __init__(self, **kw): Plugin.__init__(self) @getConnection(self._settings, self.__cred__) def search(self, **kw): print 'Searching' ... Here the base class constructor(Plugin) fetches plugin specific settings from the web framework and stores it in self._settings and user info in self.__cred__ . Now when the method is invoked, this is the error I get: File '.../plugins/ldap/ldap/__init__.py', line 69 in LdapPlugin @getConnection(self._settings, self.__cred__) NameError: name 'self' is not defined I can simply write a method that gets a connection and deal with it but I wanted to know and learn why decorators is not working in this case. Regards, SZ " life isn't heavy enough,it flies away and floats far above action" Access Yahoo!7 Mail on your mobile. Anytime. Anywhere. Show me how: http://au.mobile.yahoo.com/mail -- http://mail.python.org/mailman/listinfo/python-list