X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=engine%2Fcomposite.py;h=49ea0b572fb6ec1a551f59b5439f2b1276fc7db2;hb=b490e035bac3b74b66130548f5a4bf4a30ad8375;hp=71f358dafc956eb2e633f11b9aefabe579be5d6b;hpb=5168df3527056a01fa0ba11d4f40e9039350808f;p=myslice.git diff --git a/engine/composite.py b/engine/composite.py index 71f358da..49ea0b57 100644 --- a/engine/composite.py +++ b/engine/composite.py @@ -2,10 +2,30 @@ from engine.plugin import Plugin class Composite (Plugin): - def __init__ (self, sons=[], *args, **kwds): + def __init__ (self, sons=[], active=None, *args, **kwds): Plugin.__init__ (self, *args, **kwds) self.sons=sons + self.active=active def insert (self, plugin): self.sons.append(plugin) + # xxx currently there is no guarantee that exactly one son will be active + def template_env (self, request): + # this is designed so as to support a template like + # {% for son in sons %} {{ son.rendered }} ... + def is_active (son): +# print 'comparing >%s< and >%s<'%(son.domid,self.active) + return son.domid==self.active + ranks=range(len(self.sons)) + env = { 'sons': + [ { 'rendered': son.render(request), + 'rank': rank, + 'active': is_active(son), + 'title': son.title, + 'domid': son.domid, + 'classname': son.classname, + } + for (son,rank) in zip(self.sons,ranks) ]} + return env +