This is an automated email from the ASF dual-hosted git repository.
beto pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-superset.git
The following commit(s) were added to refs/heads/master by this push:
new ab5c910 [bugfix] Fix Tableviz metrics column disorder (#5566)
ab5c910 is described below
commit ab5c9108017d0ce519cc518ffb04a83fb73f4ccc
Author: yamyamyuo <[email protected]>
AuthorDate: Thu Oct 4 23:53:26 2018 +0800
[bugfix] Fix Tableviz metrics column disorder (#5566)
* fix metrics disorder
* add tableviz metric order tests
* lint code
* use OrderedDict to avoid metrics disorder
* fix unit test
---
superset/viz.py | 2 ++
tests/viz_tests.py | 48 ++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 50 insertions(+)
diff --git a/superset/viz.py b/superset/viz.py
index a714546..09129b7 100644
--- a/superset/viz.py
+++ b/superset/viz.py
@@ -100,6 +100,8 @@ class BaseViz(object):
self.process_metrics()
def process_metrics(self):
+ # metrics in TableViz is order sensitive, so metric_dict should be
+ # OrderedDict
self.metric_dict = OrderedDict()
fd = self.form_data
for mkey in METRIC_KEYS:
diff --git a/tests/viz_tests.py b/tests/viz_tests.py
index c1bc15e..da7c02f 100644
--- a/tests/viz_tests.py
+++ b/tests/viz_tests.py
@@ -26,6 +26,54 @@ class BaseVizTestCase(SupersetTestCase):
with self.assertRaises(Exception):
viz.BaseViz(datasource, form_data)
+ def test_process_metrics(self):
+ # test TableViz metrics in correct order
+ form_data = {
+ 'url_params': {},
+ 'row_limit': 500,
+ 'metric': 'sum__SP_POP_TOTL',
+ 'entity': 'country_code',
+ 'secondary_metric': 'sum__SP_POP_TOTL',
+ 'granularity_sqla': 'year',
+ 'page_length': 0,
+ 'all_columns': [],
+ 'viz_type': 'table',
+ 'since': '2014-01-01',
+ 'until': '2014-01-02',
+ 'metrics': [
+ 'sum__SP_POP_TOTL',
+ 'SUM(SE_PRM_NENR_MA)',
+ 'SUM(SP_URB_TOTL)',
+ ],
+ 'country_fieldtype': 'cca3',
+ 'percent_metrics': [
+ 'count',
+ ],
+ 'slice_id': 74,
+ 'time_grain_sqla': None,
+ 'order_by_cols': [],
+ 'groupby': [
+ 'country_name',
+ ],
+ 'compare_lag': '10',
+ 'limit': '25',
+ 'datasource': '2__table',
+ 'table_timestamp_format': '%Y-%m-%d %H:%M:%S',
+ 'markup_type': 'markdown',
+ 'where': '',
+ 'compare_suffix': 'o10Y',
+ }
+ datasource = Mock()
+ datasource.type = 'table'
+ test_viz = viz.BaseViz(datasource, form_data)
+ expect_metric_labels = [u'sum__SP_POP_TOTL',
+ u'SUM(SE_PRM_NENR_MA)',
+ u'SUM(SP_URB_TOTL)',
+ u'count',
+ ]
+ self.assertEqual(test_viz.metric_labels, expect_metric_labels)
+ self.assertEqual(test_viz.all_metrics, expect_metric_labels)
+
def test_get_fillna_returns_default_on_null_columns(self):
form_data = {
'viz_type': 'table',