156 """display side related relations: |
156 """display side related relations: |
157 non-meta in a first step, meta in a second step |
157 non-meta in a first step, meta in a second step |
158 """ |
158 """ |
159 for box in boxes: |
159 for box in boxes: |
160 if isinstance(box, tuple): |
160 if isinstance(box, tuple): |
161 label, rset, vid = box |
161 try: |
|
162 label, rset, vid, dispctrl = box |
|
163 except ValueError: |
|
164 warn('box views should now be defined as a 4-uple (label, rset, vid, dispctrl), ' |
|
165 'please update %s' % self.__class__.__name__, |
|
166 DeprecationWarning) |
|
167 label, rset, vid = box |
162 self.w(u'<div class="sideBox">') |
168 self.w(u'<div class="sideBox">') |
163 self.wview(vid, rset, title=label) |
169 self.wview(vid, rset, title=label) |
164 self.w(u'</div>') |
170 self.w(u'</div>') |
165 else: |
171 else: |
166 try: |
172 try: |
176 rset = self._relation_rset(entity, rschema, role, dispctrl) |
182 rset = self._relation_rset(entity, rschema, role, dispctrl) |
177 if not rset: |
183 if not rset: |
178 continue |
184 continue |
179 label = display_name(self.req, rschema.type, role) |
185 label = display_name(self.req, rschema.type, role) |
180 vid = dispctrl.get('vid', 'sidebox') |
186 vid = dispctrl.get('vid', 'sidebox') |
181 sideboxes.append( (label, rset, vid) ) |
187 sideboxes.append( (label, rset, vid, dispctrl) ) |
182 sideboxes += self.vreg['boxes'].possible_vobjects( |
188 sideboxes += self.vreg['boxes'].possible_vobjects( |
183 self.req, rset=self.rset, row=self.row, view=self, |
189 self.req, rset=self.rset, row=self.row, view=self, |
184 context='incontext') |
190 context='incontext') |
185 return sideboxes |
191 # XXX since we've two sorted list, it may be worth using bisect |
|
192 def get_order(x): |
|
193 if isinstance(x, tuple): |
|
194 # x is a view box (label, rset, vid, dispctrl) |
|
195 # default to 1000 so view boxes occurs after component boxes |
|
196 return x[-1].get('order', 1000) |
|
197 # x is a component box |
|
198 return x.propval('order') |
|
199 return sorted(sideboxes, key=get_order) |
186 |
200 |
187 def _section_def(self, entity, where): |
201 def _section_def(self, entity, where): |
188 rdefs = [] |
202 rdefs = [] |
189 eschema = entity.e_schema |
203 eschema = entity.e_schema |
190 for rschema, tschemas, role in eschema.relation_definitions(True): |
204 for rschema, tschemas, role in eschema.relation_definitions(True): |