From 797d41bf0413541c01fe2e464f4351c411212885 Mon Sep 17 00:00:00 2001 From: Maxime Beauchemin Date: Mon, 11 Apr 2016 18:01:02 -0700 Subject: [PATCH] Getting the SQL view back in a working state --- caravel/assets/javascripts/sql.js | 13 +++++--- caravel/assets/stylesheets/sql.css | 41 ++++++++++++++++++++++++ caravel/templates/caravel/sql.html | 51 +----------------------------- caravel/views.py | 14 +++++--- 4 files changed, 60 insertions(+), 59 deletions(-) create mode 100644 caravel/assets/stylesheets/sql.css diff --git a/caravel/assets/javascripts/sql.js b/caravel/assets/javascripts/sql.js index 99cad2d84f0f..dcde9a197f66 100644 --- a/caravel/assets/javascripts/sql.js +++ b/caravel/assets/javascripts/sql.js @@ -2,7 +2,8 @@ var $ = window.$ = require('jquery'); var jQuery = window.jQuery = $; var showModal = require('./modules/utils.js').showModal; -require('select2'); +require('./caravel-select2.js'); + require('datatables.net-bs'); require('../node_modules/datatables-bootstrap3-plugin/media/css/datatables-bootstrap3.css'); require('bootstrap'); @@ -11,12 +12,14 @@ var ace = require('brace'); require('brace/mode/sql'); require('brace/theme/crimson_editor'); +require('../stylesheets/sql.css'); + $(document).ready(function () { function getParam(name) { name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]"); var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"), results = regex.exec(location.search); - return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " ")); + return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " ")); } function initSqlEditorView() { @@ -53,9 +56,9 @@ $(document).ready(function () { function selectStarOnClick() { $.ajax('/caravel/select_star/' + database_id + '/' + $("#dbtable").val() + '/') - .done(function (msg) { - editor.setValue(msg); - }); + .done(function (msg) { + editor.setValue(msg); + }); } $("#select_star").click(selectStarOnClick); diff --git a/caravel/assets/stylesheets/sql.css b/caravel/assets/stylesheets/sql.css new file mode 100644 index 000000000000..f202c5c97fcf --- /dev/null +++ b/caravel/assets/stylesheets/sql.css @@ -0,0 +1,41 @@ +.topsql { + height: 250px; +} +.dataTables_filter { + padding-top: 5px; + padding-right: 5px; +} +.bordered { + padding: 0px 0px; + border: 1px solid grey; + border-radius: 5px; + background-color: #EEE; +} +div.alert { + padding: 5px; + margin: 0px; +} +.metadata { + overflow: auto; + width: 300px; + height: 100px; +} +.fillup { + width: 100%; + height: 100%; +} +.fillheight { + height: 100%; +} +.interactions { + padding-bottom: 10px; +} +#results { + overflow: auto; + font-size: 12px; + margin-bottom: 5px; +} +table tbody tr td { + padding: 1px 4px; + font-size: small; +} diff --git a/caravel/templates/caravel/sql.html b/caravel/templates/caravel/sql.html index 683de3bcc435..f40477b022a2 100644 --- a/caravel/templates/caravel/sql.html +++ b/caravel/templates/caravel/sql.html @@ -1,54 +1,5 @@ {% extends "caravel/basic.html" %} -{% block head_css %} - {{super()}} - - - -{% endblock %} {% block body %}
@@ -84,7 +35,7 @@

db: [{{ db }}]


- +
diff --git a/caravel/views.py b/caravel/views.py index 1c55b6944f62..11309ca27cb5 100644 --- a/caravel/views.py +++ b/caravel/views.py @@ -718,14 +718,15 @@ def table(self, database_id, table_name): cols = mydb.get_columns(table_name) df = pd.DataFrame([(c['name'], c['type']) for c in cols]) df.columns = ['col', 'type'] + tbl_cls = ( + "dataframe table table-striped table-bordered " + "table-condensed sql_results").split(' ') return self.render_template( "caravel/ajah.html", content=df.to_html( index=False, na_rep='', - classes=( - "dataframe table table-striped table-bordered " - "table-condensed sql_results"))) + classes=tbl_cls)) @has_access @expose("/select_star///") @@ -753,6 +754,11 @@ def runsql(self): sql = data.get('sql') database_id = data.get('database_id') mydb = session.query(models.Database).filter_by(id=database_id).first() + + if ( + not self.appbuilder.sm.has_access( + 'all_datasource_access', 'all_datasource_access')): + raise Exception("test") content = "" if mydb: eng = mydb.get_sqla_engine() @@ -771,7 +777,7 @@ def runsql(self): na_rep='', classes=( "dataframe table table-striped table-bordered " - "table-condensed sql_results")) + "table-condensed sql_results").split(' ')) except Exception as e: content = ( '
'