--- a/mixins.py Thu Jun 10 16:28:04 2010 +0200
+++ b/mixins.py Thu Jun 10 16:28:06 2010 +0200
@@ -194,7 +194,7 @@
entity = view.cw_rset.get_entity(row, col)
if entity.eid in done:
msg = entity._cw._('loop in %(rel)s relation (%(eid)s)') % {
- 'rel': entity.tree_attribute,
+ 'rel': entity.cw_adapt_to('ITree').tree_relation,
'eid': entity.eid
}
return None, msg
@@ -216,7 +216,8 @@
done = set()
super(TreeViewMixIn, self).call(done=done, **kwargs)
- def cell_call(self, row, col=0, vid=None, done=None, **kwargs):
+ def cell_call(self, row, col=0, vid=None, done=None, maxlevel=None, **kwargs):
+ assert maxlevel is None or maxlevel > 0
done, entity = _done_init(done, self, row, col)
if done is None:
# entity is actually an error message
@@ -224,8 +225,14 @@
return
self.open_item(entity)
entity.view(vid or self.item_vid, w=self.w, **kwargs)
+ if maxlevel is not None:
+ maxlevel -= 1
+ if maxlevel == 0:
+ self.close_item(entity)
+ return
relatedrset = entity.children(entities=False)
- self.wview(self.__regid__, relatedrset, 'null', done=done, **kwargs)
+ self.wview(self.__regid__, relatedrset, 'null', done=done,
+ maxlevel=maxlevel, **kwargs)
self.close_item(entity)
def open_item(self, entity):