web/facet.py
branchstable
changeset 6336 ae80aed607f2
parent 6251 afc757568492
child 6380 63d5dbaef999
equal deleted inserted replaced
6335:d13d488a453e 6336:ae80aed607f2
    61 from cubicweb.schema import display_name
    61 from cubicweb.schema import display_name
    62 from cubicweb.utils import make_uid
    62 from cubicweb.utils import make_uid
    63 from cubicweb.selectors import match_context_prop, partial_relation_possible
    63 from cubicweb.selectors import match_context_prop, partial_relation_possible
    64 from cubicweb.appobject import AppObject
    64 from cubicweb.appobject import AppObject
    65 from cubicweb.web.htmlwidgets import HTMLWidget
    65 from cubicweb.web.htmlwidgets import HTMLWidget
       
    66 
       
    67 
       
    68 def rtype_facet_title(facet):
       
    69     ptypes = facet.cw_rset.column_types(0)
       
    70     if len(ptypes) == 1:
       
    71         return display_name(facet._cw, facet.rtype, form=facet.role,
       
    72                             context=iter(ptypes).next())
       
    73     return display_name(facet._cw, facet.rtype, form=facet.role)
    66 
    74 
    67 ## rqlst manipulation functions used by facets ################################
    75 ## rqlst manipulation functions used by facets ################################
    68 
    76 
    69 def prepare_facets_rqlst(rqlst, args=None):
    77 def prepare_facets_rqlst(rqlst, args=None):
    70     """prepare a syntax tree to generate facet filters
    78     """prepare a syntax tree to generate facet filters
   509     label_vid = None
   517     label_vid = None
   510 
   518 
   511     # internal purpose
   519     # internal purpose
   512     _select_target_entity = True
   520     _select_target_entity = True
   513 
   521 
   514     @property
   522     title = property(rtype_facet_title)
   515     def title(self):
       
   516         return display_name(self._cw, self.rtype, form=self.role)
       
   517 
   523 
   518     @property
   524     @property
   519     def rql_sort(self):
   525     def rql_sort(self):
   520         """return true if we can handle sorting in the rql query. E.g.  if
   526         """return true if we can handle sorting in the rql query. E.g.  if
   521         sortfunc is set or if we have not to transform the returned value (eg no
   527         sortfunc is set or if we have not to transform the returned value (eg no
   886           role = 'subject'
   892           role = 'subject'
   887     """
   893     """
   888     rtype = None # override me in subclass
   894     rtype = None # override me in subclass
   889     role = 'subject' # role of filtered entity in the relation
   895     role = 'subject' # role of filtered entity in the relation
   890 
   896 
   891     @property
   897     title = property(rtype_facet_title)
   892     def title(self):
       
   893         return display_name(self._cw, self.rtype, self.role)
       
   894 
   898 
   895     def support_and(self):
   899     def support_and(self):
   896         return False
   900         return False
   897 
   901 
   898     def get_widget(self):
   902     def get_widget(self):