schemas: handle case of an unique IS NULL filter (#32476)
This commit is contained in:
parent
ace7a3407b
commit
80332cfc1b
|
@ -276,13 +276,21 @@ class Dimension(Base):
|
|||
values = [int(v) for v in filter_values]
|
||||
else:
|
||||
values = filter_values
|
||||
s = ', '.join(['%s'] * len(values))
|
||||
if self.filter_expression:
|
||||
expression = self.filter_expression % s
|
||||
else:
|
||||
expression = '%s IN (%s)' % (value, s)
|
||||
expressions = []
|
||||
if values:
|
||||
s = ', '.join(['%s'] * len(values))
|
||||
if self.filter_expression:
|
||||
expressions.append(self.filter_expression % s)
|
||||
else:
|
||||
expressions.append('%s IN (%s)' % (value, s))
|
||||
if is_none:
|
||||
expression = '((%s) OR (%s IS NULL))' % (expression, value)
|
||||
expressions.append('%s IS NULL' % value)
|
||||
if len(expressions) == 0:
|
||||
expression = 'FALSE'
|
||||
elif len(expressions) == 1:
|
||||
expression = expressions[0]
|
||||
else:
|
||||
expression = ' OR '.join('(%s)' % e for e in expressions)
|
||||
return expression, values
|
||||
|
||||
|
||||
|
|
|
@ -87,6 +87,25 @@ def test_string_dimension(schema1, app, admin):
|
|||
assert get_table(response) == [['String', 'a', 'b', 'Aucun(e)'], ['number of rows', '11', '2', '1']]
|
||||
|
||||
|
||||
def test_item_dimension(schema1, app, admin):
|
||||
login(app, admin)
|
||||
response = app.get('/').follow()
|
||||
response = response.click('Facts 1')
|
||||
form = response.form
|
||||
form.set('representation', 'table')
|
||||
form.set('measure', 'simple_count')
|
||||
form.set('drilldown_x', 'outersubcategory')
|
||||
response = form.submit('visualize')
|
||||
assert get_table(response) == [
|
||||
['Outer SubCategory', u'sub\xe94', u'sub\xe95', u'sub\xe96', u'sub\xe98',
|
||||
u'sub\xe99', u'sub\xe97', u'sub\xe92', u'sub\xe93', u'sub\xe91', '0'],
|
||||
['number of rows', '0', '0', '0', '0', '0', '0', '0', '1', '15', '1']
|
||||
]
|
||||
form.set('filter__outersubcategory', ['__none__'])
|
||||
response = form.submit('visualize')
|
||||
assert get_table(response) == [['Outer SubCategory', '0'], ['number of rows', '1']]
|
||||
|
||||
|
||||
def test_yearmonth_drilldown(schema1, app, admin):
|
||||
login(app, admin)
|
||||
response = app.get('/').follow()
|
||||
|
|
Loading…
Reference in New Issue