diff --git a/superset/databases/commands/export.py b/superset/databases/commands/export.py index 134bda580c7e5..786eb56a0ca1d 100644 --- a/superset/databases/commands/export.py +++ b/superset/databases/commands/export.py @@ -65,25 +65,10 @@ def _export(model: Database) -> Iterator[Tuple[str, str]]: include_defaults=True, export_uuids=True, ) - - # https://github.com/apache/superset/pull/16756 renamed ``allow_csv_upload`` - # to ``allow_file_upload`, but we can't change the V1 schema - replacements = {"allow_file_upload": "allow_csv_upload"} - # this preserves key order, which is important - payload = {replacements.get(key, key): value for key, value in payload.items()} - # TODO (betodealmeida): move this logic to export_to_dict once this # becomes the default export endpoint if payload.get("extra"): - extra = payload["extra"] = parse_extra(payload["extra"]) - - # ``schemas_allowed_for_csv_upload`` was also renamed to - # ``schemas_allowed_for_file_upload``, we need to change to preserve the - # V1 schema - if "schemas_allowed_for_file_upload" in extra: - extra["schemas_allowed_for_csv_upload"] = extra.pop( - "schemas_allowed_for_file_upload" - ) + payload["extra"] = parse_extra(payload["extra"]) payload["version"] = EXPORT_VERSION diff --git a/superset/databases/commands/importers/v1/utils.py b/superset/databases/commands/importers/v1/utils.py index 6704ccd465587..6e016d0e0701f 100644 --- a/superset/databases/commands/importers/v1/utils.py +++ b/superset/databases/commands/importers/v1/utils.py @@ -32,13 +32,6 @@ def import_database( return existing config["id"] = existing.id - # https://github.com/apache/superset/pull/16756 renamed ``csv`` to ``file``. - config["allow_file_upload"] = config.pop("allow_csv_upload") - if "schemas_allowed_for_csv_upload" in config["extra"]: - config["extra"]["schemas_allowed_for_file_upload"] = config["extra"].pop( - "schemas_allowed_for_csv_upload" - ) - # TODO (betodealmeida): move this logic to import_from_dict config["extra"] = json.dumps(config["extra"]) diff --git a/superset/databases/schemas.py b/superset/databases/schemas.py index 6599e8d6d6ae8..763e7db167c8e 100644 --- a/superset/databases/schemas.py +++ b/superset/databases/schemas.py @@ -558,19 +558,11 @@ def fix_schemas_allowed_for_csv_upload( self, data: Dict[str, Any], **kwargs: Any ) -> Dict[str, Any]: """ - Fixes for ``schemas_allowed_for_csv_upload``. - """ - # Fix for https://github.com/apache/superset/pull/16756, which temporarily - # changed the V1 schema. We need to support exports made after that PR and - # before this PR. - if "schemas_allowed_for_file_upload" in data: - data["schemas_allowed_for_csv_upload"] = data.pop( - "schemas_allowed_for_file_upload" - ) + Fix ``schemas_allowed_for_csv_upload`` being a string. - # Fix ``schemas_allowed_for_csv_upload`` being a string. - # Due to a bug in the database modal, some databases might have been - # saved and exported with a string for ``schemas_allowed_for_csv_upload``. + Due to a bug in the database modal, some databases might have been + saved and exported with a string for ``schemas_allowed_for_csv_upload``. + """ schemas_allowed_for_csv_upload = data.get("schemas_allowed_for_csv_upload") if isinstance(schemas_allowed_for_csv_upload, str): data["schemas_allowed_for_csv_upload"] = json.loads( @@ -587,22 +579,6 @@ def fix_schemas_allowed_for_csv_upload( class ImportV1DatabaseSchema(Schema): - # pylint: disable=no-self-use, unused-argument - @pre_load - def fix_allow_csv_upload( - self, data: Dict[str, Any], **kwargs: Any - ) -> Dict[str, Any]: - """ - Fix for ``allow_csv_upload`` . - """ - # Fix for https://github.com/apache/superset/pull/16756, which temporarily - # changed the V1 schema. We need to support exports made after that PR and - # before this PR. - if "allow_file_upload" in data: - data["allow_csv_upload"] = data.pop("allow_file_upload") - - return data - database_name = fields.String(required=True) sqlalchemy_uri = fields.String(required=True) password = fields.String(allow_none=True) diff --git a/tests/integration_tests/databases/commands_tests.py b/tests/integration_tests/databases/commands_tests.py index 389b1acc9ae41..449dd4c59fafb 100644 --- a/tests/integration_tests/databases/commands_tests.py +++ b/tests/integration_tests/databases/commands_tests.py @@ -338,41 +338,6 @@ def test_import_v1_database(self): db.session.delete(database) db.session.commit() - def test_import_v1_database_broken_csv_fields(self): - """ - Test that a database can be imported with broken schema. - - https://github.com/apache/superset/pull/16756 renamed some fields, changing - the V1 schema. This test ensures that we can import databases that were - exported with the broken schema. - """ - broken_config = database_config.copy() - broken_config["allow_file_upload"] = broken_config.pop("allow_csv_upload") - broken_config["extra"] = {"schemas_allowed_for_file_upload": ["upload"]} - - contents = { - "metadata.yaml": yaml.safe_dump(database_metadata_config), - "databases/imported_database.yaml": yaml.safe_dump(broken_config), - } - command = ImportDatabasesCommand(contents) - command.run() - - database = ( - db.session.query(Database).filter_by(uuid=database_config["uuid"]).one() - ) - assert database.allow_file_upload - assert database.allow_ctas - assert database.allow_cvas - assert not database.allow_run_async - assert database.cache_timeout is None - assert database.database_name == "imported_database" - assert database.expose_in_sqllab - assert database.extra == '{"schemas_allowed_for_file_upload": ["upload"]}' - assert database.sqlalchemy_uri == "sqlite:///test.db" - - db.session.delete(database) - db.session.commit() - def test_import_v1_database_multiple(self): """Test that a database can be imported multiple times""" num_databases = db.session.query(Database).count()