def test_detach_2_repack(self): tiles = self.test_place_multiple() detach_tile(tiles[0]) repack(tiles[0].owner_id, tiles[0].dashboard_id) detach_tile(tiles[1]) repack(tiles[0].owner_id, tiles[0].dashboard_id) del tiles[0] del tiles[0] layout = Layout.select(tiles[0].owner_id, tiles[0].dashboard_id) self.assertDictEqual( self.ld_from_vos( tiles, { u'width': 4, u'height': 4, u'x': 0, u'y': 0 }, { u'width': 5, u'height': 1, u'x': 0, u'y': 4 }, { u'width': 4, u'height': 4, u'x': 4, u'y': 0 }, ), layout.layout_dict)
def test_delete(self): tile_config = { 'tw_type': 'Range', 'tags': ['ip:192.168.1.1'], 'series_spec_list': [ dataseries.SeriesSpec(2, 0, dict(op='eq', args=['monique'])), ], 'tile_options': { 'seconds_back': 600, 'tile_title': 'Points by user', 'sscs': dataseries.SeriesSpec(2, 0, dict(op='eq', args=['monique'])), 'tpcreator_uispec': tpcreator.suggested_tpcreator_uispec(['ip:192.168.1.1']) } } owner_id = uuid.uuid1() report_id = report_data('points').report.report_id dashboard_id = report_data('points').dashboard_id tile = Tile.insert(owner_id, report_id, dashboard_id, tile_config) place_tile(tile) self.assertTrue(self._select_tpcreator_rows(tile)) self.assertTrue(self._select_sscs_rows(tile)) tile = tile.select(tile.dashboard_id, tile.tile_id) detach_tile(tile) deleted_tile = tile.select(tile.dashboard_id, tile.tile_id) self.assertIsNone(deleted_tile)
def test_removing_tiles(self): rd, master_tile = self.test_handle_tpcreator() tiles = Tile.select_multi(rd.dashboard_id, _select_tile_ids(rd.dashboard_id)).values() tpcreated_tile = util.first(t for t in tiles if t.get_master_tile_id()) layouts.detach_tile(tpcreated_tile) self.assertEqual(1, len(tpcreator.select_tpcreated_tile_ids(master_tile)))
def test_get_dashboards_displaying_report(self): od = self.test_inserting() res = od.get_dashboards_displaying_report(uuid.uuid4()) self.assertEqual([], res) r = Report.insert(od.owner_id, 'r') tile_config = { 'series_spec_list': [ dataseries.SeriesSpec(0, -1, dict(op='eq', args=['0'])), ], } res = od.get_dashboards_displaying_report(r.report_id) self.assertEqual([], res) t1 = Tile.insert(od.owner_id, r.report_id, od.dashboards[3].dashboard_id, tile_config) place_tile(t1) res = od.get_dashboards_displaying_report(r.report_id) self.assertEqual(1, len(res)) self.assertEqual('Dash 4', res[0].dashboard_name) t2 = Tile.insert(od.owner_id, r.report_id, od.dashboards[1].dashboard_id, tile_config) place_tile(t2) res = od.get_dashboards_displaying_report(r.report_id) self.assertEqual(2, len(res)) self.assertEqual('Dash 2', res[0].dashboard_name) self.assertEqual('Dash 4', res[1].dashboard_name) t3 = Tile.insert(od.owner_id, r.report_id, od.dashboards[1].dashboard_id, tile_config) place_tile(t3) res = od.get_dashboards_displaying_report(r.report_id) self.assertEqual(2, len(res)) self.assertEqual('Dash 2', res[0].dashboard_name) self.assertEqual('Dash 4', res[1].dashboard_name) detach_tile(t3) res = od.get_dashboards_displaying_report(r.report_id) self.assertEqual(2, len(res)) self.assertEqual('Dash 2', res[0].dashboard_name) self.assertEqual('Dash 4', res[1].dashboard_name) detach_tile(t2) res = od.get_dashboards_displaying_report(r.report_id) self.assertEqual(1, len(res)) self.assertEqual('Dash 4', res[0].dashboard_name) od.dashboards[3].delete() res = od.get_dashboards_displaying_report(r.report_id) self.assertEqual(0, len(res))
def test_detach_all_and_attach(self): tiles = self.test_place_multiple() dashboard_id = tiles[0].dashboard_id for t in tiles: detach_tile(t) tile = call(tiles_test.TileTest.test_insert, dashboard_id=dashboard_id) res = place_tile(tile) vo = {'width': 4, 'height': 4, 'x': 0, 'y': 0} self.assertEqual(vo, res.new_tiles[tile]) layout = Layout.select(tile.owner_id, tile.dashboard_id) self.assertEqual(res.new_layout.layout_id, layout.layout_id) self.assertEqual({tile.tile_id: vo}, layout.layout_dict)
def test_deleting_layout_by_report_row(self): owner_id = uuid.uuid1() dashboard_id_1 = uuid.uuid1() r = reports.Report.insert(owner_id, 'r') tile_config = { 'tw_type': 'Single', 'tags': ['p1:10'], 'series_spec_list': [ dataseries.SeriesSpec(0, -1, dict(op='eq', args=['0'])), ], 'tile_options': {} } tile_config['tile_options'][ 'tpcreator_uispec'] = tpcreator.suggested_tpcreator_uispec( ['p1:10']) master_tile_1 = Tile.insert(owner_id, r.report_id, dashboard_id_1, tile_config) layouts.place_tile(master_tile_1) r.process_input('1', tags=['p1:11']) self.assertEqual( 2, len( Layout.select(master_tile_1.owner_id, master_tile_1.dashboard_id).layout_dict)) rows = c.dao.LayoutDAO.select_layout_by_report_multi( master_tile_1.owner_id, master_tile_1.report_id, [], 'tpcreator', 100) self.assertTrue(rows) layouts.detach_tile(master_tile_1) r.process_input('1', tags=['p1:12']) self.assertEqual( 1, len( Layout.select(master_tile_1.owner_id, master_tile_1.dashboard_id).layout_dict)) rows = c.dao.LayoutDAO.select_layout_by_report_multi( master_tile_1.owner_id, master_tile_1.report_id, [], 'tpcreator', 100) self.assertFalse(rows)
def move_tile(): dashboard_id = request.get_json()['dashboard_id'] tile_id = request.get_json()['tile_id'] target_dashboard_id = request.get_json()['target_dashboard_id'] for_layout_id = request.get_json()['for_layout_id'] check_access(lambda: auth.access_dashboard(dashboard_id)) check_access(lambda: auth.access_dashboard(target_dashboard_id)) old_tile = tiles.Tile.select(dashboard_id, tile_id) if not old_tile: return error('Invalid source tile in move_tile %s %s' % (dashboard_id, tile_id)) new_tile = old_tile.copy(target_dashboard_id) if not layouts.place_tile(new_tile): return error('Cannot copy the source file') mres = layouts.detach_tile(old_tile, for_layout_id=for_layout_id) if not mres: return error(message='Deletion of the source tile unsuccessful due to old page data') log.info('Moved tile tile_id=%s dashboard_id=%s to tile tile_id=%s dashboard_id=%s', tile_id, dashboard_id, new_tile.tile_id, target_dashboard_id) return success(result=dict(new_layout_id=mres.new_layout.layout_id))
def test_deleting_layout_by_report_row(self): tile, report = self.test_sscs_virtual_column() report.process_input('3\n4\n5\n6') tile = Tile.select(tile.dashboard_id, Layout.select(tile.owner_id, tile.dashboard_id).layout_dict.keys()[0]) self.assertEqual(4, len(tile.series_specs())) layouts.detach_tile(tile) rows = c.dao.LayoutDAO.select_layout_by_report_multi(tile.owner_id, tile.report_id, [], 'sscs', 100) self.assertTrue(rows) report.process_input('3\n4\n5\n6') rows = c.dao.LayoutDAO.select_layout_by_report_multi(tile.owner_id, tile.report_id, [], 'sscs', 100) self.assertFalse(rows)
def delete_tile(): dashboard_id = request.get_json()['dashboard_id'] tile_id = request.get_json()['tile_id'] for_layout_id = request.get_json()['for_layout_id'] check_access(lambda: auth.access_dashboard(dashboard_id)) tile = tiles.Tile.select(dashboard_id, tile_id) if not tile: return error('Invalid tile') mres = layouts.detach_tile(tile, for_layout_id=for_layout_id) if not mres: return error(message='Could not delete the tile, a page refresh is needed') log.info('Deleted tile dashboard_id=%s tile_id=%s', dashboard_id, tile_id) return success(result=dict(new_layout_id=mres.new_layout.layout_id))