def test_synchronize_sizes_of_tpcreated(self): rd, master_tile = self.test_handle_tpcreator() layout = layouts.Layout.select(rd.owner_id, rd.dashboard_id) ld = layout.layout_dict ld[master_tile.tile_id]['width'] = 8 ld[master_tile.tile_id]['height'] = 3 ld = layouts.apply_mods_for_noninserted_layout( [layouts.repack_mod()], Layout(ld)).new_layout.layout_dict layout_id = layout.set(rd.owner_id, rd.dashboard_id) self.assertTrue(layout_id) self.assertTrue( tpcreator.synchronize_sizes_of_tpcreated(master_tile, layout_id)) layout = Layout.select(rd.owner_id, rd.dashboard_id) ld = layout.layout_dict for tile_id in tpcreator.select_tpcreated_tile_ids(master_tile): self.assertEqual(8, ld[tile_id]['width']) self.assertEqual(3, ld[tile_id]['height'])
def set_layout(): dashboard_id = request.get_json()['dashboard_id'] layout_id = request.get_json()['layout_id'] data = request.get_json()['data'] master_tile_id_resized = request.get_json().get('master_tile_id_resized') check_access(lambda: auth.access_dashboard(dashboard_id)) new_layout = Layout(dict(data)) new_layout_id = new_layout.set(auth.logged_owner_id(), dashboard_id, layout_id) reload_required = False if new_layout_id and master_tile_id_resized: master_tile = tiles.Tile.select(dashboard_id, master_tile_id_resized) if master_tile: synced_layout_id = tpcreator.synchronize_sizes_of_tpcreated(master_tile, new_layout_id) reload_required = bool(synced_layout_id) return success(result=dict(new_layout_id=new_layout_id, reload_required=reload_required))