>>>>> "MW" == Martin Whinnery <[EMAIL PROTECTED]> writes:
MW> Please indulge a python virgin. Barry has advised someone to MW> 'overload the Load & Save function' in extend.py . Would MW> someone help me with a little sample? It doesn't need to do MW> anything useful, just replace the original function. Understand that this stuff is a kludge that should make /some/ radical customization of Mailman easier. The specific use case I had in mind was the ability to create different MemberAdaptor implementations, which I think is pretty close to what you're trying to do. Note that you may or may not need to overload MailList.Load() and MailList.Save() unless you also want to customize how list attributes are stored. If all you care about is getting member information out of LDAP, you might only need to set the MailList object's _memberadaptor attribute to something other than an OldStyleMemberships instance. --------- My efforts so far ------------- # /usr/local/mailman/lists/ldaplist/extend.py def extend(mlist): mlist.OldSave = mlist.Save def MySave(self): print "WOOKIE" # So I can see it in withlist mlist.__class__.Save(self) mlist.Save = MySave -------- snip snip ---------------------- I think this is pretty close to what I had in mind, although I'm not sure why you want to call the original Save function in MySave(), and why you wouldn't just call mlist.OldSave() if you really wanted to do that. But when I try m.Save(m) from within "withlist ldaplist", I get a 'NotLocked' error: NotLockedError: <LockFile 137391332: /usr/local/mailman/locks/ldaplist.lock [unlocked: 18000sec] pid=9172>: None Did you use the -l option to withlist? Or did you explicit call m.Lock()? If not, getting this exception probably has little to do with extend.py (the list has to be locked in order to Save it). But as I said, I'm not sure you'll need to override Load() and Save() -- unless you're going to allow the writeable methods in the MemberAdaptor interface to be called through Mailman. You'll definitely want to write an implementation of MemberAdaptor that gets its data through LDAP, and then in your extend.py file, do something like -------------------- snip snip -------------------- # extend.py def extend(mlist): # You might want to key off of something other than the list's # internal name. listid = mlist.internal_name() # Get all member info from LDAP mlist._memberadaptor = LDAPMemberAdaptor(listid) -------------------- snip snip -------------------- HTH, -Barry _______________________________________________ Mailman-Developers mailing list [EMAIL PROTECTED] http://mail.python.org/mailman/listinfo/mailman-developers