This is an automated email from the ASF dual-hosted git repository. hugh pushed a commit to branch ch18764_gsheetsAdd in repository https://gitbox.apache.org/repos/asf/superset.git
commit fca0ca88eb5997c00f6da69794ccd2f3dd2bcdd1 Author: hughhhh <[email protected]> AuthorDate: Fri Jul 16 17:16:12 2021 -0400 save disable on public sheets --- .../data/database/DatabaseModal/DatabaseConnectionForm.tsx | 5 +++-- .../src/views/CRUD/data/database/DatabaseModal/index.tsx | 11 ++++++++++- superset/databases/commands/validate.py | 2 +- superset/db_engine_specs/gsheets.py | 7 +++++-- 4 files changed, 19 insertions(+), 6 deletions(-) diff --git a/superset-frontend/src/views/CRUD/data/database/DatabaseModal/DatabaseConnectionForm.tsx b/superset-frontend/src/views/CRUD/data/database/DatabaseModal/DatabaseConnectionForm.tsx index 9a33078..6ca8e25 100644 --- a/superset-frontend/src/views/CRUD/data/database/DatabaseModal/DatabaseConnectionForm.tsx +++ b/superset-frontend/src/views/CRUD/data/database/DatabaseModal/DatabaseConnectionForm.tsx @@ -47,7 +47,7 @@ export const FormFieldOrder = [ 'password', 'database_name', 'credentials_info', - 'table_catalog', + 'catalog', 'query', 'encryption', ]; @@ -411,6 +411,7 @@ const DisplayField = ({ style={{ width: '100%' }} onChange={(value: string) => setPublic(setBooleanToString(value))} defaultValue="true" + disabled > <Select.Option value="true" key={1}> Publicly shared sheets only @@ -486,7 +487,7 @@ const FORM_FIELD_MAP = { query: queryField, encryption: forceSSLField, credentials_info: CredentialsInfo, - table_catalog: TableCatalog, + catalog: TableCatalog, }; const DatabaseConnectionForm = ({ diff --git a/superset-frontend/src/views/CRUD/data/database/DatabaseModal/index.tsx b/superset-frontend/src/views/CRUD/data/database/DatabaseModal/index.tsx index 7ff853b..65105aa 100644 --- a/superset-frontend/src/views/CRUD/data/database/DatabaseModal/index.tsx +++ b/superset-frontend/src/views/CRUD/data/database/DatabaseModal/index.tsx @@ -234,7 +234,7 @@ function dbReducer( ...trimmedState, parameters: { ...trimmedState.parameters, - table_catalog: { + catalog: { ...trimmedState.parameters?.table_catalog, [action.payload.name.substring(14)]: action.payload.value, // removing table-catalog from key }, @@ -484,6 +484,15 @@ const DatabaseModal: FunctionComponent<DatabaseModalProps> = ({ } } + if (dbToUpdate.parameters.catalog) { + // need to stringify gsheets catalog to allow it to be seralized + dbToUpdate.extra_json = { + engine_params: JSON.stringify({ + catalog: dbToUpdate.parameters.catalog, + }), + }; + } + if (dbToUpdate?.extra_json) { // convert extra_json to back to string dbToUpdate.extra = serializeExtra(dbToUpdate?.extra_json); diff --git a/superset/databases/commands/validate.py b/superset/databases/commands/validate.py index b43cdc6..6f717cb 100644 --- a/superset/databases/commands/validate.py +++ b/superset/databases/commands/validate.py @@ -64,7 +64,7 @@ class ValidateDatabaseParametersCommand(BaseCommand): ), ) engine_spec = engine_specs[engine] - if not issubclass(engine_spec, BasicParametersMixin): + if not hasattr(engine_spec, "parameters_schema"): raise InvalidEngineError( SupersetError( message=__( diff --git a/superset/db_engine_specs/gsheets.py b/superset/db_engine_specs/gsheets.py index 7e069ba..a9269e0 100644 --- a/superset/db_engine_specs/gsheets.py +++ b/superset/db_engine_specs/gsheets.py @@ -47,7 +47,8 @@ class GSheetsParametersSchema(Schema): credentials_info = EncryptedField( required=False, description="Contents of Google Sheets JSON credentials.", ) - table_catalog = fields.Dict(required=False) + catalog = fields.Dict(required=False) + query = fields.Dict(required=False) class GSheetsParametersType(TypedDict): @@ -106,7 +107,9 @@ class GSheetsEngineSpec(SqliteEngineSpec): return {"metadata": metadata["extra"]} @classmethod - def build_sqlalchemy_uri(cls) -> str: # pylint: disable=unused-variable + def build_sqlalchemy_uri( + cls, _: GSheetsParametersType, encrypted_extra: Optional[Dict[str, Any]] = None, + ) -> str: # pylint: disable=unused-variable return "gsheets://"
