web/views/primary.py
branchstable
changeset 3975 569771016abb
parent 3974 1d36d9904c41
child 3976 d18b80fe6c82
equal deleted inserted replaced
3974:1d36d9904c41 3975:569771016abb
   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):