Projet

Général

Profil

0001-schemas-handle-case-of-an-unique-IS-NULL-filter-3247.patch

Benjamin Dauvergne, 07 août 2019 16:07

Télécharger (2,87 ko)

Voir les différences:

Subject: [PATCH] schemas: handle case of an unique IS NULL filter (#32476)

 bijoe/schemas.py      | 20 ++++++++++++++------
 tests/test_schema1.py | 19 +++++++++++++++++++
 2 files changed, 33 insertions(+), 6 deletions(-)
bijoe/schemas.py
276 276
                values = [int(v) for v in filter_values]
277 277
            else:
278 278
                values = filter_values
279
            s = ', '.join(['%s'] * len(values))
280
            if self.filter_expression:
281
                expression = self.filter_expression % s
282
            else:
283
                expression = '%s IN (%s)' % (value, s)
279
            expressions = []
280
            if values:
281
                s = ', '.join(['%s'] * len(values))
282
                if self.filter_expression:
283
                    expressions.append(self.filter_expression % s)
284
                else:
285
                    expressions.append('%s IN (%s)' % (value, s))
284 286
            if is_none:
285
                expression = '((%s) OR (%s IS NULL))' % (expression, value)
287
                expressions.append('%s IS NULL' % value)
288
            if len(expressions) == 0:
289
                expression = 'FALSE'
290
            elif len(expressions) == 1:
291
                expression = expressions[0]
292
            else:
293
                expression = ' OR '.join('(%s)' % e for e in expressions)
286 294
            return expression, values
287 295

  
288 296

  
tests/test_schema1.py
87 87
    assert get_table(response) == [['String', 'a', 'b', 'Aucun(e)'], ['number of rows', '11', '2', '1']]
88 88

  
89 89

  
90
def test_item_dimension(schema1, app, admin):
91
    login(app, admin)
92
    response = app.get('/').follow()
93
    response = response.click('Facts 1')
94
    form = response.form
95
    form.set('representation', 'table')
96
    form.set('measure', 'simple_count')
97
    form.set('drilldown_x', 'outersubcategory')
98
    response = form.submit('visualize')
99
    assert get_table(response) == [
100
        ['Outer SubCategory', u'sub\xe94', u'sub\xe95', u'sub\xe96', u'sub\xe98',
101
         u'sub\xe99', u'sub\xe97', u'sub\xe92', u'sub\xe93', u'sub\xe91', '0'],
102
        ['number of rows', '0', '0', '0', '0', '0', '0', '0', '1', '15', '1']
103
    ]
104
    form.set('filter__outersubcategory', ['__none__'])
105
    response = form.submit('visualize')
106
    assert get_table(response) == [['Outer SubCategory', '0'], ['number of rows', '1']]
107

  
108

  
90 109
def test_yearmonth_drilldown(schema1, app, admin):
91 110
    login(app, admin)
92 111
    response = app.get('/').follow()
93
-