style(mypy): Enforcing mypy typing for views.chart (#9912)
Co-authored-by: John Bodley <john.bodley@airbnb.com>
This commit is contained in:
parent
b010c35887
commit
54dced1cf6
|
|
@ -53,7 +53,7 @@ order_by_type = false
|
|||
ignore_missing_imports = true
|
||||
no_implicit_optional = true
|
||||
|
||||
[mypy-superset.bin.*,superset.charts.*,superset.commands.*,superset.common.*,superset.connectors.*,superset.dao.*,superset.dashboards.*,superset.datasets.*,superset.db_engine_specs.*,superset.db_engines.*,superset.examples.*,superset.migrations.*,superset.models.*,uperset.queries.*,superset.security.*,superset.sql_validators.*,superset.tasks.*,superset.translations.*,superset.views.dashboard.*,superset.views.database.*]
|
||||
[mypy-superset.bin.*,superset.charts.*,superset.commands.*,superset.common.*,superset.connectors.*,superset.dao.*,superset.dashboards.*,superset.datasets.*,superset.db_engine_specs.*,superset.db_engines.*,superset.examples.*,superset.migrations.*,superset.models.*,uperset.queries.*,superset.security.*,superset.sql_validators.*,superset.tasks.*,superset.translations.*,superset.views.chart.*,superset.views.dashboard.*,superset.views.database.*]
|
||||
check_untyped_defs = true
|
||||
disallow_untyped_calls = true
|
||||
disallow_untyped_defs = true
|
||||
|
|
|
|||
|
|
@ -61,9 +61,6 @@ class BaseDatasource(
|
|||
# class attributes to define when deriving BaseDatasource
|
||||
# ---------------------------------------------------------------
|
||||
__tablename__: Optional[str] = None # {connector_name}_datasource
|
||||
type: Optional[ # datasoure type, str to be defined when deriving this class
|
||||
str
|
||||
] = None
|
||||
baselink: Optional[str] = None # url portion pointing to ModelView endpoint
|
||||
column_class: Optional[Type] = None # link to derivative of BaseColumn
|
||||
metric_class: Optional[Type] = None # link to derivative of BaseMetric
|
||||
|
|
@ -107,6 +104,10 @@ class BaseDatasource(
|
|||
# placeholder for a relationship to a derivative of BaseMetric
|
||||
metrics: List[Any] = []
|
||||
|
||||
@property
|
||||
def type(self) -> str:
|
||||
raise NotImplementedError()
|
||||
|
||||
@property
|
||||
def uid(self) -> str:
|
||||
"""Unique id across datasource types"""
|
||||
|
|
|
|||
|
|
@ -90,6 +90,7 @@ class AnnotationDatasource(BaseDatasource):
|
|||
|
||||
cache_timeout = 0
|
||||
changed_on = None
|
||||
type = "annotation"
|
||||
|
||||
def query(self, query_obj: QueryObjectDict) -> QueryResult:
|
||||
error_message = None
|
||||
|
|
|
|||
|
|
@ -14,14 +14,17 @@
|
|||
# KIND, either express or implied. See the License for the
|
||||
# specific language governing permissions and limitations
|
||||
# under the License.
|
||||
from typing import Any
|
||||
|
||||
from sqlalchemy import or_
|
||||
from sqlalchemy.orm.query import Query
|
||||
|
||||
from superset import security_manager
|
||||
from superset.views.base import BaseFilter
|
||||
|
||||
|
||||
class SliceFilter(BaseFilter): # pylint: disable=too-few-public-methods
|
||||
def apply(self, query, value):
|
||||
def apply(self, query: Query, value: Any) -> Query:
|
||||
if security_manager.all_datasource_access():
|
||||
return query
|
||||
perms = security_manager.user_view_menu_names("datasource_access")
|
||||
|
|
|
|||
|
|
@ -24,6 +24,7 @@ from superset import app, db
|
|||
from superset.connectors.connector_registry import ConnectorRegistry
|
||||
from superset.constants import RouteMethod
|
||||
from superset.models.slice import Slice
|
||||
from superset.typing import FlaskResponse
|
||||
from superset.utils import core as utils
|
||||
from superset.views.base import check_ownership, DeleteMixin, SupersetModelView
|
||||
from superset.views.chart.mixin import SliceMixin
|
||||
|
|
@ -40,22 +41,22 @@ class SliceModelView(
|
|||
RouteMethod.API_DELETE,
|
||||
}
|
||||
|
||||
def pre_add(self, item):
|
||||
def pre_add(self, item: "SliceModelView") -> None:
|
||||
utils.validate_json(item.params)
|
||||
|
||||
def pre_update(self, item):
|
||||
def pre_update(self, item: "SliceModelView") -> None:
|
||||
utils.validate_json(item.params)
|
||||
check_ownership(item)
|
||||
|
||||
def pre_delete(self, item):
|
||||
def pre_delete(self, item: "SliceModelView") -> None:
|
||||
check_ownership(item)
|
||||
|
||||
@expose("/add", methods=["GET", "POST"])
|
||||
@has_access
|
||||
def add(self):
|
||||
datasources = ConnectorRegistry.get_all_datasources(db.session)
|
||||
def add(self) -> FlaskResponse:
|
||||
datasources = [
|
||||
{"value": str(d.id) + "__" + d.type, "label": repr(d)} for d in datasources
|
||||
{"value": str(d.id) + "__" + d.type, "label": repr(d)}
|
||||
for d in ConnectorRegistry.get_all_datasources(db.session)
|
||||
]
|
||||
return self.render_template(
|
||||
"superset/add_slice.html",
|
||||
|
|
@ -66,7 +67,7 @@ class SliceModelView(
|
|||
|
||||
@expose("/list/")
|
||||
@has_access
|
||||
def list(self):
|
||||
def list(self) -> FlaskResponse:
|
||||
if not app.config["ENABLE_REACT_CRUD_VIEWS"]:
|
||||
return super().list()
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue