Skip to content

Commit

Permalink
Don't die on malformed json in the extras field. Give feedback to user (
Browse files Browse the repository at this point in the history
  • Loading branch information
Denis Zgonjanin authored and mistercrunch committed Apr 13, 2016
1 parent 1e08b3e commit 8fe5790
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 3 deletions.
14 changes: 12 additions & 2 deletions caravel/templates/caravel/models/database/macros.html
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,22 @@
<script>
$("#sqlalchemy_uri").parent()
.append('<button id="testconn" class="btn">Test Connection</button>');
$("#testconn").click(function() {
$("#testconn").click(function(e) {
e.preventDefault();
var url = "/caravel/testconn";

var data = {};
try{
data = JSON.stringify({ uri: $("#sqlalchemy_uri").val(), extras: JSON.parse($("#extra").val()) })
} catch(parse_error){
alert("Malformed JSON in the extras field: " + parse_error);
return false
}

$.ajax({
method: "POST",
url: url,
data: JSON.stringify({ uri: $("#sqlalchemy_uri").val(), extras: JSON.parse($("#extra").val()) }),
data: data,
dataType: 'json',
contentType: "application/json; charset=utf-8"
}).done(function(data) {
Expand Down
2 changes: 1 addition & 1 deletion caravel/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -638,7 +638,7 @@ def testconn(self):
"""Tests a sqla connection"""
try:
uri = request.json.get('uri')
connect_args = request.json.get('extras', {}).get('engine_params', {}).get('connect_args')
connect_args = request.json.get('extras', {}).get('engine_params', {}).get('connect_args', {})
engine = create_engine(uri, connect_args=connect_args)
engine.connect()
return json.dumps(engine.table_names(), indent=4)
Expand Down

0 comments on commit 8fe5790

Please sign in to comment.