diff -r 2b6d3c9455a7 -r 9220ae2cacf1 web/facet.py --- a/web/facet.py Mon Apr 11 16:51:49 2011 +0200 +++ b/web/facet.py Mon Apr 11 18:33:18 2011 +0200 @@ -940,29 +940,37 @@ return None return self.wdgclass(self, min(values), max(values)) - def infvalue(self): - return self._cw.form.get('%s_inf' % self.__regid__) - - def supvalue(self): - return self._cw.form.get('%s_sup' % self.__regid__) - def formatvalue(self, value): """format `value` before in order to insert it in the RQL query""" return unicode(value) + def infvalue(self, min=False): + if min: + return self._cw.form.get('min_%s_inf' % self.__regid__) + return self._cw.form.get('%s_inf' % self.__regid__) + + def supvalue(self, max=False): + if max: + return self._cw.form.get('max_%s_sup' % self.__regid__) + return self._cw.form.get('%s_sup' % self.__regid__) + def add_rql_restrictions(self): infvalue = self.infvalue() - if infvalue is None: # nothing sent + supvalue = self.supvalue() + if infvalue is None or supvalue is None: # nothing sent return - supvalue = self.supvalue() - self.rqlst.add_constant_restriction(self.filtered_variable, - self.rtype, - self.formatvalue(infvalue), - self.attrtype, '>=') - self.rqlst.add_constant_restriction(self.filtered_variable, - self.rtype, - self.formatvalue(supvalue), - self.attrtype, '<=') + # when a value is equal to one of the limit, don't add the restriction, + # else we filter out NULL values implicitly + if infvalue != self.infvalue(min=True): + self.rqlst.add_constant_restriction(self.filtered_variable, + self.rtype, + self.formatvalue(infvalue), + self.attrtype, '>=') + if supvalue != self.supvalue(max=True): + self.rqlst.add_constant_restriction(self.filtered_variable, + self.rtype, + self.formatvalue(supvalue), + self.attrtype, '<=') class DateRangeFacet(RangeFacet): @@ -1138,6 +1146,10 @@ % (facetid, self.minvalue)) self.w(u'' % (facetid, self.maxvalue)) + self.w(u'' + % (facetid, self.minvalue)) + self.w(u'' + % (facetid, self.maxvalue)) self.w(u'
' % sliderid) self.w(u'\n')