From ad6327db95ba8628e9890e2b2813ae088178d9c1 Mon Sep 17 00:00:00 2001 From: Kamil Gabryjelski Date: Fri, 1 Mar 2024 11:43:22 +0100 Subject: [PATCH] fix: Migration for single metric in Big Number with Time Comparison (#27351) --- .../transformProps.ts | 1 - ...1b217cd8cd_big_number_kpi_single_metric.py | 93 +++++++++++++++++++ 2 files changed, 93 insertions(+), 1 deletion(-) create mode 100644 superset/migrations/versions/2024-03-01_10-47_be1b217cd8cd_big_number_kpi_single_metric.py diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberPeriodOverPeriod/transformProps.ts b/superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberPeriodOverPeriod/transformProps.ts index 40f8b14fbdc5a..ebdd16bdb1daf 100644 --- a/superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberPeriodOverPeriod/transformProps.ts +++ b/superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberPeriodOverPeriod/transformProps.ts @@ -143,7 +143,6 @@ export default function transformProps(chartProps: ChartProps) { width, height, data, - metric, metricName, bigNumber, prevNumber, diff --git a/superset/migrations/versions/2024-03-01_10-47_be1b217cd8cd_big_number_kpi_single_metric.py b/superset/migrations/versions/2024-03-01_10-47_be1b217cd8cd_big_number_kpi_single_metric.py new file mode 100644 index 0000000000000..c0e03215f7714 --- /dev/null +++ b/superset/migrations/versions/2024-03-01_10-47_be1b217cd8cd_big_number_kpi_single_metric.py @@ -0,0 +1,93 @@ +# 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. +"""big_number_kpi_single_metric + +Revision ID: be1b217cd8cd +Revises: 17fcea065655 +Create Date: 2024-03-01 10:47:42.373508 + +""" + +# revision identifiers, used by Alembic. +revision = "be1b217cd8cd" +down_revision = "17fcea065655" + + +import json + +from alembic import op +from sqlalchemy import Column, Integer, String, Text +from sqlalchemy.ext.declarative import declarative_base + +from superset import db +from superset.migrations.shared.utils import paginated_update + +Base = declarative_base() + + +class Slice(Base): + __tablename__ = "slices" + + id = Column(Integer, primary_key=True) + params = Column(Text) + viz_type = Column(String(250)) + + +def upgrade(): + bind = op.get_bind() + session = db.Session(bind=bind) + + for slc in paginated_update( + session.query(Slice).filter(Slice.viz_type == "pop_kpi") + ): + try: + params = json.loads(slc.params) + + if "metrics" in params: + if params["metrics"]: + params["metric"] = params["metrics"][0] + + del params["metrics"] + slc.params = json.dumps(params, sort_keys=True) + except Exception: + pass + + session.commit() + session.close() + + +def downgrade(): + bind = op.get_bind() + session = db.Session(bind=bind) + + for slc in paginated_update( + session.query(Slice).filter(Slice.viz_type == "pop_kpi") + ): + try: + params = json.loads(slc.params) + + if "metric" in params: + if params["metric"]: + params["metrics"] = [params["metric"]] + + del params["metric"] + slc.params = json.dumps(params, sort_keys=True) + except Exception: + pass + + session.commit() + session.close()