diff --git a/superset/migrations/versions/3317e9248280_add_creation_method_to_reports_model.py b/superset/migrations/versions/3317e9248280_add_creation_method_to_reports_model.py new file mode 100644 index 00000000000..169d4d2b74c --- /dev/null +++ b/superset/migrations/versions/3317e9248280_add_creation_method_to_reports_model.py @@ -0,0 +1,48 @@ +# 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. +"""add_creation_method_to_reports_model + +Revision ID: 3317e9248280 +Revises: 453530256cea +Create Date: 2021-07-14 10:31:38.610095 + +""" + +# revision identifiers, used by Alembic. +revision = "3317e9248280" +down_revision = "453530256cea" + +import sqlalchemy as sa +from alembic import op + + +def upgrade(): + with op.batch_alter_table("report_schedule") as batch_op: + batch_op.add_column( + sa.Column( + "creation_method", sa.VARCHAR(255), server_default="alert_reports", + ) + ) + batch_op.create_index( + op.f("ix_creation_method"), ["creation_method"], unique=False + ) + + +def downgrade(): + with op.batch_alter_table("report_schedule") as batch_op: + batch_op.drop_index("ix_creation_method") + batch_op.drop_column("creation_method") diff --git a/superset/utils/mock_data.py b/superset/utils/mock_data.py index 84981ca59b8..bf36e59c1e3 100644 --- a/superset/utils/mock_data.py +++ b/superset/utils/mock_data.py @@ -69,6 +69,9 @@ days_range = (MAXIMUM_DATE - MINIMUM_DATE).days # pylint: disable=too-many-return-statements, too-many-branches def get_type_generator(sqltype: sqlalchemy.sql.sqltypes) -> Callable[[], Any]: + if isinstance(sqltype, sqlalchemy.dialects.mysql.types.TINYINT): + return lambda: random.choice([0, 1]) + if isinstance( sqltype, (sqlalchemy.sql.sqltypes.INTEGER, sqlalchemy.sql.sqltypes.Integer) ): @@ -83,7 +86,7 @@ def get_type_generator(sqltype: sqlalchemy.sql.sqltypes) -> Callable[[], Any]: length = random.randrange(sqltype.length or 255) length = max(8, length) # for unique values length = min(100, length) # for FAB perms - return lambda: "".join(random.choices(string.printable, k=length)) + return lambda: "".join(random.choices(string.ascii_letters, k=length)) if isinstance( sqltype, (sqlalchemy.sql.sqltypes.TEXT, sqlalchemy.sql.sqltypes.Text) @@ -91,7 +94,7 @@ def get_type_generator(sqltype: sqlalchemy.sql.sqltypes) -> Callable[[], Any]: length = random.randrange(65535) # "practicality beats purity" length = max(length, 2048) - return lambda: "".join(random.choices(string.printable, k=length)) + return lambda: "".join(random.choices(string.ascii_letters, k=length)) if isinstance( sqltype, (sqlalchemy.sql.sqltypes.BOOLEAN, sqlalchemy.sql.sqltypes.Boolean) @@ -130,7 +133,7 @@ def get_type_generator(sqltype: sqlalchemy.sql.sqltypes) -> Callable[[], Any]: if isinstance(sqltype, sqlalchemy.sql.sqltypes.JSON): return lambda: { - "".join(random.choices(string.printable, k=8)): random.randrange(65535) + "".join(random.choices(string.ascii_letters, k=8)): random.randrange(65535) for _ in range(10) }