From 345ed7e8ccf1fcec322371d10c2cdf28378c7f02 Mon Sep 17 00:00:00 2001 From: Benjamin Dauvergne Date: Fri, 19 Jun 2020 16:27:33 +0200 Subject: [PATCH] engine: fix filtering of members of unjoined dimensions (#44289) --- bijoe/engine.py | 7 +++---- tests/test_schema1.py | 2 +- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/bijoe/engine.py b/bijoe/engine.py index 0dede1f..2562e51 100644 --- a/bijoe/engine.py +++ b/bijoe/engine.py @@ -163,7 +163,7 @@ class EngineDimension(object): conditions = [] for dimension_name, values in filters: dimension = self.engine_cube.dimensions[dimension_name] - if not (set(dimension.join or []) & set(self.join or [])): + if dimension_name != self.name and not (set(dimension.join or []) & set(self.join or [])): continue # assert dimension.filter condition, values = dimension.build_filter(values) @@ -171,10 +171,9 @@ class EngineDimension(object): continue with self.engine.get_cursor() as cursor: # Ugly... condition = force_text(cursor.mogrify(condition, values)) - if dimension.filter_needs_join and dimension.join: - joins.update(dimension.join) conditions.append(condition) - joins.update(dimension.join) + if dimension.join: + joins.update(dimension.join) with self.engine.get_cursor() as cursor: sql = self.members_query diff --git a/tests/test_schema1.py b/tests/test_schema1.py index c33a20e..ae01abc 100644 --- a/tests/test_schema1.py +++ b/tests/test_schema1.py @@ -95,7 +95,7 @@ def test_string_dimension(schema1, app, admin): assert get_table(response) == [['String', 'a', 'b', 'c', 'Aucun(e)'], ['number of rows', '11', '2', '3', '1']] form.set('filter__string', ['a', 'b', '__none__']) response = form.submit('visualize') - assert get_table(response) == [['String', 'a', 'b', 'c', 'Aucun(e)'], ['number of rows', '11', '2', '0', '1']] + assert get_table(response) == [['String', 'a', 'b', 'Aucun(e)'], ['number of rows', '11', '2', '1']] def test_string_dimension_json_data(schema1, app, admin): -- 2.26.2