You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by ma...@apache.org on 2019/12/11 17:49:35 UTC

[incubator-superset] branch master updated: re-enable Pylint on a number of view files (#8773)

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

maximebeauchemin 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 60914fa  re-enable Pylint on a number of view files (#8773)
60914fa is described below

commit 60914fa76a4309036b91b932fea91e7236b408cb
Author: Will Barrett <wi...@preset.io>
AuthorDate: Wed Dec 11 09:49:19 2019 -0800

    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
---
 superset/views/dashboard.py    |  1 -
 superset/views/datasource.py   |  6 ++---
 superset/views/log/__init__.py |  3 +--
 superset/views/sql_lab.py      | 58 ++++++++++++++++++++++--------------------
 superset/views/tags.py         | 19 +++++++-------
 superset/views/utils.py        | 15 +++++------
 6 files changed, 49 insertions(+), 53 deletions(-)

diff --git a/superset/views/dashboard.py b/superset/views/dashboard.py
index 712c762..e09e201 100644
--- a/superset/views/dashboard.py
+++ b/superset/views/dashboard.py
@@ -1,4 +1,3 @@
-# pylint: disable=C,R,W
 # 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
diff --git a/superset/views/datasource.py b/superset/views/datasource.py
index 12c6916..5eb7fa3 100644
--- a/superset/views/datasource.py
+++ b/superset/views/datasource.py
@@ -14,14 +14,12 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-# pylint: disable=C,R,W
 import json
 from collections import Counter
 
 from flask import request
 from flask_appbuilder import expose
 from flask_appbuilder.security.decorators import has_access_api
-from sqlalchemy.exc import IntegrityError
 
 from superset import appbuilder, db
 from superset.connectors.connector_registry import ConnectorRegistry
@@ -100,8 +98,8 @@ class Datasource(BaseSupersetView):
             database = (
                 db.session.query(Database).filter_by(id=request.args.get("db_id")).one()
             )
-            Table = ConnectorRegistry.sources["table"]
-            datasource = Table(
+            table_class = ConnectorRegistry.sources["table"]
+            datasource = table_class(
                 database=database,
                 table_name=request.args.get("table_name"),
                 schema=request.args.get("schema") or None,
diff --git a/superset/views/log/__init__.py b/superset/views/log/__init__.py
index c6c5676..b39d602 100644
--- a/superset/views/log/__init__.py
+++ b/superset/views/log/__init__.py
@@ -14,11 +14,10 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-# pylint: disable=C,R,W
 from flask_babel import lazy_gettext as _
 
 
-class LogMixin:
+class LogMixin:  # pylint: disable=too-few-public-methods
     list_title = _("Logs")
     show_title = _("Show Log")
     add_title = _("Add Log")
diff --git a/superset/views/sql_lab.py b/superset/views/sql_lab.py
index 29d6094..0796f16 100644
--- a/superset/views/sql_lab.py
+++ b/superset/views/sql_lab.py
@@ -14,7 +14,6 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-# pylint: disable=C,R,W
 from typing import Callable
 
 import simplejson as json
@@ -38,8 +37,8 @@ from .base import (
 )
 
 
-class QueryFilter(BaseFilter):
-    def apply(self, query: BaseQuery, func: Callable) -> BaseQuery:
+class QueryFilter(BaseFilter):  # pylint: disable=too-few-public-methods
+    def apply(self, query: BaseQuery, value: Callable) -> BaseQuery:
         """
         Filter queries to only those owned by current user if
         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)
 
     list_title = _("List Saved Query")
@@ -126,11 +127,11 @@ class SavedQueryView(SupersetModelView, DeleteMixin):
 
     show_template = "superset/models/savedquery/show.html"
 
-    def pre_add(self, obj):
-        obj.user = g.user
+    def pre_add(self, item):
+        item.user = g.user
 
-    def pre_update(self, obj):
-        self.pre_add(obj)
+    def pre_update(self, item):
+        self.pre_add(item)
 
     @has_access
     @expose("show/<pk>")
@@ -151,7 +152,7 @@ class SavedQueryView(SupersetModelView, DeleteMixin):
         )
 
 
-class SavedQueryViewApi(SavedQueryView):
+class SavedQueryViewApi(SavedQueryView):  # pylint: disable=too-many-ancestors
     list_columns = [
         "id",
         "label",
@@ -176,13 +177,14 @@ appbuilder.add_view_no_menu(SavedQueryViewApi)
 appbuilder.add_view_no_menu(SavedQueryView)
 
 
-class TabStateView(BaseSupersetView):
-    def _get_owner_id(self, tab_state_id):
-        return db.session.query(TabState.user_id).filter_by(id=tab_state_id).scalar()
+def _get_owner_id(tab_state_id):
+    return db.session.query(TabState.user_id).filter_by(id=tab_state_id).scalar()
+
 
+class TabStateView(BaseSupersetView):
     @has_access_api
     @expose("/", methods=["POST"])
-    def post(self):
+    def post(self):  # pylint: disable=no-self-use
         query_editor = json.loads(request.form["queryEditor"])
         tab_state = TabState(
             user_id=g.user.get_id(),
@@ -204,8 +206,8 @@ class TabStateView(BaseSupersetView):
 
     @has_access_api
     @expose("/<int:tab_state_id>", methods=["DELETE"])
-    def delete(self, tab_state_id):
-        if self._get_owner_id(tab_state_id) != int(g.user.get_id()):
+    def delete(self, tab_state_id):  # pylint: disable=no-self-use
+        if _get_owner_id(tab_state_id) != int(g.user.get_id()):
             return Response(status=403)
 
         db.session.query(TabState).filter(TabState.id == tab_state_id).delete(
@@ -219,8 +221,8 @@ class TabStateView(BaseSupersetView):
 
     @has_access_api
     @expose("/<int:tab_state_id>", methods=["GET"])
-    def get(self, tab_state_id):
-        if self._get_owner_id(tab_state_id) != int(g.user.get_id()):
+    def get(self, tab_state_id):  # pylint: disable=no-self-use
+        if _get_owner_id(tab_state_id) != int(g.user.get_id()):
             return Response(status=403)
 
         tab_state = db.session.query(TabState).filter_by(id=tab_state_id).first()
@@ -232,8 +234,8 @@ class TabStateView(BaseSupersetView):
 
     @has_access_api
     @expose("<int:tab_state_id>/activate", methods=["POST"])
-    def activate(self, tab_state_id):
-        owner_id = self._get_owner_id(tab_state_id)
+    def activate(self, tab_state_id):  # pylint: disable=no-self-use
+        owner_id = _get_owner_id(tab_state_id)
         if owner_id is None:
             return Response(status=404)
         if owner_id != int(g.user.get_id()):
@@ -249,8 +251,8 @@ class TabStateView(BaseSupersetView):
 
     @has_access_api
     @expose("<int:tab_state_id>", methods=["PUT"])
-    def put(self, tab_state_id):
-        if self._get_owner_id(tab_state_id) != int(g.user.get_id()):
+    def put(self, tab_state_id):  # pylint: disable=no-self-use
+        if _get_owner_id(tab_state_id) != int(g.user.get_id()):
             return Response(status=403)
 
         fields = {k: json.loads(v) for k, v in request.form.to_dict().items()}
@@ -260,8 +262,8 @@ class TabStateView(BaseSupersetView):
 
     @has_access_api
     @expose("<int:tab_state_id>/migrate_query", methods=["POST"])
-    def migrate_query(self, tab_state_id):
-        if self._get_owner_id(tab_state_id) != int(g.user.get_id()):
+    def migrate_query(self, tab_state_id):  # pylint: disable=no-self-use
+        if _get_owner_id(tab_state_id) != int(g.user.get_id()):
             return Response(status=403)
 
         client_id = json.loads(request.form["queryId"])
@@ -273,7 +275,7 @@ class TabStateView(BaseSupersetView):
 
     @has_access_api
     @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(
             client_id=client_id, user_id=g.user.get_id(), sql_editor_id=tab_state_id
         ).delete(synchronize_session=False)
@@ -284,7 +286,7 @@ class TabStateView(BaseSupersetView):
 class TableSchemaView(BaseSupersetView):
     @has_access_api
     @expose("/", methods=["POST"])
-    def post(self):
+    def post(self):  # pylint: disable=no-self-use
         table = json.loads(request.form["table"])
 
         # delete any existing table schema
@@ -309,7 +311,7 @@ class TableSchemaView(BaseSupersetView):
 
     @has_access_api
     @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(
             synchronize_session=False
         )
@@ -318,7 +320,7 @@ class TableSchemaView(BaseSupersetView):
 
     @has_access_api
     @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"])
         (
             db.session.query(TableSchema)
@@ -344,7 +346,7 @@ class SqlLab(BaseSupersetView):
 
     @expose("/my_queries/")
     @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."""
         return redirect("/savedqueryview/list/?_flt_0_user={}".format(g.user.id))
 
diff --git a/superset/views/tags.py b/superset/views/tags.py
index f3b78cd..dc44c1c 100644
--- a/superset/views/tags.py
+++ b/superset/views/tags.py
@@ -14,7 +14,6 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-# pylint: disable=C,R,W
 from __future__ import absolute_import, division, print_function, unicode_literals
 
 import simplejson as json
@@ -38,11 +37,11 @@ class ObjectTypeConverter(BaseConverter):
 
     """Validate that object_type is indeed an object type."""
 
-    def to_python(self, object_type):
-        return ObjectTypes[object_type]
+    def to_python(self, value):
+        return ObjectTypes[value]
 
-    def to_url(self, object_type):
-        return object_type.name
+    def to_url(self, value):
+        return value.name
 
 
 def process_template(content):
@@ -55,7 +54,7 @@ def process_template(content):
 class TagView(BaseSupersetView):
     @has_access_api
     @expose("/tags/suggestions/", methods=["GET"])
-    def suggestions(self):
+    def suggestions(self):  # pylint: disable=no-self-use
         query = (
             db.session.query(TaggedObject)
             .join(Tag)
@@ -69,7 +68,7 @@ class TagView(BaseSupersetView):
 
     @has_access_api
     @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."""
         if object_id == 0:
             return json_success(json.dumps([]))
@@ -85,7 +84,7 @@ class TagView(BaseSupersetView):
 
     @has_access_api
     @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."""
         if object_id == 0:
             return Response(status=404)
@@ -113,7 +112,7 @@ class TagView(BaseSupersetView):
 
     @has_access_api
     @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."""
         tag_names = request.get_json(force=True)
         if not tag_names:
@@ -132,7 +131,7 @@ class TagView(BaseSupersetView):
 
     @has_access_api
     @expose("/tagged_objects/", methods=["GET", "POST"])
-    def tagged_objects(self):
+    def tagged_objects(self):  # pylint: disable=no-self-use
         tags = [
             process_template(tag)
             for tag in request.args.get("tags", "").split(",")
diff --git a/superset/views/utils.py b/superset/views/utils.py
index 1498472..3ff77dc 100644
--- a/superset/views/utils.py
+++ b/superset/views/utils.py
@@ -14,7 +14,6 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-# pylint: disable=C,R,W
 from collections import defaultdict
 from datetime import date
 from typing import Any, Dict, List, Optional, Tuple
@@ -82,13 +81,13 @@ def get_viz(
     if slice_id:
         slc = db.session.query(models.Slice).filter_by(id=slice_id).one()
         return slc.get_viz()
-    else:
-        viz_type = form_data.get("viz_type", "table")
-        datasource = ConnectorRegistry.get_datasource(
-            datasource_type, datasource_id, db.session
-        )
-        viz_obj = viz.viz_types[viz_type](datasource, form_data=form_data, force=force)
-        return viz_obj
+
+    viz_type = form_data.get("viz_type", "table")
+    datasource = ConnectorRegistry.get_datasource(
+        datasource_type, datasource_id, db.session
+    )
+    viz_obj = viz.viz_types[viz_type](datasource, form_data=form_data, force=force)
+    return viz_obj
 
 
 def get_form_data(slice_id=None, use_slice_data=False):