On 03/04/2010 10:15 AM, Pavel Zůna wrote:
This is somewhat of a tech-preview patch. It works, but the whole
concept might need some more work/thinking done.

It adds another way to extend plugins without resorting to the
versioning system.

Until now, every baseldap command had two callbacks. The pre-callback
called before data was passed to python-ldap and the post-callback
called after.

This patch introduces class methods, that enable the registration of new
pre/post callbacks. It supports top level functions as well, so you
don't have to touch the original class at all.

It works likes this:

from ipalib.plugins.user import user_show

def test_callback(inst, ldap, dn, attrs_list, *keys, **options):
inst.log.info('hello callback world!')
attrs_list = ['uid'] # only retrieve the user name
return dn

user_show.register_pre_callback(test_callback)

The original callbacks defined in the class are always called first.

I don't see any problem with this approach, plus it seems advantageous to have a list of callbacks as opposed to a single callback. FWIW this is how some of the frameworks I'm familiar with (e.g. GTK2) work.

--
John Dennis <jden...@redhat.com>

Looking to carve out IT costs?
www.redhat.com/carveoutcosts/

_______________________________________________
Freeipa-devel mailing list
Freeipa-devel@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-devel

Reply via email to