feat: don't ask for password when DB exists (#17776)

This commit is contained in:
Beto Dealmeida 2021-12-16 09:17:15 -08:00 committed by GitHub
parent 4fd6df9ef8
commit 73ae892066
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 8 additions and 2 deletions

View File

@ -97,7 +97,7 @@ class ImportChartsCommand(ImportModelsCommand):
)
config["params"].update({"datasource": dataset.uid})
if config["query_context"]:
if "query_context" in config:
del config["query_context"]
import_chart(session, config, overwrite=overwrite)

View File

@ -27,9 +27,10 @@ from sqlalchemy import MetaData
from sqlalchemy.engine.url import make_url
from sqlalchemy.exc import ArgumentError
from superset import db
from superset.db_engine_specs import BaseEngineSpec, get_engine_specs
from superset.exceptions import CertificateException, SupersetSecurityException
from superset.models.core import ConfigurationMethod, PASSWORD_MASK
from superset.models.core import ConfigurationMethod, Database, PASSWORD_MASK
from superset.security.analytics_db_safety import check_sqlalchemy_uri
from superset.utils.core import markdown, parse_ssl_cert
@ -620,6 +621,11 @@ class ImportV1DatabaseSchema(Schema):
@validates_schema
def validate_password(self, data: Dict[str, Any], **kwargs: Any) -> None:
"""If sqlalchemy_uri has a masked password, password is required"""
uuid = data["uuid"]
existing = db.session.query(Database).filter_by(uuid=uuid).first()
if existing:
return
uri = data["sqlalchemy_uri"]
password = make_url(uri).password
if password == PASSWORD_MASK and data.get("password") is None: