diff --git a/caravel/assets/javascripts/dashboard.js b/caravel/assets/javascripts/dashboard.js
index e3ef7d545..79440d6c4 100644
--- a/caravel/assets/javascripts/dashboard.js
+++ b/caravel/assets/javascripts/dashboard.js
@@ -21,12 +21,17 @@ var Dashboard = function (dashboardData) {
var sliceObjects = [],
dash = this;
dashboard.slices.forEach(function (data) {
- var slice = px.Slice(data, dash);
- $("#slice_" + data.slice_id).find('a.refresh').click(function () {
- slice.render(true);
- });
- sliceObjects.push(slice);
- slice.render();
+ if (data.error) {
+ var html = '
' + data.error + '
';
+ $("#slice_" + data.slice_id).find('.token').html(html);
+ } else {
+ var slice = px.Slice(data, dash);
+ $("#slice_" + data.slice_id).find('a.refresh').click(function () {
+ slice.render(true);
+ });
+ sliceObjects.push(slice);
+ slice.render();
+ }
});
this.slices = sliceObjects;
},
diff --git a/caravel/models.py b/caravel/models.py
index e8973c489..a7ab6230b 100644
--- a/caravel/models.py
+++ b/caravel/models.py
@@ -151,10 +151,8 @@ class Slice(Model, AuditMixinNullable):
@utils.memoized
def viz(self):
d = json.loads(self.params)
- viz = viz_types[self.viz_type](
- self.datasource,
- form_data=d)
- return viz
+ viz_class = viz_types[self.viz_type]
+ return viz_class(self.datasource, form_data=d)
@property
def description_markeddown(self):
@@ -166,7 +164,13 @@ class Slice(Model, AuditMixinNullable):
@property
def data(self):
- d = self.viz.data
+ d = {}
+ self.token = ''
+ try:
+ d = self.viz.data
+ self.token = d.get('token')
+ except Exception as e:
+ d['error'] = str(e)
d['slice_id'] = self.id
return d
diff --git a/caravel/templates/caravel/dashboard.html b/caravel/templates/caravel/dashboard.html
index 9859fc77e..52f3645f4 100644
--- a/caravel/templates/caravel/dashboard.html
+++ b/caravel/templates/caravel/dashboard.html
@@ -72,17 +72,17 @@
{% for slice in dashboard.slices %}
{% set pos = pos_dict.get(slice.id, {}) %}
- {% set viz = slice.viz %}
+
-
-
+