You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by el...@apache.org on 2023/10/20 23:02:48 UTC

[superset] 01/09: chore: bump wtforms and add missing flask-limiter (#23680)

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

elizabeth pushed a commit to branch 2.1
in repository https://gitbox.apache.org/repos/asf/superset.git

commit 652fabdbd0bc63cf30748b1a1b873d5884e5db0d
Author: Daniel Vaz Gaspar <da...@gmail.com>
AuthorDate: Fri Apr 28 15:31:57 2023 +0100

    chore: bump wtforms and add missing flask-limiter (#23680)
---
 requirements/base.txt             | 26 +++++++++++++++++++++++---
 requirements/testing.txt          |  1 -
 setup.py                          |  2 +-
 superset/connectors/sqla/views.py | 10 ++++++----
 superset/views/database/forms.py  | 18 +++++++++---------
 5 files changed, 39 insertions(+), 18 deletions(-)

diff --git a/requirements/base.txt b/requirements/base.txt
index 142768d804..29b2932f2a 100644
--- a/requirements/base.txt
+++ b/requirements/base.txt
@@ -128,6 +128,10 @@ humanize==3.11.0
     # via apache-superset
 idna==3.2
     # via email-validator
+importlib-metadata==6.3.0
+    # via flask
+importlib-resources==5.12.0
+    # via limits
 isodate==0.6.0
     # via apache-superset
 itsdangerous==2.1.1
@@ -144,6 +148,8 @@ kombu==5.2.4
     # via celery
 korean-lunar-calendar==0.2.1
     # via holidays
+limits==3.3.1
+    # via flask-limiter
 mako==1.1.4
     # via alembic
 markdown==3.3.4
@@ -191,6 +197,8 @@ pyarrow==10.0.1
     # via apache-superset
 pycparser==2.20
     # via cffi
+pygments==2.15.0
+    # via rich
 pyjwt==2.4.0
     # via
     #   apache-superset
@@ -232,6 +240,8 @@ pyyaml==5.4.1
     #   apispec
 redis==3.5.3
     # via apache-superset
+rich==13.3.4
+    # via flask-limiter
 selenium==3.141.0
     # via apache-superset
 simplejson==3.17.3
@@ -269,7 +279,11 @@ sshtunnel==0.4.0
 tabulate==0.8.9
     # via apache-superset
 typing-extensions==4.4.0
-    # via apache-superset
+    # via
+    #   apache-superset
+    #   flask-limiter
+    #   limits
+    #   rich
 urllib3==1.26.6
     # via selenium
 vine==5.0.0
@@ -286,16 +300,22 @@ werkzeug==2.1.2
     #   flask
     #   flask-jwt-extended
     #   flask-login
-wtforms==2.3.3
+wrapt==1.12.1
+    # via deprecated
+wtforms==3.0.1
     # via
     #   apache-superset
     #   flask-appbuilder
     #   flask-wtf
     #   wtforms-json
-wtforms-json==0.3.3
+wtforms-json==0.3.5
     # via apache-superset
 xlsxwriter==3.0.7
     # via apache-superset
+zipp==3.15.0
+    # via
+    #   importlib-metadata
+    #   importlib-resources
 
 # The following packages are considered to be unsafe in a requirements file:
 # setuptools
diff --git a/requirements/testing.txt b/requirements/testing.txt
index 5312ea4f23..ead36ba3f6 100644
--- a/requirements/testing.txt
+++ b/requirements/testing.txt
@@ -139,7 +139,6 @@ websocket-client==1.2.0
     # via docker
 wrapt==1.12.1
     # via astroid
-
 # The following packages are considered to be unsafe in a requirements file:
 # pip
 # setuptools
diff --git a/setup.py b/setup.py
index 590ee0925b..05c6ca4ab5 100644
--- a/setup.py
+++ b/setup.py
@@ -123,7 +123,7 @@ setup(
         "tabulate>=0.8.9, <0.9",
         "typing-extensions>=4, <5",
         "waitress; sys_platform == 'win32'",
-        "wtforms>=2.3.3, <2.4",
+        "wtforms>=2.3.3, <4",
         "wtforms-json",
         "xlsxwriter>=3.0.7, <3.1",
     ],
diff --git a/superset/connectors/sqla/views.py b/superset/connectors/sqla/views.py
index 86cb08bb86..cb57792f97 100644
--- a/superset/connectors/sqla/views.py
+++ b/superset/connectors/sqla/views.py
@@ -21,11 +21,13 @@ from typing import Any, cast
 
 from flask import current_app, flash, Markup, redirect
 from flask_appbuilder import CompactCRUDMixin, expose
+from flask import flash, Markup, redirect
+from flask_appbuilder import CompactCRUDMixin, expose
+from flask_appbuilder.fields import QuerySelectField
 from flask_appbuilder.fieldwidgets import Select2Widget
 from flask_appbuilder.models.sqla.interface import SQLAInterface
 from flask_appbuilder.security.decorators import has_access
 from flask_babel import lazy_gettext as _
-from wtforms.ext.sqlalchemy.fields import QuerySelectField
 from wtforms.validators import DataRequired, Regexp
 
 from superset import app, db
@@ -186,7 +188,7 @@ class TableColumnInlineView(  # pylint: disable=too-many-ancestors
     add_form_extra_fields = {
         "table": QuerySelectField(
             "Table",
-            query_factory=lambda: db.session.query(models.SqlaTable),
+            query_func=lambda: db.session.query(models.SqlaTable),
             allow_blank=True,
             widget=Select2Widget(extra_classes="readonly"),
         )
@@ -261,7 +263,7 @@ class SqlMetricInlineView(  # pylint: disable=too-many-ancestors
     add_form_extra_fields = {
         "table": QuerySelectField(
             "Table",
-            query_factory=lambda: db.session.query(models.SqlaTable),
+            query_func=lambda: db.session.query(models.SqlaTable),
             allow_blank=True,
             widget=Select2Widget(extra_classes="readonly"),
         )
@@ -497,7 +499,7 @@ class TableModelView(  # pylint: disable=too-many-ancestors
     edit_form_extra_fields = {
         "database": QuerySelectField(
             "Database",
-            query_factory=lambda: db.session.query(models.Database),
+            query_func=lambda: db.session.query(models.Database),
             widget=Select2Widget(extra_classes="readonly"),
         )
     }
diff --git a/superset/views/database/forms.py b/superset/views/database/forms.py
index 91ab38dc2f..a93c76b5d9 100644
--- a/superset/views/database/forms.py
+++ b/superset/views/database/forms.py
@@ -17,6 +17,7 @@
 """Contains the logic to create cohesive forms on the explore view"""
 from typing import List
 
+from flask_appbuilder.fields import QuerySelectField
 from flask_appbuilder.fieldwidgets import BS3TextFieldWidget
 from flask_appbuilder.forms import DynamicForm
 from flask_babel import lazy_gettext as _
@@ -28,7 +29,6 @@ from wtforms import (
     SelectField,
     StringField,
 )
-from wtforms.ext.sqlalchemy.fields import QuerySelectField
 from wtforms.validators import DataRequired, Length, NumberRange, Optional, Regexp
 
 from superset import app, db, security_manager
@@ -43,8 +43,8 @@ config = app.config
 
 
 class UploadToDatabaseForm(DynamicForm):
-    # pylint: disable=E0211
-    def file_allowed_dbs() -> List[Database]:  # type: ignore
+    @staticmethod
+    def file_allowed_dbs() -> List[Database]:
         file_enabled_dbs = (
             db.session.query(Database).filter_by(allow_file_upload=True).all()
         )
@@ -136,8 +136,8 @@ class CsvToDatabaseForm(UploadToDatabaseForm):
     database = QuerySelectField(
         _("Database"),
         description=_("Select a database to upload the file to"),
-        query_factory=UploadToDatabaseForm.file_allowed_dbs,
-        get_pk=lambda a: a.id,
+        query_func=UploadToDatabaseForm.file_allowed_dbs,
+        get_pk_func=lambda a: a.id,
         get_label=lambda a: a.database_name,
     )
     schema = StringField(
@@ -303,8 +303,8 @@ class ExcelToDatabaseForm(UploadToDatabaseForm):
 
     database = QuerySelectField(
         _("Database"),
-        query_factory=UploadToDatabaseForm.file_allowed_dbs,
-        get_pk=lambda a: a.id,
+        query_func=UploadToDatabaseForm.file_allowed_dbs,
+        get_pk_func=lambda a: a.id,
         get_label=lambda a: a.database_name,
     )
     schema = StringField(
@@ -434,8 +434,8 @@ class ColumnarToDatabaseForm(UploadToDatabaseForm):
 
     database = QuerySelectField(
         _("Database"),
-        query_factory=UploadToDatabaseForm.file_allowed_dbs,
-        get_pk=lambda a: a.id,
+        query_func=UploadToDatabaseForm.file_allowed_dbs,
+        get_pk_func=lambda a: a.id,
         get_label=lambda a: a.database_name,
     )
     schema = StringField(