various changes around settings management
[unfold.git] / engine / composite.py
index fd72db5..49ea0b5 100644 (file)
@@ -2,23 +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 }} ...
-        return { 'sons': 
+        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,
-                     'uuid': son.uuid}
-                   for son in self.sons ]}
+                     'domid': son.domid,
+                     'classname': son.classname,
+                     }
+                   for (son,rank) in zip(self.sons,ranks) ]}
+        return env
 
-    # xxx need a way to select an active son, like e.g.
-    # Composite (active='some string')
-    # and we could then try to find that string in either title or uuid or some other place
-    # in which case the corresponding 'son' entry in template_env above would son.active=True