mirror of
https://github.com/apache/superset.git
synced 2026-04-23 10:04:45 +00:00
[database] Improve form and API validation for invalid URI (#8240)
* [database] Improve form and API validation for invalid URI * [database] Added missing EOL * [database] lint
This commit is contained in:
committed by
Maxime Beauchemin
parent
6a08f25b15
commit
f3065a763f
@@ -19,18 +19,21 @@ import os
|
||||
|
||||
from flask import flash, redirect
|
||||
from flask_appbuilder import SimpleFormView
|
||||
from flask_appbuilder.forms import DynamicForm
|
||||
from flask_appbuilder.models.sqla.interface import SQLAInterface
|
||||
from flask_babel import gettext as __
|
||||
from flask_babel import lazy_gettext as _
|
||||
from sqlalchemy.exc import IntegrityError
|
||||
from werkzeug.utils import secure_filename
|
||||
from wtforms.fields import StringField
|
||||
from wtforms.validators import ValidationError
|
||||
|
||||
from superset import app, appbuilder, security_manager
|
||||
from superset.connectors.sqla.models import SqlaTable
|
||||
import superset.models.core as models
|
||||
from superset.utils import core as utils
|
||||
from superset.views.base import DeleteMixin, SupersetModelView, YamlExportMixin
|
||||
from . import DatabaseMixin
|
||||
from . import DatabaseMixin, sqlalchemy_uri_validator
|
||||
from .forms import CsvToDatabaseForm
|
||||
|
||||
|
||||
@@ -38,6 +41,13 @@ config = app.config
|
||||
stats_logger = config.get("STATS_LOGGER")
|
||||
|
||||
|
||||
def sqlalchemy_uri_form_validator(form: DynamicForm, field: StringField) -> None:
|
||||
"""
|
||||
Check if user has submitted a valid SQLAlchemy URI
|
||||
"""
|
||||
sqlalchemy_uri_validator(field.data, exception=ValidationError)
|
||||
|
||||
|
||||
class DatabaseView(
|
||||
DatabaseMixin, SupersetModelView, DeleteMixin, YamlExportMixin
|
||||
): # noqa
|
||||
@@ -45,6 +55,7 @@ class DatabaseView(
|
||||
|
||||
add_template = "superset/models/database/add.html"
|
||||
edit_template = "superset/models/database/edit.html"
|
||||
validators_columns = {"sqlalchemy_uri": [sqlalchemy_uri_form_validator]}
|
||||
|
||||
def _delete(self, pk):
|
||||
DeleteMixin._delete(self, pk)
|
||||
|
||||
Reference in New Issue
Block a user