You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by be...@apache.org on 2020/10/30 16:13:54 UTC

[incubator-superset] branch master updated: chore: rename ImportMixin to ImportExportMixin (#11460)

This is an automated email from the ASF dual-hosted git repository.

beto pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-superset.git


The following commit(s) were added to refs/heads/master by this push:
     new f2b8d6a  chore: rename ImportMixin to ImportExportMixin (#11460)
f2b8d6a is described below

commit f2b8d6aef875cf69f472fb433557cff294f5e619
Author: Beto Dealmeida <ro...@dealmeida.net>
AuthorDate: Fri Oct 30 09:11:56 2020 -0700

    chore: rename ImportMixin to ImportExportMixin (#11460)
    
    * Add UUID to saved_query
    
    * Reuse function from previous migration
    
    * Point to new head
    
    * feat: add backend to export saved queries using new format
    
    * Rename ImportMixin to ImportExportMixin
---
 superset/connectors/base/models.py  | 10 +++++-----
 superset/connectors/druid/models.py | 23 +++++++++++------------
 superset/models/core.py             |  4 ++--
 superset/models/dashboard.py        |  4 ++--
 superset/models/helpers.py          |  3 +--
 superset/models/schedules.py        |  8 +++++---
 superset/models/slice.py            |  4 ++--
 superset/models/sql_lab.py          |  8 ++++++--
 superset/views/base.py              | 12 ++++++------
 9 files changed, 40 insertions(+), 36 deletions(-)

diff --git a/superset/connectors/base/models.py b/superset/connectors/base/models.py
index d780a56..1745da3 100644
--- a/superset/connectors/base/models.py
+++ b/superset/connectors/base/models.py
@@ -25,7 +25,7 @@ from sqlalchemy.orm import foreign, Query, relationship, RelationshipProperty
 
 from superset import security_manager
 from superset.constants import NULL_STRING
-from superset.models.helpers import AuditMixinNullable, ImportMixin, QueryResult
+from superset.models.helpers import AuditMixinNullable, ImportExportMixin, QueryResult
 from superset.models.slice import Slice
 from superset.typing import FilterValue, FilterValues, QueryObjectDict
 from superset.utils import core as utils
@@ -59,7 +59,7 @@ class DatasourceKind(str, Enum):
 
 
 class BaseDatasource(
-    AuditMixinNullable, ImportMixin
+    AuditMixinNullable, ImportExportMixin
 ):  # pylint: disable=too-many-public-methods
     """A common interface to objects that are queryable
     (tables and datasources)"""
@@ -482,7 +482,7 @@ class BaseDatasource(
     def get_extra_cache_keys(  # pylint: disable=no-self-use
         self, query_obj: QueryObjectDict  # pylint: disable=unused-argument
     ) -> List[Hashable]:
-        """ If a datasource needs to provide additional keys for calculation of
+        """If a datasource needs to provide additional keys for calculation of
         cache keys, those can be provided via this method
 
         :param query_obj: The dict representation of a query object
@@ -508,7 +508,7 @@ class BaseDatasource(
         security_manager.raise_for_access(datasource=self)
 
 
-class BaseColumn(AuditMixinNullable, ImportMixin):
+class BaseColumn(AuditMixinNullable, ImportExportMixin):
     """Interface for column"""
 
     __tablename__: Optional[str] = None  # {connector_name}_column
@@ -580,7 +580,7 @@ class BaseColumn(AuditMixinNullable, ImportMixin):
         return {s: getattr(self, s) for s in attrs if hasattr(self, s)}
 
 
-class BaseMetric(AuditMixinNullable, ImportMixin):
+class BaseMetric(AuditMixinNullable, ImportExportMixin):
 
     """Interface for Metrics"""
 
diff --git a/superset/connectors/druid/models.py b/superset/connectors/druid/models.py
index f498ee6..a8d00fd 100644
--- a/superset/connectors/druid/models.py
+++ b/superset/connectors/druid/models.py
@@ -54,7 +54,7 @@ from superset.connectors.base.models import BaseColumn, BaseDatasource, BaseMetr
 from superset.constants import NULL_STRING
 from superset.exceptions import SupersetException
 from superset.models.core import Database
-from superset.models.helpers import AuditMixinNullable, ImportMixin, QueryResult
+from superset.models.helpers import AuditMixinNullable, ImportExportMixin, QueryResult
 from superset.typing import FilterValues, Granularity, Metric, QueryObjectDict
 from superset.utils import core as utils, import_datasource
 
@@ -121,7 +121,7 @@ def _fetch_metadata_for(datasource: "DruidDatasource") -> Optional[Dict[str, Any
     return datasource.latest_metadata()
 
 
-class DruidCluster(Model, AuditMixinNullable, ImportMixin):
+class DruidCluster(Model, AuditMixinNullable, ImportExportMixin):
 
     """ORM object referencing the Druid clusters"""
 
@@ -616,9 +616,9 @@ class DruidDatasource(Model, BaseDatasource):
     ) -> int:
         """Imports the datasource from the object to the database.
 
-         Metrics and columns and datasource will be overridden if exists.
-         This function can be used to import/export dashboards between multiple
-         superset instances. Audit metadata isn't copies over.
+        Metrics and columns and datasource will be overridden if exists.
+        This function can be used to import/export dashboards between multiple
+        superset instances. Audit metadata isn't copies over.
         """
 
         def lookup_datasource(d: DruidDatasource) -> Optional[DruidDatasource]:
@@ -1082,12 +1082,12 @@ class DruidDatasource(Model, BaseDatasource):
         adhoc_metrics: Optional[List[Dict[str, Any]]] = None,
     ) -> "OrderedDict[str, Any]":
         """
-            Returns a dictionary of aggregation metric names to aggregation json objects
+        Returns a dictionary of aggregation metric names to aggregation json objects
 
-            :param metrics_dict: dictionary of all the metrics
-            :param saved_metrics: list of saved metric names
-            :param adhoc_metrics: list of adhoc metric names
-            :raise SupersetException: if one or more metric names are not aggregations
+        :param metrics_dict: dictionary of all the metrics
+        :param saved_metrics: list of saved metric names
+        :param adhoc_metrics: list of adhoc metric names
+        :raise SupersetException: if one or more metric names are not aggregations
         """
         if not adhoc_metrics:
             adhoc_metrics = []
@@ -1193,8 +1193,7 @@ class DruidDatasource(Model, BaseDatasource):
         client: Optional["PyDruid"] = None,
         order_desc: bool = True,
     ) -> str:
-        """Runs a query against Druid and returns a dataframe.
-        """
+        """Runs a query against Druid and returns a dataframe."""
         # TODO refactor into using a TBD Query object
         client = client or self.cluster.get_pydruid_client()
         row_limit = row_limit or conf.get("ROW_LIMIT")
diff --git a/superset/models/core.py b/superset/models/core.py
index e73b810..6d8a29c 100755
--- a/superset/models/core.py
+++ b/superset/models/core.py
@@ -54,7 +54,7 @@ from sqlalchemy_utils import EncryptedType
 
 from superset import app, db_engine_specs, is_feature_enabled, security_manager
 from superset.db_engine_specs.base import TimeGrain
-from superset.models.helpers import AuditMixinNullable, ImportMixin
+from superset.models.helpers import AuditMixinNullable, ImportExportMixin
 from superset.models.tags import FavStarUpdater
 from superset.result_set import SupersetResultSet
 from superset.utils import cache as cache_util, core as utils
@@ -98,7 +98,7 @@ class CssTemplate(Model, AuditMixinNullable):
 
 
 class Database(
-    Model, AuditMixinNullable, ImportMixin
+    Model, AuditMixinNullable, ImportExportMixin
 ):  # pylint: disable=too-many-public-methods
 
     """An ORM object that stores Database related information"""
diff --git a/superset/models/dashboard.py b/superset/models/dashboard.py
index 7779538..3ef50cd 100644
--- a/superset/models/dashboard.py
+++ b/superset/models/dashboard.py
@@ -55,7 +55,7 @@ from superset import (
 from superset.connectors.base.models import BaseDatasource
 from superset.connectors.druid.models import DruidColumn, DruidMetric
 from superset.connectors.sqla.models import SqlMetric, TableColumn
-from superset.models.helpers import AuditMixinNullable, ImportMixin
+from superset.models.helpers import AuditMixinNullable, ImportExportMixin
 from superset.models.slice import Slice
 from superset.models.tags import DashboardUpdater
 from superset.models.user_attributes import UserAttribute
@@ -129,7 +129,7 @@ dashboard_user = Table(
 
 
 class Dashboard(  # pylint: disable=too-many-instance-attributes
-    Model, AuditMixinNullable, ImportMixin
+    Model, AuditMixinNullable, ImportExportMixin
 ):
 
     """The dashboard object!"""
diff --git a/superset/models/helpers.py b/superset/models/helpers.py
index 2d8b432..14cad2e 100644
--- a/superset/models/helpers.py
+++ b/superset/models/helpers.py
@@ -68,8 +68,7 @@ def convert_uuids(obj: Any) -> Any:
     return obj
 
 
-# TODO (betodealmeida): rename to ImportExportMixin
-class ImportMixin:
+class ImportExportMixin:
     uuid = sa.Column(
         UUIDType(binary=True), primary_key=False, unique=True, default=uuid.uuid4
     )
diff --git a/superset/models/schedules.py b/superset/models/schedules.py
index 787d28b..fdc90f0 100644
--- a/superset/models/schedules.py
+++ b/superset/models/schedules.py
@@ -25,7 +25,7 @@ from sqlalchemy.orm import relationship, RelationshipProperty
 
 from superset import security_manager
 from superset.models.alerts import Alert
-from superset.models.helpers import AuditMixinNullable, ImportMixin
+from superset.models.helpers import AuditMixinNullable, ImportExportMixin
 
 metadata = Model.metadata  # pylint: disable=no-member
 
@@ -74,7 +74,9 @@ class EmailSchedule:
     delivery_type = Column(Enum(EmailDeliveryType))
 
 
-class DashboardEmailSchedule(Model, AuditMixinNullable, ImportMixin, EmailSchedule):
+class DashboardEmailSchedule(
+    Model, AuditMixinNullable, ImportExportMixin, EmailSchedule
+):
     __tablename__ = "dashboard_email_schedules"
     dashboard_id = Column(Integer, ForeignKey("dashboards.id"))
     dashboard = relationship(
@@ -82,7 +84,7 @@ class DashboardEmailSchedule(Model, AuditMixinNullable, ImportMixin, EmailSchedu
     )
 
 
-class SliceEmailSchedule(Model, AuditMixinNullable, ImportMixin, EmailSchedule):
+class SliceEmailSchedule(Model, AuditMixinNullable, ImportExportMixin, EmailSchedule):
     __tablename__ = "slice_email_schedules"
     slice_id = Column(Integer, ForeignKey("slices.id"))
     slice = relationship("Slice", backref="email_schedules", foreign_keys=[slice_id])
diff --git a/superset/models/slice.py b/superset/models/slice.py
index 87c140c..4ed8ba4 100644
--- a/superset/models/slice.py
+++ b/superset/models/slice.py
@@ -30,7 +30,7 @@ from sqlalchemy.orm.mapper import Mapper
 
 from superset import ConnectorRegistry, db, is_feature_enabled, security_manager
 from superset.legacy import update_time_range
-from superset.models.helpers import AuditMixinNullable, ImportMixin
+from superset.models.helpers import AuditMixinNullable, ImportExportMixin
 from superset.models.tags import ChartUpdater
 from superset.tasks.thumbnails import cache_chart_thumbnail
 from superset.utils import core as utils
@@ -56,7 +56,7 @@ logger = logging.getLogger(__name__)
 
 
 class Slice(
-    Model, AuditMixinNullable, ImportMixin
+    Model, AuditMixinNullable, ImportExportMixin
 ):  # pylint: disable=too-many-public-methods
 
     """A slice is essentially a report or a view on data"""
diff --git a/superset/models/sql_lab.py b/superset/models/sql_lab.py
index aeec9c2..0388364 100644
--- a/superset/models/sql_lab.py
+++ b/superset/models/sql_lab.py
@@ -39,7 +39,11 @@ from sqlalchemy.engine.url import URL
 from sqlalchemy.orm import backref, relationship
 
 from superset import security_manager
-from superset.models.helpers import AuditMixinNullable, ExtraJSONMixin, ImportMixin
+from superset.models.helpers import (
+    AuditMixinNullable,
+    ExtraJSONMixin,
+    ImportExportMixin,
+)
 from superset.models.tags import QueryUpdater
 from superset.sql_parse import CtasMethod, ParsedQuery, Table
 from superset.utils.core import QueryStatus, user_label
@@ -162,7 +166,7 @@ class Query(Model, ExtraJSONMixin):
         security_manager.raise_for_access(query=self)
 
 
-class SavedQuery(Model, AuditMixinNullable, ExtraJSONMixin, ImportMixin):
+class SavedQuery(Model, AuditMixinNullable, ExtraJSONMixin, ImportExportMixin):
     """ORM model for SQL query"""
 
     __tablename__ = "saved_query"
diff --git a/superset/views/base.py b/superset/views/base.py
index 0b31afa..3eb330c 100644
--- a/superset/views/base.py
+++ b/superset/views/base.py
@@ -53,7 +53,7 @@ from superset.exceptions import (
     SupersetSecurityException,
     SupersetTimeoutException,
 )
-from superset.models.helpers import ImportMixin
+from superset.models.helpers import ImportExportMixin
 from superset.translations.utils import get_language_pack
 from superset.typing import FlaskResponse
 from superset.utils import core as utils
@@ -378,7 +378,7 @@ class YamlExportMixin:  # pylint: disable=too-few-public-methods
 
     @action("yaml_export", __("Export to YAML"), __("Export to YAML?"), "fa-download")
     def yaml_export(
-        self, items: Union[ImportMixin, List[ImportMixin]]
+        self, items: Union[ImportExportMixin, List[ImportExportMixin]]
     ) -> FlaskResponse:
         if not isinstance(items, list):
             items = [items]
@@ -395,11 +395,11 @@ class YamlExportMixin:  # pylint: disable=too-few-public-methods
 class DeleteMixin:  # pylint: disable=too-few-public-methods
     def _delete(self: BaseView, primary_key: int) -> None:
         """
-            Delete function logic, override to implement diferent logic
-            deletes the record with primary_key = primary_key
+        Delete function logic, override to implement diferent logic
+        deletes the record with primary_key = primary_key
 
-            :param primary_key:
-                record primary key to delete
+        :param primary_key:
+            record primary key to delete
         """
         item = self.datamodel.get(primary_key, self._base_filters)
         if not item: