diff --git a/superset/examples/birth_names.py b/superset/examples/birth_names.py index ec79dd70d204..b9142db74848 100644 --- a/superset/examples/birth_names.py +++ b/superset/examples/birth_names.py @@ -126,7 +126,6 @@ def load_birth_names(only_metadata=False, force=False): "since": "100 years ago", "until": "now", "viz_type": "table", - "where": "", "markup_type": "markdown", } diff --git a/superset/examples/country_map.py b/superset/examples/country_map.py index d18b512bbe58..7876da18b8cf 100644 --- a/superset/examples/country_map.py +++ b/superset/examples/country_map.py @@ -90,7 +90,6 @@ def load_country_map_data(only_metadata=False, force=False): "granularity_sqla": "", "since": "", "until": "", - "where": "", "viz_type": "country_map", "entity": "DEPT_ID", "metric": { diff --git a/superset/examples/deck.py b/superset/examples/deck.py index 7b80e565a8f1..2628700b471a 100644 --- a/superset/examples/deck.py +++ b/superset/examples/deck.py @@ -173,10 +173,8 @@ def load_deck_dash(): "spatial": {"type": "latlong", "lonCol": "LON", "latCol": "LAT"}, "color_picker": COLOR_RED, "datasource": "5__table", - "filters": [], "granularity_sqla": None, "groupby": [], - "having": "", "mapbox_style": "mapbox://styles/mapbox/light-v9", "multiplier": 10, "point_radius_fixed": {"type": "metric", "value": "count"}, @@ -195,7 +193,6 @@ def load_deck_dash(): "zoom": 12.729132798697304, }, "viz_type": "deck_scatter", - "where": "", } print("Creating Scatterplot slice") @@ -211,7 +208,6 @@ def load_deck_dash(): slice_data = { "point_unit": "square_m", - "filters": [], "row_limit": 5000, "spatial": {"type": "latlong", "lonCol": "LON", "latCol": "LAT"}, "mapbox_style": "mapbox://styles/mapbox/dark-v9", @@ -222,8 +218,6 @@ def load_deck_dash(): "point_radius": "Auto", "color_picker": {"a": 1, "r": 14, "b": 0, "g": 255}, "grid_size": 20, - "where": "", - "having": "", "viewport": { "zoom": 14.161641703941438, "longitude": -122.41827069521386, @@ -249,7 +243,6 @@ def load_deck_dash(): slice_data = { "spatial": {"type": "latlong", "lonCol": "LON", "latCol": "LAT"}, - "filters": [], "row_limit": 5000, "mapbox_style": "mapbox://styles/mapbox/streets-v9", "granularity_sqla": None, @@ -261,7 +254,6 @@ def load_deck_dash(): "color_picker": {"a": 1, "r": 14, "b": 0, "g": 255}, "grid_size": 40, "extruded": True, - "having": "", "viewport": { "latitude": 37.789795085160335, "pitch": 54.08961642447763, @@ -269,7 +261,6 @@ def load_deck_dash(): "longitude": -122.40632230075536, "bearing": -2.3984797349335167, }, - "where": "", "point_radius_fixed": {"type": "fix", "value": 2000}, "datasource": "5__table", "time_grain_sqla": None, @@ -288,7 +279,6 @@ def load_deck_dash(): slice_data = { "spatial": {"type": "latlong", "lonCol": "LON", "latCol": "LAT"}, - "filters": [], "row_limit": 5000, "mapbox_style": "mapbox://styles/mapbox/satellite-streets-v9", "granularity_sqla": None, @@ -300,7 +290,6 @@ def load_deck_dash(): "color_picker": {"a": 1, "r": 14, "b": 0, "g": 255}, "grid_size": 120, "extruded": True, - "having": "", "viewport": { "longitude": -122.42066918995666, "bearing": 155.80099696026355, @@ -308,7 +297,6 @@ def load_deck_dash(): "latitude": 37.7942314882596, "pitch": 53.470800300695146, }, - "where": "", "point_radius_fixed": {"type": "fix", "value": 2000}, "datasource": "5__table", "time_grain_sqla": None, @@ -403,9 +391,6 @@ def load_deck_dash(): "js_onclick_href": "", "legend_format": ".1s", "legend_position": "tr", - "where": "", - "having": "", - "filters": [], } print("Creating Polygon slice") @@ -456,9 +441,6 @@ def load_deck_dash(): }, "color_picker": {"r": 0, "g": 122, "b": 135, "a": 1}, "stroke_width": 1, - "where": "", - "having": "", - "filters": [], } print("Creating Arc slice") @@ -508,9 +490,6 @@ def load_deck_dash(): "}));", "js_tooltip": "", "js_onclick_href": "", - "where": "", - "having": "", - "filters": [], } print("Creating Path slice") diff --git a/superset/examples/energy.py b/superset/examples/energy.py index 49c15d84162e..359828b44013 100644 --- a/superset/examples/energy.py +++ b/superset/examples/energy.py @@ -77,12 +77,10 @@ def load_energy(only_metadata=False, force=False): "source", "target" ], - "having": "", "metric": "sum__value", "row_limit": "5000", "slice_name": "Energy Sankey", - "viz_type": "sankey", - "where": "" + "viz_type": "sankey" } """ ), @@ -104,13 +102,11 @@ def load_energy(only_metadata=False, force=False): "source", "target" ], - "having": "", "link_length": "200", "metric": "sum__value", "row_limit": "5000", "slice_name": "Force", - "viz_type": "directed_force", - "where": "" + "viz_type": "directed_force" } """ ), @@ -130,13 +126,11 @@ def load_energy(only_metadata=False, force=False): "all_columns_y": "target", "canvas_image_rendering": "pixelated", "collapsed_fieldsets": "", - "having": "", "linear_color_scheme": "blue_white_yellow", "metric": "sum__value", "normalize_across": "heatmap", "slice_name": "Heatmap", "viz_type": "heatmap", - "where": "", "xscale_interval": "1", "yscale_interval": "1" } diff --git a/superset/examples/long_lat.py b/superset/examples/long_lat.py index 40ddf3520e7e..4e8178c7837a 100644 --- a/superset/examples/long_lat.py +++ b/superset/examples/long_lat.py @@ -96,7 +96,6 @@ def load_long_lat_data(only_metadata=False, force=False): "granularity_sqla": "day", "since": "2014-01-01", "until": "now", - "where": "", "viz_type": "mapbox", "all_columns_x": "LON", "all_columns_y": "LAT", diff --git a/superset/examples/multiformat_time_series.py b/superset/examples/multiformat_time_series.py index 84ac93e26b88..8c62c46aa24d 100644 --- a/superset/examples/multiformat_time_series.py +++ b/superset/examples/multiformat_time_series.py @@ -98,7 +98,6 @@ def load_multiformat_time_series(only_metadata=False, force=False): "row_limit": config["ROW_LIMIT"], "since": "2015", "until": "2016", - "where": "", "viz_type": "cal_heatmap", "domain_granularity": "month", "subdomain_granularity": "day", diff --git a/superset/examples/random_time_series.py b/superset/examples/random_time_series.py index eb1e82721ea1..b12c44a32e83 100644 --- a/superset/examples/random_time_series.py +++ b/superset/examples/random_time_series.py @@ -62,7 +62,6 @@ def load_random_time_series_data(only_metadata=False, force=False): "since": "1 year ago", "until": "now", "metric": "count", - "where": "", "viz_type": "cal_heatmap", "domain_granularity": "month", "subdomain_granularity": "day", diff --git a/superset/examples/unicode_test_data.py b/superset/examples/unicode_test_data.py index 14e691852a5b..aed109c11de3 100644 --- a/superset/examples/unicode_test_data.py +++ b/superset/examples/unicode_test_data.py @@ -90,7 +90,6 @@ def load_unicode_test_data(only_metadata=False, force=False): "row_limit": config["ROW_LIMIT"], "since": "100 years ago", "until": "now", - "where": "", "viz_type": "word_cloud", "size_from": "10", "series": "short_phrase", diff --git a/superset/examples/world_bank.py b/superset/examples/world_bank.py index 8c1e11a65c12..2a4b607ca337 100644 --- a/superset/examples/world_bank.py +++ b/superset/examples/world_bank.py @@ -108,7 +108,6 @@ def load_world_bank_health_n_pop(only_metadata=False, force=False): "since": "2014-01-01", "until": "2014-01-02", "time_range": "2014-01-01 : 2014-01-02", - "where": "", "markup_type": "markdown", "country_fieldtype": "cca3", "secondary_metric": { @@ -226,10 +225,12 @@ def load_world_bank_health_n_pop(only_metadata=False, force=False): y="sum__SP_DYN_LE00_IN", size="sum__SP_POP_TOTL", max_bubble_size="50", - filters=[ + adhoc_filters=[ { - "col": "country_code", - "val": [ + "clause": "WHERE", + "expressionType": "SIMPLE", + "filterOptionName": "2745eae5", + "comparator": [ "TCA", "MNP", "DMA", @@ -245,7 +246,8 @@ def load_world_bank_health_n_pop(only_metadata=False, force=False): "AMA", "PLW", ], - "op": "not in", + "operator": "not in", + "subject": "country_code", } ], ), diff --git a/superset/migrations/versions/78ee127d0d1d_reconvert_legacy_filters_into_adhoc.py b/superset/migrations/versions/78ee127d0d1d_reconvert_legacy_filters_into_adhoc.py new file mode 100644 index 000000000000..1d0690c5e047 --- /dev/null +++ b/superset/migrations/versions/78ee127d0d1d_reconvert_legacy_filters_into_adhoc.py @@ -0,0 +1,76 @@ +# 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. +"""reconvert legacy filters into adhoc + +Revision ID: 78ee127d0d1d +Revises: c2acd2cf3df2 +Create Date: 2019-11-06 15:23:26.497876 + +""" + +# revision identifiers, used by Alembic. +revision = "78ee127d0d1d" +down_revision = "c2acd2cf3df2" + +import copy +import json +import logging +import uuid +from collections import defaultdict + +from alembic import op +from sqlalchemy import Column, Integer, Text +from sqlalchemy.ext.declarative import declarative_base + +from superset import db +from superset.utils.core import ( + convert_legacy_filters_into_adhoc, + split_adhoc_filters_into_base_filters, +) + +Base = declarative_base() + + +class Slice(Base): + __tablename__ = "slices" + + id = Column(Integer, primary_key=True) + params = Column(Text) + + +def upgrade(): + bind = op.get_bind() + session = db.Session(bind=bind) + + for slc in session.query(Slice).all(): + if slc.params: + try: + source = json.loads(slc.params) + target = copy.deepcopy(source) + convert_legacy_filters_into_adhoc(target) + + if source != target: + slc.params = json.dumps(target, sort_keys=True) + except Exception as ex: + logging.warn(ex) + + session.commit() + session.close() + + +def downgrade(): + pass