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://"
 

Reply via email to