You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by be...@apache.org on 2018/12/10 21:12:00 UTC

[incubator-superset] branch master updated: Google spreadsheets (#5915)

This is an automated email from the ASF dual-hosted git repository.

beto pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-superset.git


The following commit(s) were added to refs/heads/master by this push:
     new f366bbe  Google spreadsheets (#5915)
f366bbe is described below

commit f366bbe7356106d15c6cfe481f64afbd8091ffb7
Author: Beto Dealmeida <ro...@dealmeida.net>
AuthorDate: Mon Dec 10 13:11:54 2018 -0800

    Google spreadsheets (#5915)
    
    * Google spreadsheets
    
    * Fetch table metadata in SQL Lab
    
    * Show full URL for spreadsheet
    
    * Fix version
    
    * Remove sqllab changes
---
 setup.py                                                       | 1 +
 superset/assets/src/SqlLab/components/ExploreResultsButton.jsx | 3 ++-
 superset/assets/src/SqlLab/components/SouthPane.jsx            | 2 +-
 superset/db_engine_specs.py                                    | 7 +++++++
 superset/views/core.py                                         | 6 ++++--
 5 files changed, 15 insertions(+), 4 deletions(-)

diff --git a/setup.py b/setup.py
index 6985dba..542ca3f 100644
--- a/setup.py
+++ b/setup.py
@@ -69,6 +69,7 @@ setup(
         'flask-wtf',
         'flower',  # deprecated
         'geopy',
+        'gsheetsdb>=0.1.8',
         'gunicorn',  # deprecated
         'humanize',
         'idna',
diff --git a/superset/assets/src/SqlLab/components/ExploreResultsButton.jsx b/superset/assets/src/SqlLab/components/ExploreResultsButton.jsx
index 26a246c..2c22b93 100644
--- a/superset/assets/src/SqlLab/components/ExploreResultsButton.jsx
+++ b/superset/assets/src/SqlLab/components/ExploreResultsButton.jsx
@@ -164,11 +164,12 @@ class ExploreResultsButton extends React.PureComponent {
     );
   }
   render() {
+    const allowsSubquery = this.props.database && this.props.database.allows_subquery;
     return (
       <Button
         bsSize="small"
         onClick={this.onClick}
-        disabled={!this.props.database.allows_subquery}
+        disabled={!allowsSubquery}
         tooltip={t('Explore the result set in the data exploration view')}
       >
         <Dialog
diff --git a/superset/assets/src/SqlLab/components/SouthPane.jsx b/superset/assets/src/SqlLab/components/SouthPane.jsx
index 3f6fb42..f93947d 100644
--- a/superset/assets/src/SqlLab/components/SouthPane.jsx
+++ b/superset/assets/src/SqlLab/components/SouthPane.jsx
@@ -64,7 +64,7 @@ class SouthPane extends React.PureComponent {
     }
     const dataPreviewTabs = props.dataPreviewQueries.map(query => (
       <Tab
-        title={t('Preview: `%s`', query.tableName)}
+        title={t('Preview: `%s`', decodeURIComponent(query.tableName))}
         eventKey={query.id}
         key={query.id}
       >
diff --git a/superset/db_engine_specs.py b/superset/db_engine_specs.py
index d409c87..edbd1b2 100644
--- a/superset/db_engine_specs.py
+++ b/superset/db_engine_specs.py
@@ -1499,6 +1499,13 @@ class DruidEngineSpec(BaseEngineSpec):
     }
 
 
+class GSheetsEngineSpec(SqliteEngineSpec):
+    """Engine for Google spreadsheets"""
+    engine = 'gsheets'
+    inner_joins = False
+    allows_subquery = False
+
+
 class KylinEngineSpec(BaseEngineSpec):
     """Dialect for Apache Kylin"""
 
diff --git a/superset/views/core.py b/superset/views/core.py
index 7faa1e2..c565e3a 100755
--- a/superset/views/core.py
+++ b/superset/views/core.py
@@ -2267,10 +2267,11 @@ class Superset(BaseSupersetView):
         }))
 
     @has_access
-    @expose('/table/<database_id>/<table_name>/<schema>/')
+    @expose('/table/<database_id>/<path:table_name>/<schema>/')
     @log_this
     def table(self, database_id, table_name, schema):
         schema = utils.js_string_to_python(schema)
+        table_name = parse.unquote_plus(table_name)
         mydb = db.session.query(models.Database).filter_by(id=database_id).one()
         payload_columns = []
         indexes = []
@@ -2326,10 +2327,11 @@ class Superset(BaseSupersetView):
         return json_success(json.dumps(tbl))
 
     @has_access
-    @expose('/extra_table_metadata/<database_id>/<table_name>/<schema>/')
+    @expose('/extra_table_metadata/<database_id>/<path:table_name>/<schema>/')
     @log_this
     def extra_table_metadata(self, database_id, table_name, schema):
         schema = utils.js_string_to_python(schema)
+        table_name = parse.unquote_plus(table_name)
         mydb = db.session.query(models.Database).filter_by(id=database_id).one()
         payload = mydb.db_engine_spec.extra_table_metadata(
             mydb, table_name, schema)