web/box.py
branchtls-sprint
changeset 782 01801a10c567
parent 773 eb846103be71
child 809 31962f99770b
equal deleted inserted replaced
775:ed106bb2dcd3 782:01801a10c567
     8 
     8 
     9 from logilab.common.decorators import cached
     9 from logilab.common.decorators import cached
    10 from logilab.mtconverter import html_escape
    10 from logilab.mtconverter import html_escape
    11 
    11 
    12 from cubicweb import Unauthorized, role as get_role
    12 from cubicweb import Unauthorized, role as get_role
    13 from cubicweb.vregistry import objectify_selector
       
    14 from cubicweb.selectors import (one_line_rset,  primary_view,
    13 from cubicweb.selectors import (one_line_rset,  primary_view,
    15                                 match_context_prop, has_related_entities,
    14                                 match_context_prop, abstract_has_related_entities,
    16                                 accepts_compat, has_relation_compat, condition_compat)
    15                                 accepts_compat, has_relation_compat, condition_compat)
    17 from cubicweb.view import Template, ReloadableMixIn
    16 from cubicweb.view import Template, ReloadableMixIn
    18 
    17 
    19 from cubicweb.web.htmlwidgets import (BoxLink, BoxWidget, SideBoxWidget,
    18 from cubicweb.web.htmlwidgets import (BoxLink, BoxWidget, SideBoxWidget,
    20                                       RawBoxItem, BoxSeparator)
    19                                       RawBoxItem, BoxSeparator)
   144         """classes inheriting from EntityBoxTemplate should define cell_call"""
   143         """classes inheriting from EntityBoxTemplate should define cell_call"""
   145         self.cell_call(row, col, **kwargs)
   144         self.cell_call(row, col, **kwargs)
   146 
   145 
   147 
   146 
   148 class RelatedEntityBoxTemplate(EntityBoxTemplate):
   147 class RelatedEntityBoxTemplate(EntityBoxTemplate):
   149     # XXX find a way to generalize access to cls.rtype
   148     __select__ = EntityBoxTemplate.__select__ & abstract_has_related_entities()
   150     @objectify_selector
       
   151     def my_selector(cls, req, rset, row=None, col=0, **kwargs):
       
   152         return EntityBoxTemplate.__select__ & has_related_entities(cls.rtype)
       
   153 
       
   154     __select__ = my_selector
       
   155 
   149 
   156     def cell_call(self, row, col, **kwargs):
   150     def cell_call(self, row, col, **kwargs):
   157         entity = self.entity(row, col)
   151         entity = self.entity(row, col)
   158         limit = self.req.property_value('navigation.related-limit') + 1
   152         limit = self.req.property_value('navigation.related-limit') + 1
   159         role = get_role(self)
   153         role = get_role(self)