From commits-return-2430-archive-asf-public=cust-asf.ponee.io@superset.incubator.apache.org Thu Mar 21 04:41:43 2019 Return-Path: X-Original-To: archive-asf-public@cust-asf.ponee.io Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by mx-eu-01.ponee.io (Postfix) with SMTP id 24C2018077A for ; Thu, 21 Mar 2019 05:41:42 +0100 (CET) Received: (qmail 74193 invoked by uid 500); 21 Mar 2019 04:41:42 -0000 Mailing-List: contact commits-help@superset.incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@superset.incubator.apache.org Delivered-To: mailing list commits@superset.incubator.apache.org Received: (qmail 74184 invoked by uid 99); 21 Mar 2019 04:41:42 -0000 Received: from ec2-52-202-80-70.compute-1.amazonaws.com (HELO gitbox.apache.org) (52.202.80.70) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 21 Mar 2019 04:41:42 +0000 Received: by gitbox.apache.org (ASF Mail Server at gitbox.apache.org, from userid 33) id 43FC285078; Thu, 21 Mar 2019 04:41:41 +0000 (UTC) Date: Thu, 21 Mar 2019 04:41:41 +0000 To: "commits@superset.apache.org" Subject: [incubator-superset] branch master updated: Fix filter_box migration PR #6523 (#7066) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Message-ID: <155314330082.4387.9442929842961552717@gitbox.apache.org> From: maximebeauchemin@apache.org X-Git-Host: gitbox.apache.org X-Git-Repo: incubator-superset X-Git-Refname: refs/heads/master X-Git-Reftype: branch X-Git-Oldrev: 61add606ca16a6ba981ccde864b121f5464b697a X-Git-Newrev: b210742ad24d01ca05bc58ca3342c90e301fe073 X-Git-Rev: b210742ad24d01ca05bc58ca3342c90e301fe073 X-Git-NotificationType: ref_changed_plus_diff X-Git-Multimail-Version: 1.5.dev Auto-Submitted: auto-generated This is an automated email from the ASF dual-hosted git repository. maximebeauchemin 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 b210742 Fix filter_box migration PR #6523 (#7066) b210742 is described below commit b210742ad24d01ca05bc58ca3342c90e301fe073 Author: Maxime Beauchemin AuthorDate: Wed Mar 20 21:41:33 2019 -0700 Fix filter_box migration PR #6523 (#7066) * Fix filter_box migration PR #6523 * Fix druid-related bug --- superset/connectors/druid/models.py | 4 ++- .../versions/fb13d49b72f9_better_filters.py | 40 +++++++++++---------- tests/migration_tests.py | 42 ++++++++++++++++++++++ 3 files changed, 67 insertions(+), 19 deletions(-) diff --git a/superset/connectors/druid/models.py b/superset/connectors/druid/models.py index 5776790..3b22ade 100644 --- a/superset/connectors/druid/models.py +++ b/superset/connectors/druid/models.py @@ -1144,7 +1144,9 @@ class DruidDatasource(Model, BaseDatasource): pre_qry['aggregations'] = aggs_dict pre_qry['post_aggregations'] = post_aggs_dict else: - order_by = list(qry['aggregations'].keys())[0] + agg_keys = qry['aggregations'].keys() + order_by = list(agg_keys)[0] if agg_keys else None + # Limit on the number of timeseries, doing a two-phases query pre_qry['granularity'] = 'all' pre_qry['threshold'] = min(row_limit, diff --git a/superset/migrations/versions/fb13d49b72f9_better_filters.py b/superset/migrations/versions/fb13d49b72f9_better_filters.py index 956766d..cac42c3 100644 --- a/superset/migrations/versions/fb13d49b72f9_better_filters.py +++ b/superset/migrations/versions/fb13d49b72f9_better_filters.py @@ -46,6 +46,27 @@ class Slice(Base): slice_name = Column(String(250)) +def upgrade_slice(slc): + params = json.loads(slc.params) + logging.info(f'Upgrading {slc.slice_name}') + cols = params.get('groupby') + metric = params.get('metric') + if cols: + flts = [{ + 'column': col, + 'metric': metric, + 'asc': False, + 'clearable': True, + 'multiple': True, + } for col in cols] + params['filter_configs'] = flts + if 'groupby' in params: + del params['groupby'] + if 'metric' in params: + del params['metric'] + slc.params = json.dumps(params, sort_keys=True) + + def upgrade(): bind = op.get_bind() session = db.Session(bind=bind) @@ -53,24 +74,7 @@ def upgrade(): filter_box_slices = session.query(Slice).filter_by(viz_type='filter_box') for slc in filter_box_slices.all(): try: - params = json.loads(slc.params) - logging.info(f'Upgrading {slc.slice_name}') - cols = params.get('groupby') - metrics = params.get('metrics') - if cols: - flts = [{ - 'column': col, - 'metric': metrics[0] if metrics else None, - 'asc': False, - 'clearable': True, - 'multiple': True, - } for col in cols] - params['filter_configs'] = flts - if 'groupby' in params: - del params['groupby'] - if 'metrics' in params: - del params['metrics'] - slc.params = json.dumps(params, sort_keys=True) + upgrade_slice(slc) except Exception as e: logging.exception(e) diff --git a/tests/migration_tests.py b/tests/migration_tests.py new file mode 100644 index 0000000..530e006 --- /dev/null +++ b/tests/migration_tests.py @@ -0,0 +1,42 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +import json + +from superset.migrations.versions.fb13d49b72f9_better_filters import ( + Slice, upgrade_slice, +) +from .base_tests import SupersetTestCase + + +class MigrationTestCase(SupersetTestCase): + + def test_upgrade_slice(self): + slc = Slice( + slice_name='FOO', + viz_type='filter_box', + params=json.dumps(dict( + metric='foo', + groupby=['bar'], + )), + ) + upgrade_slice(slc) + params = json.loads(slc.params) + self.assertNotIn('metric', params) + self.assertIn('filter_configs', params) + + cfg = params['filter_configs'][0] + self.assertEquals(cfg.get('metric'), 'foo')