Getting the SQL view back in a working state (#327)

This commit is contained in:
Maxime Beauchemin 2016-04-11 21:20:42 -07:00
parent 74975a1606
commit 54fb76e680
4 changed files with 60 additions and 59 deletions

View File

@ -2,7 +2,8 @@ var $ = window.$ = require('jquery');
var jQuery = window.jQuery = $; var jQuery = window.jQuery = $;
var showModal = require('./modules/utils.js').showModal; var showModal = require('./modules/utils.js').showModal;
require('select2'); require('./caravel-select2.js');
require('datatables.net-bs'); require('datatables.net-bs');
require('../node_modules/datatables-bootstrap3-plugin/media/css/datatables-bootstrap3.css'); require('../node_modules/datatables-bootstrap3-plugin/media/css/datatables-bootstrap3.css');
require('bootstrap'); require('bootstrap');
@ -11,12 +12,14 @@ var ace = require('brace');
require('brace/mode/sql'); require('brace/mode/sql');
require('brace/theme/crimson_editor'); require('brace/theme/crimson_editor');
require('../stylesheets/sql.css');
$(document).ready(function () { $(document).ready(function () {
function getParam(name) { function getParam(name) {
name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]"); name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"), var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
results = regex.exec(location.search); results = regex.exec(location.search);
return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " ")); return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
} }
function initSqlEditorView() { function initSqlEditorView() {
@ -53,9 +56,9 @@ $(document).ready(function () {
function selectStarOnClick() { function selectStarOnClick() {
$.ajax('/caravel/select_star/' + database_id + '/' + $("#dbtable").val() + '/') $.ajax('/caravel/select_star/' + database_id + '/' + $("#dbtable").val() + '/')
.done(function (msg) { .done(function (msg) {
editor.setValue(msg); editor.setValue(msg);
}); });
} }
$("#select_star").click(selectStarOnClick); $("#select_star").click(selectStarOnClick);

View File

@ -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;
}

View File

@ -1,54 +1,5 @@
{% extends "caravel/basic.html" %} {% extends "caravel/basic.html" %}
{% block head_css %}
{{super()}}
<link rel="stylesheet" type="text/css" href="/static/assets/vendor/dataTables/jquery.dataTables.min.css" />
<link rel="stylesheet" type="text/css" href="/static/assets/vendor/dataTables/dataTables.bootstrap.css" />
<style type="text/css">
.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;
}
</style>
{% endblock %}
{% block body %} {% block body %}
<div class="container-fluid"> <div class="container-fluid">
@ -84,7 +35,7 @@
</div> </div>
<div id="results_section"> <div id="results_section">
<hr/> <hr/>
<img id="loading" width="25" style="display: none;" src="/static/img/loading.gif"> <img id="loading" width="25" style="display: none;" src="/static/assets/images/loading.gif">
</div> </div>
<div> <div>
<div id="results" class="bordered" style="display: none;"></div> <div id="results" class="bordered" style="display: none;"></div>

View File

@ -719,14 +719,15 @@ class Caravel(BaseView):
cols = mydb.get_columns(table_name) cols = mydb.get_columns(table_name)
df = pd.DataFrame([(c['name'], c['type']) for c in cols]) df = pd.DataFrame([(c['name'], c['type']) for c in cols])
df.columns = ['col', 'type'] df.columns = ['col', 'type']
tbl_cls = (
"dataframe table table-striped table-bordered "
"table-condensed sql_results").split(' ')
return self.render_template( return self.render_template(
"caravel/ajah.html", "caravel/ajah.html",
content=df.to_html( content=df.to_html(
index=False, index=False,
na_rep='', na_rep='',
classes=( classes=tbl_cls))
"dataframe table table-striped table-bordered "
"table-condensed sql_results")))
@has_access @has_access
@expose("/select_star/<database_id>/<table_name>/") @expose("/select_star/<database_id>/<table_name>/")
@ -754,6 +755,11 @@ class Caravel(BaseView):
sql = data.get('sql') sql = data.get('sql')
database_id = data.get('database_id') database_id = data.get('database_id')
mydb = session.query(models.Database).filter_by(id=database_id).first() 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 = "" content = ""
if mydb: if mydb:
eng = mydb.get_sqla_engine() eng = mydb.get_sqla_engine()
@ -772,7 +778,7 @@ class Caravel(BaseView):
na_rep='', na_rep='',
classes=( classes=(
"dataframe table table-striped table-bordered " "dataframe table table-striped table-bordered "
"table-condensed sql_results")) "table-condensed sql_results").split(' '))
except Exception as e: except Exception as e:
content = ( content = (
'<div class="alert alert-danger">' '<div class="alert alert-danger">'