feat: add and use UUIDMixin for most models (#30398)
This commit is contained in:
parent
7f72b062d1
commit
71dca5c076
|
|
@ -0,0 +1,47 @@
|
|||
# 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.
|
||||
"""UUIDMixin
|
||||
|
||||
Revision ID: 7b17aa722e30
|
||||
Revises: 48cbb571fa3a
|
||||
Create Date: 2024-09-25 17:59:21.028426
|
||||
|
||||
"""
|
||||
|
||||
import sqlalchemy as sa
|
||||
import sqlalchemy_utils
|
||||
from alembic import op
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = "7b17aa722e30"
|
||||
down_revision = "48cbb571fa3a"
|
||||
|
||||
|
||||
def upgrade():
|
||||
op.add_column(
|
||||
"css_templates",
|
||||
sa.Column("uuid", sqlalchemy_utils.types.uuid.UUIDType(), nullable=True),
|
||||
)
|
||||
op.add_column(
|
||||
"favstar",
|
||||
sa.Column("uuid", sqlalchemy_utils.types.uuid.UUIDType(), nullable=True),
|
||||
)
|
||||
|
||||
|
||||
def downgrade():
|
||||
op.drop_column("css_templates", "uuid")
|
||||
op.drop_column("favstar", "uuid")
|
||||
|
|
@ -72,7 +72,7 @@ from superset.extensions import (
|
|||
security_manager,
|
||||
ssh_manager_factory,
|
||||
)
|
||||
from superset.models.helpers import AuditMixinNullable, ImportExportMixin
|
||||
from superset.models.helpers import AuditMixinNullable, ImportExportMixin, UUIDMixin
|
||||
from superset.result_set import SupersetResultSet
|
||||
from superset.sql_parse import Table
|
||||
from superset.superset_typing import (
|
||||
|
|
@ -107,7 +107,7 @@ class KeyValue(Model): # pylint: disable=too-few-public-methods
|
|||
value = Column(utils.MediumText(), nullable=False)
|
||||
|
||||
|
||||
class CssTemplate(Model, AuditMixinNullable):
|
||||
class CssTemplate(AuditMixinNullable, UUIDMixin, Model):
|
||||
"""CSS templates for dashboards"""
|
||||
|
||||
__tablename__ = "css_templates"
|
||||
|
|
@ -1227,7 +1227,7 @@ class FavStarClassName(StrEnum):
|
|||
DASHBOARD = "Dashboard"
|
||||
|
||||
|
||||
class FavStar(Model): # pylint: disable=too-few-public-methods
|
||||
class FavStar(UUIDMixin, Model):
|
||||
__tablename__ = "favstar"
|
||||
|
||||
id = Column(Integer, primary_key=True)
|
||||
|
|
|
|||
|
|
@ -174,11 +174,17 @@ def convert_uuids(obj: Any) -> Any:
|
|||
return obj
|
||||
|
||||
|
||||
class ImportExportMixin:
|
||||
class UUIDMixin: # pylint: disable=too-few-public-methods
|
||||
uuid = sa.Column(
|
||||
UUIDType(binary=True), primary_key=False, unique=True, default=uuid.uuid4
|
||||
)
|
||||
|
||||
@property
|
||||
def short_uuid(self) -> str:
|
||||
return str(self.uuid)[:8]
|
||||
|
||||
|
||||
class ImportExportMixin(UUIDMixin):
|
||||
export_parent: Optional[str] = None
|
||||
# The name of the attribute
|
||||
# with the SQL Alchemy back reference
|
||||
|
|
|
|||
Loading…
Reference in New Issue