[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:
Daniel Vaz Gaspar
2019-09-23 16:28:08 +01:00
committed by Maxime Beauchemin
parent 6a08f25b15
commit f3065a763f
3 changed files with 41 additions and 4 deletions

View File

@@ -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)