re-enable Pylint on a number of view files (#8773)

* re-enable pylint for superset/views/tags.py

* Re-enable pylint for superset/views/dashboard.py

* Re-enable pylint for superset/views/sql_lab.py

* Re-enable pylint for superset/views/datasource.py

* Re-enable pylint for superset/views/utils.py

* Re-enable pylint for superset/views/log/__init__.py

* pylint fix

* Improve naming
This commit is contained in:
Will Barrett 2019-12-11 09:49:19 -08:00 committed by Maxime Beauchemin
parent adf2cc2039
commit 60914fa76a
6 changed files with 49 additions and 53 deletions

View File

@ -1,4 +1,3 @@
# pylint: disable=C,R,W
# Licensed to the Apache Software Foundation (ASF) under one # Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file # or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information # distributed with this work for additional information

View File

@ -14,14 +14,12 @@
# KIND, either express or implied. See the License for the # KIND, either express or implied. See the License for the
# specific language governing permissions and limitations # specific language governing permissions and limitations
# under the License. # under the License.
# pylint: disable=C,R,W
import json import json
from collections import Counter from collections import Counter
from flask import request from flask import request
from flask_appbuilder import expose from flask_appbuilder import expose
from flask_appbuilder.security.decorators import has_access_api from flask_appbuilder.security.decorators import has_access_api
from sqlalchemy.exc import IntegrityError
from superset import appbuilder, db from superset import appbuilder, db
from superset.connectors.connector_registry import ConnectorRegistry from superset.connectors.connector_registry import ConnectorRegistry
@ -100,8 +98,8 @@ class Datasource(BaseSupersetView):
database = ( database = (
db.session.query(Database).filter_by(id=request.args.get("db_id")).one() db.session.query(Database).filter_by(id=request.args.get("db_id")).one()
) )
Table = ConnectorRegistry.sources["table"] table_class = ConnectorRegistry.sources["table"]
datasource = Table( datasource = table_class(
database=database, database=database,
table_name=request.args.get("table_name"), table_name=request.args.get("table_name"),
schema=request.args.get("schema") or None, schema=request.args.get("schema") or None,

View File

@ -14,11 +14,10 @@
# KIND, either express or implied. See the License for the # KIND, either express or implied. See the License for the
# specific language governing permissions and limitations # specific language governing permissions and limitations
# under the License. # under the License.
# pylint: disable=C,R,W
from flask_babel import lazy_gettext as _ from flask_babel import lazy_gettext as _
class LogMixin: class LogMixin: # pylint: disable=too-few-public-methods
list_title = _("Logs") list_title = _("Logs")
show_title = _("Show Log") show_title = _("Show Log")
add_title = _("Add Log") add_title = _("Add Log")

View File

@ -14,7 +14,6 @@
# KIND, either express or implied. See the License for the # KIND, either express or implied. See the License for the
# specific language governing permissions and limitations # specific language governing permissions and limitations
# under the License. # under the License.
# pylint: disable=C,R,W
from typing import Callable from typing import Callable
import simplejson as json import simplejson as json
@ -38,8 +37,8 @@ from .base import (
) )
class QueryFilter(BaseFilter): class QueryFilter(BaseFilter): # pylint: disable=too-few-public-methods
def apply(self, query: BaseQuery, func: Callable) -> BaseQuery: def apply(self, query: BaseQuery, value: Callable) -> BaseQuery:
""" """
Filter queries to only those owned by current user if Filter queries to only those owned by current user if
can_only_access_owned_queries permission is set. can_only_access_owned_queries permission is set.
@ -82,7 +81,9 @@ appbuilder.add_view(
) )
class SavedQueryView(SupersetModelView, DeleteMixin): class SavedQueryView(
SupersetModelView, DeleteMixin
): # pylint: disable=too-many-ancestors
datamodel = SQLAInterface(SavedQuery) datamodel = SQLAInterface(SavedQuery)
list_title = _("List Saved Query") list_title = _("List Saved Query")
@ -126,11 +127,11 @@ class SavedQueryView(SupersetModelView, DeleteMixin):
show_template = "superset/models/savedquery/show.html" show_template = "superset/models/savedquery/show.html"
def pre_add(self, obj): def pre_add(self, item):
obj.user = g.user item.user = g.user
def pre_update(self, obj): def pre_update(self, item):
self.pre_add(obj) self.pre_add(item)
@has_access @has_access
@expose("show/<pk>") @expose("show/<pk>")
@ -151,7 +152,7 @@ class SavedQueryView(SupersetModelView, DeleteMixin):
) )
class SavedQueryViewApi(SavedQueryView): class SavedQueryViewApi(SavedQueryView): # pylint: disable=too-many-ancestors
list_columns = [ list_columns = [
"id", "id",
"label", "label",
@ -176,13 +177,14 @@ appbuilder.add_view_no_menu(SavedQueryViewApi)
appbuilder.add_view_no_menu(SavedQueryView) appbuilder.add_view_no_menu(SavedQueryView)
class TabStateView(BaseSupersetView): def _get_owner_id(tab_state_id):
def _get_owner_id(self, tab_state_id): return db.session.query(TabState.user_id).filter_by(id=tab_state_id).scalar()
return db.session.query(TabState.user_id).filter_by(id=tab_state_id).scalar()
class TabStateView(BaseSupersetView):
@has_access_api @has_access_api
@expose("/", methods=["POST"]) @expose("/", methods=["POST"])
def post(self): def post(self): # pylint: disable=no-self-use
query_editor = json.loads(request.form["queryEditor"]) query_editor = json.loads(request.form["queryEditor"])
tab_state = TabState( tab_state = TabState(
user_id=g.user.get_id(), user_id=g.user.get_id(),
@ -204,8 +206,8 @@ class TabStateView(BaseSupersetView):
@has_access_api @has_access_api
@expose("/<int:tab_state_id>", methods=["DELETE"]) @expose("/<int:tab_state_id>", methods=["DELETE"])
def delete(self, tab_state_id): def delete(self, tab_state_id): # pylint: disable=no-self-use
if self._get_owner_id(tab_state_id) != int(g.user.get_id()): if _get_owner_id(tab_state_id) != int(g.user.get_id()):
return Response(status=403) return Response(status=403)
db.session.query(TabState).filter(TabState.id == tab_state_id).delete( db.session.query(TabState).filter(TabState.id == tab_state_id).delete(
@ -219,8 +221,8 @@ class TabStateView(BaseSupersetView):
@has_access_api @has_access_api
@expose("/<int:tab_state_id>", methods=["GET"]) @expose("/<int:tab_state_id>", methods=["GET"])
def get(self, tab_state_id): def get(self, tab_state_id): # pylint: disable=no-self-use
if self._get_owner_id(tab_state_id) != int(g.user.get_id()): if _get_owner_id(tab_state_id) != int(g.user.get_id()):
return Response(status=403) return Response(status=403)
tab_state = db.session.query(TabState).filter_by(id=tab_state_id).first() tab_state = db.session.query(TabState).filter_by(id=tab_state_id).first()
@ -232,8 +234,8 @@ class TabStateView(BaseSupersetView):
@has_access_api @has_access_api
@expose("<int:tab_state_id>/activate", methods=["POST"]) @expose("<int:tab_state_id>/activate", methods=["POST"])
def activate(self, tab_state_id): def activate(self, tab_state_id): # pylint: disable=no-self-use
owner_id = self._get_owner_id(tab_state_id) owner_id = _get_owner_id(tab_state_id)
if owner_id is None: if owner_id is None:
return Response(status=404) return Response(status=404)
if owner_id != int(g.user.get_id()): if owner_id != int(g.user.get_id()):
@ -249,8 +251,8 @@ class TabStateView(BaseSupersetView):
@has_access_api @has_access_api
@expose("<int:tab_state_id>", methods=["PUT"]) @expose("<int:tab_state_id>", methods=["PUT"])
def put(self, tab_state_id): def put(self, tab_state_id): # pylint: disable=no-self-use
if self._get_owner_id(tab_state_id) != int(g.user.get_id()): if _get_owner_id(tab_state_id) != int(g.user.get_id()):
return Response(status=403) return Response(status=403)
fields = {k: json.loads(v) for k, v in request.form.to_dict().items()} fields = {k: json.loads(v) for k, v in request.form.to_dict().items()}
@ -260,8 +262,8 @@ class TabStateView(BaseSupersetView):
@has_access_api @has_access_api
@expose("<int:tab_state_id>/migrate_query", methods=["POST"]) @expose("<int:tab_state_id>/migrate_query", methods=["POST"])
def migrate_query(self, tab_state_id): def migrate_query(self, tab_state_id): # pylint: disable=no-self-use
if self._get_owner_id(tab_state_id) != int(g.user.get_id()): if _get_owner_id(tab_state_id) != int(g.user.get_id()):
return Response(status=403) return Response(status=403)
client_id = json.loads(request.form["queryId"]) client_id = json.loads(request.form["queryId"])
@ -273,7 +275,7 @@ class TabStateView(BaseSupersetView):
@has_access_api @has_access_api
@expose("<int:tab_state_id>/query/<client_id>", methods=["DELETE"]) @expose("<int:tab_state_id>/query/<client_id>", methods=["DELETE"])
def delete_query(self, tab_state_id, client_id): def delete_query(self, tab_state_id, client_id): # pylint: disable=no-self-use
db.session.query(Query).filter_by( db.session.query(Query).filter_by(
client_id=client_id, user_id=g.user.get_id(), sql_editor_id=tab_state_id client_id=client_id, user_id=g.user.get_id(), sql_editor_id=tab_state_id
).delete(synchronize_session=False) ).delete(synchronize_session=False)
@ -284,7 +286,7 @@ class TabStateView(BaseSupersetView):
class TableSchemaView(BaseSupersetView): class TableSchemaView(BaseSupersetView):
@has_access_api @has_access_api
@expose("/", methods=["POST"]) @expose("/", methods=["POST"])
def post(self): def post(self): # pylint: disable=no-self-use
table = json.loads(request.form["table"]) table = json.loads(request.form["table"])
# delete any existing table schema # delete any existing table schema
@ -309,7 +311,7 @@ class TableSchemaView(BaseSupersetView):
@has_access_api @has_access_api
@expose("/<int:table_schema_id>", methods=["DELETE"]) @expose("/<int:table_schema_id>", methods=["DELETE"])
def delete(self, table_schema_id): def delete(self, table_schema_id): # pylint: disable=no-self-use
db.session.query(TableSchema).filter(TableSchema.id == table_schema_id).delete( db.session.query(TableSchema).filter(TableSchema.id == table_schema_id).delete(
synchronize_session=False synchronize_session=False
) )
@ -318,7 +320,7 @@ class TableSchemaView(BaseSupersetView):
@has_access_api @has_access_api
@expose("/<int:table_schema_id>/expanded", methods=["POST"]) @expose("/<int:table_schema_id>/expanded", methods=["POST"])
def expanded(self, table_schema_id): def expanded(self, table_schema_id): # pylint: disable=no-self-use
payload = json.loads(request.form["expanded"]) payload = json.loads(request.form["expanded"])
( (
db.session.query(TableSchema) db.session.query(TableSchema)
@ -344,7 +346,7 @@ class SqlLab(BaseSupersetView):
@expose("/my_queries/") @expose("/my_queries/")
@has_access @has_access
def my_queries(self): def my_queries(self): # pylint: disable=no-self-use
"""Assigns a list of found users to the given role.""" """Assigns a list of found users to the given role."""
return redirect("/savedqueryview/list/?_flt_0_user={}".format(g.user.id)) return redirect("/savedqueryview/list/?_flt_0_user={}".format(g.user.id))

View File

@ -14,7 +14,6 @@
# KIND, either express or implied. See the License for the # KIND, either express or implied. See the License for the
# specific language governing permissions and limitations # specific language governing permissions and limitations
# under the License. # under the License.
# pylint: disable=C,R,W
from __future__ import absolute_import, division, print_function, unicode_literals from __future__ import absolute_import, division, print_function, unicode_literals
import simplejson as json import simplejson as json
@ -38,11 +37,11 @@ class ObjectTypeConverter(BaseConverter):
"""Validate that object_type is indeed an object type.""" """Validate that object_type is indeed an object type."""
def to_python(self, object_type): def to_python(self, value):
return ObjectTypes[object_type] return ObjectTypes[value]
def to_url(self, object_type): def to_url(self, value):
return object_type.name return value.name
def process_template(content): def process_template(content):
@ -55,7 +54,7 @@ def process_template(content):
class TagView(BaseSupersetView): class TagView(BaseSupersetView):
@has_access_api @has_access_api
@expose("/tags/suggestions/", methods=["GET"]) @expose("/tags/suggestions/", methods=["GET"])
def suggestions(self): def suggestions(self): # pylint: disable=no-self-use
query = ( query = (
db.session.query(TaggedObject) db.session.query(TaggedObject)
.join(Tag) .join(Tag)
@ -69,7 +68,7 @@ class TagView(BaseSupersetView):
@has_access_api @has_access_api
@expose("/tags/<object_type:object_type>/<int:object_id>/", methods=["GET"]) @expose("/tags/<object_type:object_type>/<int:object_id>/", methods=["GET"])
def get(self, object_type, object_id): def get(self, object_type, object_id): # pylint: disable=no-self-use
"""List all tags a given object has.""" """List all tags a given object has."""
if object_id == 0: if object_id == 0:
return json_success(json.dumps([])) return json_success(json.dumps([]))
@ -85,7 +84,7 @@ class TagView(BaseSupersetView):
@has_access_api @has_access_api
@expose("/tags/<object_type:object_type>/<int:object_id>/", methods=["POST"]) @expose("/tags/<object_type:object_type>/<int:object_id>/", methods=["POST"])
def post(self, object_type, object_id): def post(self, object_type, object_id): # pylint: disable=no-self-use
"""Add new tags to an object.""" """Add new tags to an object."""
if object_id == 0: if object_id == 0:
return Response(status=404) return Response(status=404)
@ -113,7 +112,7 @@ class TagView(BaseSupersetView):
@has_access_api @has_access_api
@expose("/tags/<object_type:object_type>/<int:object_id>/", methods=["DELETE"]) @expose("/tags/<object_type:object_type>/<int:object_id>/", methods=["DELETE"])
def delete(self, object_type, object_id): def delete(self, object_type, object_id): # pylint: disable=no-self-use
"""Remove tags from an object.""" """Remove tags from an object."""
tag_names = request.get_json(force=True) tag_names = request.get_json(force=True)
if not tag_names: if not tag_names:
@ -132,7 +131,7 @@ class TagView(BaseSupersetView):
@has_access_api @has_access_api
@expose("/tagged_objects/", methods=["GET", "POST"]) @expose("/tagged_objects/", methods=["GET", "POST"])
def tagged_objects(self): def tagged_objects(self): # pylint: disable=no-self-use
tags = [ tags = [
process_template(tag) process_template(tag)
for tag in request.args.get("tags", "").split(",") for tag in request.args.get("tags", "").split(",")

View File

@ -14,7 +14,6 @@
# KIND, either express or implied. See the License for the # KIND, either express or implied. See the License for the
# specific language governing permissions and limitations # specific language governing permissions and limitations
# under the License. # under the License.
# pylint: disable=C,R,W
from collections import defaultdict from collections import defaultdict
from datetime import date from datetime import date
from typing import Any, Dict, List, Optional, Tuple from typing import Any, Dict, List, Optional, Tuple
@ -82,13 +81,13 @@ def get_viz(
if slice_id: if slice_id:
slc = db.session.query(models.Slice).filter_by(id=slice_id).one() slc = db.session.query(models.Slice).filter_by(id=slice_id).one()
return slc.get_viz() return slc.get_viz()
else:
viz_type = form_data.get("viz_type", "table") viz_type = form_data.get("viz_type", "table")
datasource = ConnectorRegistry.get_datasource( datasource = ConnectorRegistry.get_datasource(
datasource_type, datasource_id, db.session datasource_type, datasource_id, db.session
) )
viz_obj = viz.viz_types[viz_type](datasource, form_data=form_data, force=force) viz_obj = viz.viz_types[viz_type](datasource, form_data=form_data, force=force)
return viz_obj return viz_obj
def get_form_data(slice_id=None, use_slice_data=False): def get_form_data(slice_id=None, use_slice_data=False):