Some dashboard import/export fixes. (#1340)

This commit is contained in:
Bogdan
2016-10-13 14:36:39 -07:00
committed by GitHub
parent 5bea3986b2
commit 11a8e3591d
4 changed files with 10 additions and 9 deletions

View File

@@ -342,7 +342,7 @@ class Slice(Model, AuditMixinNullable, ImportMixin):
slc.params_dict['remote_id'] == slc_to_import.id):
slc_to_override = slc
slc_to_import.id = None
slc_to_import = slc_to_import.copy()
params = slc_to_import.params_dict
slc_to_import.datasource_id = SourceRegistry.get_datasource_by_name(
session, slc_to_import.datasource_type, params['datasource_name'],
@@ -400,7 +400,7 @@ class Dashboard(Model, AuditMixinNullable, ImportMixin):
owners = relationship("User", secondary=dashboard_user)
export_fields = ('dashboard_title', 'position_json', 'json_metadata',
'description', 'css', 'slug', 'slices')
'description', 'css', 'slug')
def __repr__(self):
return self.dashboard_title

View File

@@ -224,6 +224,7 @@ def init(caravel):
'UserDBModelView',
'SQL Lab',
'AccessRequestsModelView',
'Manage',
])
ADMIN_ONLY_PERMISSIONS = set([

View File

@@ -1224,17 +1224,13 @@ class Caravel(BaseCaravelView):
"""Overrides the dashboards using pickled instances from the file."""
f = request.files.get('file')
if request.method == 'POST' and f:
filename = secure_filename(f.filename)
filepath = os.path.join(app.config['UPLOAD_FOLDER'], filename)
f.save(filepath)
current_tt = int(time.time())
data = pickle.load(open(filepath, 'rb'))
data = pickle.load(f)
for table in data['datasources']:
models.SqlaTable.import_obj(table, import_time=current_tt)
for dashboard in data['dashboards']:
models.Dashboard.import_obj(
dashboard, import_time=current_tt)
os.remove(filepath)
db.session.commit()
return redirect('/dashboardmodelview/list/')
return self.render_template('caravel/import_dashboards.html')

View File

@@ -142,7 +142,6 @@ class ImportExportTests(CaravelTestCase):
set([m.metric_name for m in actual_ds.metrics]))
def assert_slice_equals(self, expected_slc, actual_slc):
self.assertEquals(actual_slc.datasource.perm, actual_slc.perm)
self.assertEquals(expected_slc.slice_name, actual_slc.slice_name)
self.assertEquals(
expected_slc.datasource_type, actual_slc.datasource_type)
@@ -201,7 +200,9 @@ class ImportExportTests(CaravelTestCase):
def test_import_1_slice(self):
expected_slice = self.create_slice('Import Me', id=10001);
slc_id = models.Slice.import_obj(expected_slice, import_time=1989)
self.assert_slice_equals(expected_slice, self.get_slice(slc_id))
slc = self.get_slice(slc_id)
self.assertEquals(slc.datasource.perm, slc.perm)
self.assert_slice_equals(expected_slice, slc)
table_id = self.get_table_by_name('wb_health_population').id
self.assertEquals(table_id, self.get_slice(slc_id).datasource_id)
@@ -218,9 +219,12 @@ class ImportExportTests(CaravelTestCase):
imported_slc_2 = self.get_slice(slc_id_2)
self.assertEquals(table_id, imported_slc_1.datasource_id)
self.assert_slice_equals(slc_1, imported_slc_1)
self.assertEquals(imported_slc_1.datasource.perm, imported_slc_1.perm)
self.assertEquals(table_id, imported_slc_2.datasource_id)
self.assert_slice_equals(slc_2, imported_slc_2)
self.assertEquals(imported_slc_2.datasource.perm, imported_slc_2.perm)
def test_import_slices_for_non_existent_table(self):
with self.assertRaises(IndexError):