equal
deleted
inserted
replaced
92 ## rqlst manipulation functions used by facets ################################ |
92 ## rqlst manipulation functions used by facets ################################ |
93 |
93 |
94 def prepare_facets_rqlst(rqlst, args=None): |
94 def prepare_facets_rqlst(rqlst, args=None): |
95 """prepare a syntax tree to generate facet filters |
95 """prepare a syntax tree to generate facet filters |
96 |
96 |
97 * remove ORDERBY clause |
97 * remove ORDERBY/GROUPBY clauses |
98 * cleanup selection (remove everything) |
98 * cleanup selection (remove everything) |
99 * undefine unnecessary variables |
99 * undefine unnecessary variables |
100 * set DISTINCT |
100 * set DISTINCT |
101 * unset LIMIT/OFFSET |
101 * unset LIMIT/OFFSET |
102 """ |
102 """ |
104 select = rqlst.children[0] |
104 select = rqlst.children[0] |
105 mainvar = filtered_variable(select) |
105 mainvar = filtered_variable(select) |
106 select.set_limit(None) |
106 select.set_limit(None) |
107 select.set_offset(None) |
107 select.set_offset(None) |
108 baserql = select.as_string(kwargs=args) |
108 baserql = select.as_string(kwargs=args) |
109 # cleanup sort terms |
109 # cleanup sort terms / group by |
110 select.remove_sort_terms() |
110 select.remove_sort_terms() |
|
111 select.remove_groups() |
|
112 # XXX remove aggregat from having |
111 # selection: only vocabulary entity |
113 # selection: only vocabulary entity |
112 for term in select.selection[:]: |
114 for term in select.selection[:]: |
113 select.remove_selected(term) |
115 select.remove_selected(term) |
114 # remove unbound variables which only have some type restriction |
116 # remove unbound variables which only have some type restriction |
115 for dvar in select.defined_vars.values(): |
117 for dvar in select.defined_vars.values(): |