You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by hu...@apache.org on 2022/04/14 21:48:57 UTC
[superset] 01/01: fix lint
This is an automated email from the ASF dual-hosted git repository.
hugh pushed a commit to branch rm_time_range_endpoints_2
in repository https://gitbox.apache.org/repos/asf/superset.git
commit 44ff32864614f434e802f4088d474edec34eeb70
Author: hughhhh <hu...@gmail.com>
AuthorDate: Thu Apr 14 17:48:30 2022 -0400
fix lint
---
.../cecc6bf46990_rm_time_range_endpoints_2.py | 74 +++++++++++++++++++++
...ecc6bf46990_rm_time_range_endpoints_2__tests.py | 76 ++++++++++++++++++++++
2 files changed, 150 insertions(+)
diff --git a/superset/migrations/versions/cecc6bf46990_rm_time_range_endpoints_2.py b/superset/migrations/versions/cecc6bf46990_rm_time_range_endpoints_2.py
new file mode 100644
index 0000000000..081704e786
--- /dev/null
+++ b/superset/migrations/versions/cecc6bf46990_rm_time_range_endpoints_2.py
@@ -0,0 +1,74 @@
+# 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.
+"""rm_time_range_endpoints_2
+
+Revision ID: cecc6bf46990
+Revises: 9d8a8d575284
+Create Date: 2022-04-14 17:21:53.996022
+
+"""
+
+# revision identifiers, used by Alembic.
+revision = "cecc6bf46990"
+down_revision = "9d8a8d575284"
+
+import json
+
+import sqlalchemy as sa
+from alembic import op
+from sqlalchemy.ext.declarative import declarative_base
+
+from superset import db
+
+Base = declarative_base()
+
+
+class Slice(Base):
+ __tablename__ = "slices"
+ id = sa.Column(sa.Integer, primary_key=True)
+ query_context = sa.Column(sa.Text)
+ slice_name = sa.Column(sa.String(250))
+
+
+def upgrade_slice(slc: Slice):
+ try:
+ query_context = json.loads(slc.query_context)
+ except json.decoder.JSONDecodeError:
+ pass
+
+ queries = query_context.get("queries")
+
+ for query in queries:
+ query.get("extras", {}).pop("time_range_endpoints", None)
+
+ slc.query_context = json.dumps(query_context)
+
+
+def upgrade():
+ bind = op.get_bind()
+ session = db.Session(bind=bind)
+ for slc in session.query(Slice).filter(
+ Slice.query_context.like("%time_range_endpoints%")
+ ):
+ upgrade_slice(slc)
+
+ session.commit()
+ session.close()
+
+
+def downgrade():
+ pass
diff --git a/tests/integration_tests/migrations/cecc6bf46990_rm_time_range_endpoints_2__tests.py b/tests/integration_tests/migrations/cecc6bf46990_rm_time_range_endpoints_2__tests.py
new file mode 100644
index 0000000000..eacb840c6a
--- /dev/null
+++ b/tests/integration_tests/migrations/cecc6bf46990_rm_time_range_endpoints_2__tests.py
@@ -0,0 +1,76 @@
+import json
+
+from superset.migrations.versions.cecc6bf46990_rm_time_range_endpoints_2 import (
+ Slice,
+ upgrade_slice,
+)
+
+sample_query_context = {
+ "datasource": {"id": 27, "type": "table"},
+ "force": False,
+ "queries": [
+ {
+ "time_range": "No filter",
+ "filters": [],
+ "extras": {
+ "time_grain_sqla": "P1D",
+ "time_range_endpoints": ["inclusive", "exclusive"],
+ "having": "",
+ "having_druid": [],
+ "where": "",
+ },
+ "applied_time_extras": {},
+ "columns": ["a", "b"],
+ "orderby": [],
+ "annotation_layers": [],
+ "row_limit": 1000,
+ "timeseries_limit": 0,
+ "order_desc": True,
+ "url_params": {},
+ "custom_params": {},
+ "custom_form_data": {},
+ "post_processing": [],
+ }
+ ],
+ "form_data": {
+ "viz_type": "table",
+ "datasource": "27__table",
+ "slice_id": 545,
+ "url_params": {},
+ "time_range_endpoints": ["inclusive", "exclusive"],
+ "time_grain_sqla": "P1D",
+ "time_range": "No filter",
+ "query_mode": "raw",
+ "groupby": [],
+ "metrics": [],
+ "all_columns": ["a", "b"],
+ "percent_metrics": [],
+ "adhoc_filters": [],
+ "order_by_cols": [],
+ "row_limit": 1000,
+ "server_page_length": 10,
+ "include_time": False,
+ "order_desc": True,
+ "table_timestamp_format": "smart_date",
+ "show_cell_bars": True,
+ "color_pn": True,
+ "extra_form_data": {},
+ "force": False,
+ "result_format": "json",
+ "result_type": "full",
+ },
+ "result_format": "json",
+ "result_type": "full",
+}
+
+
+def test_upgrade():
+ slc = Slice(slice_name="FOO", query_context=json.dumps(sample_query_context))
+
+ upgrade_slice(slc)
+
+ query_context = json.loads(slc.query_context)
+ queries = query_context.get("queries")
+ for q in queries:
+ extras = q.get("extras", {})
+ assert "time_range_endpoints" not in extras