diff -r f8955575541c -r ddb10568f5f8 cwvreg.py --- a/cwvreg.py Fri Oct 16 14:38:01 2009 +0200 +++ b/cwvreg.py Fri Oct 16 15:17:28 2009 +0200 @@ -65,16 +65,28 @@ for appobject in appobjects: appobject.vreg_initialization_completed() - def render(self, __oid, req, __fallback_oid=None, rset=None, **kwargs): - """select object, or fallback object if specified and the first one - isn't selectable, then render it + def render(self, __oid, req, __fallback_oid=None, rset=None, initargs=None, + **kwargs): + """Select object with the given id (`__oid`) then render it. If the + object isn't selectable, try to select fallback object if + `__fallback_oid` is specified. + + If specified `initargs` is expected to be a dictionnary containing + arguments that should be given to selection (hence to object's __init__ + as well), but not to render(). Other arbitrary keyword arguments will be + given to selection *and* to render(), and so should be handled by + object's call or cell_call method.. """ + if initargs is None: + initargs = kwargs + else: + initargs.update(kwargsargs) try: - obj = self.select(__oid, req, rset=rset, **kwargs) + obj = self.select(__oid, req, rset=rset, **initargs) except NoSelectableObject: if __fallback_oid is None: raise - obj = self.select(__fallback_oid, req, rset=rset, **kwargs) + obj = self.select(__fallback_oid, req, rset=rset, **initargs) return obj.render(**kwargs) def select_vobject(self, oid, *args, **kwargs):