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 <[email protected]> Looking to carve out IT costs? www.redhat.com/carveoutcosts/ _______________________________________________ Freeipa-devel mailing list [email protected] https://www.redhat.com/mailman/listinfo/freeipa-devel
