# HG changeset patch # User Pierre-Yves David # Date 1318334658 -7200 # Node ID 82d76492e21eac069737f7c2284688a0c65e0f16 # Parent 28fe0b91ad8ad9d5003f2c8e8d9bbb9219f1840b [facet] Add infered type restriction to Filtered result set (closes #1988776) This does not alter the result while allowing more selection option on other variable than the filtered one. diff -r 28fe0b91ad8a -r 82d76492e21e web/views/facets.py --- a/web/views/facets.py Tue Oct 11 14:28:48 2011 +0200 +++ b/web/views/facets.py Tue Oct 11 14:04:18 2011 +0200 @@ -27,6 +27,7 @@ match_context_prop, yes, relation_possible) from cubicweb.utils import json_dumps from cubicweb.web import component, facet as facetbase +from cubicweb.rqlrewrite import add_types_restriction def facets(req, rset, context, mainvar=None): """return the base rql and a list of widgets for facets applying to the @@ -53,6 +54,17 @@ # union not yet supported if len(origqlst.children) != 1: return None, () + + # Add type restriction to rql. This allow the get_type() method to return + # useful value on variable extracted from a select statement. + # + # This is done on origqlst to ensure all rql related objects are properly + # enriched when handled by a Facet: + # - the rset.syntax_tree() during selection + # - the select during selection + # - the select during filtering + + add_types_restriction(req.vreg.schema, origqlst.children[0]) rqlst = origqlst.copy() select = rqlst.children[0] filtered_variable, baserql = facetbase.init_facets(rset, select, mainvar)