# HG changeset patch # User Sylvain Thénault # Date 1310994826 -7200 # Node ID fb2501d29587691a8ada5ba58839bee8f6d09fe6 # Parent 3217298823c15aa4f21a9b76af7ef1f271ecf6e3 [facets] closes #1827464: facet box always appear by implementing proper selectors diff -r 3217298823c1 -r fb2501d29587 web/views/facets.py --- a/web/views/facets.py Mon Jul 18 12:13:53 2011 +0200 +++ b/web/views/facets.py Mon Jul 18 15:13:46 2011 +0200 @@ -65,15 +65,24 @@ @objectify_selector def contextview_selector(cls, req, rset=None, row=None, col=None, view=None, **kwargs): - if view and getattr(view, 'filter_box_context_info', lambda: None)(): - return 1 + if view: + try: + getcontext = getattr(view, 'filter_box_context_info') + except AttributeError: + return 0 + rset = getcontext()[0] + if rset is None or rset.rowcount < 2: + return 0 + wdgs = facets(req, rset, cls.__regid__, mainvar)[1] + return len(wdgs) return 0 @objectify_selector def has_facets(cls, req, rset=None, mainvar=None, **kwargs): - if rset is None: + if rset is None or rset.rowcount < 2: return 0 - return len(facets(req, rset, cls.__regid__, mainvar)[1]) + wdgs = facets(req, rset, cls.__regid__, mainvar)[1] + return len(wdgs) def filter_hiddens(w, baserql, wdgs, **kwargs): @@ -94,8 +103,7 @@ """display a form to filter some view's content""" mainvar = self.cw_extra_kwargs.get('mainvar') baserql, wdgs = facets(self._cw, rset, self.__regid__, mainvar) - if not wdgs: # may happen in contextview_selector matched - return + assert wdgs self._cw.add_js(self.needs_js) self._cw.add_css(self.needs_css) self._cw.html_headers.define_var('facetLoadingMsg', @@ -146,8 +154,7 @@ def render_body(self, w, **kwargs): req = self._cw rset, vid, divid, paginate = self._get_context() - if len(rset) < 2: - return + assert len(rset) > 1 if vid is None: vid = req.form.get('vid') if self.bk_linkbox_template and req.vreg.schema['Bookmark'].has_perm(req, 'add'):