# HG changeset patch # User Sylvain Thénault # Date 1309526563 -7200 # Node ID 9030e8a4481e05a70cd9d9683d37e28cdc7955b7 # Parent 781def950a859f5c444bb9f42b90d51aaf3e97b9 [facets] should remove groupby from base rqlst. Closes #1796196 as we search for values for a variable, there seems to be no case where we would be interested in groups, though there are clearly some were leaving groups cause errors. diff -r 781def950a85 -r 9030e8a4481e web/facet.py --- a/web/facet.py Fri Jul 01 12:20:24 2011 +0200 +++ b/web/facet.py Fri Jul 01 15:22:43 2011 +0200 @@ -78,7 +78,7 @@ def prepare_facets_rqlst(rqlst, args=None): """prepare a syntax tree to generate facet filters - * remove ORDERBY clause + * remove ORDERBY/GROUPBY clauses * cleanup selection (remove everything) * undefine unnecessary variables * set DISTINCT @@ -91,8 +91,10 @@ select.set_limit(None) select.set_offset(None) baserql = select.as_string(kwargs=args) - # cleanup sort terms + # cleanup sort terms / group by select.remove_sort_terms() + select.remove_groups() + # XXX remove aggregat from having # selection: only vocabulary entity for term in select.selection[:]: select.remove_selected(term) diff -r 781def950a85 -r 9030e8a4481e web/test/unittest_facet.py --- a/web/test/unittest_facet.py Fri Jul 01 12:20:24 2011 +0200 +++ b/web/test/unittest_facet.py Fri Jul 01 15:22:43 2011 +0200 @@ -66,18 +66,18 @@ self.assertEqual(f.vocabulary(), [(u'guests', guests), (u'managers', managers)]) # ensure rqlst is left unmodified - self.assertEqual(rqlst.as_string(), 'DISTINCT Any GROUPBY X WHERE X in_group G?, G name GN, NOT G name "users"') + self.assertEqual(rqlst.as_string(), 'DISTINCT Any WHERE X in_group G?, G name GN, NOT G name "users"') #rqlst = rset.syntax_tree() self.assertEqual(sorted(f.possible_values()), [str(guests), str(managers)]) # ensure rqlst is left unmodified - self.assertEqual(rqlst.as_string(), 'DISTINCT Any GROUPBY X WHERE X in_group G?, G name GN, NOT G name "users"') + self.assertEqual(rqlst.as_string(), 'DISTINCT Any WHERE X in_group G?, G name GN, NOT G name "users"') req.form[f.__regid__] = str(guests) f.add_rql_restrictions() # selection is cluttered because rqlst has been prepared for facet (it # is not in real life) - self.assertEqual(f.rqlst.as_string(), - 'DISTINCT Any GROUPBY X WHERE X in_group G?, G name GN, NOT G name "users", X in_group D, D eid %s' % guests) + self.assertEqual(f.select.as_string(), + 'DISTINCT Any WHERE X in_group G?, G name GN, NOT G name "users", X in_group D, D eid %s' % guests) def test_relation_no_relation_1(self): f, (guests, managers) = self._in_group_facet(no_relation=True)