def copy(self): """ Returns a copy of this resource instance including a copy of all tiles associated with this resource instance """ # need this here to prevent a circular import error from arches.app.models.tile import Tile id_map = {} new_resource = Resource() new_resource.graph = self.graph if len(self.tiles) == 0: self.tiles = Tile.objects.filter(resourceinstance=self) for tile in self.tiles: new_tile = Tile() new_tile.data = tile.data new_tile.nodegroup = tile.nodegroup new_tile.parenttile = tile.parenttile new_tile.resourceinstance = new_resource new_tile.sortorder = tile.sortorder new_resource.tiles.append(new_tile) id_map[tile.pk] = new_tile for tile in new_resource.tiles: if tile.parenttile: tile.parenttile = id_map[tile.parenttile_id] with transaction.atomic(): new_resource.save() return new_resource
def copy(self): """ Returns a copy of this resource instance includeing a copy of all tiles associated with this resource instance """ # need this here to prevent a circular import error from arches.app.models.tile import Tile id_map = {} new_resource = Resource() new_resource.graph = self.graph if len(self.tiles) == 0: self.tiles = Tile.objects.filter(resourceinstance=self) for tile in self.tiles: new_tile = Tile() new_tile.data = tile.data new_tile.nodegroup = tile.nodegroup new_tile.parenttile = tile.parenttile new_tile.resourceinstance = new_resource new_tile.sortorder = tile.sortorder new_resource.tiles.append(new_tile) id_map[tile.pk] = new_tile for tile in new_resource.tiles: if tile.parenttile: tile.parenttile = id_map[tile.parenttile_id] with transaction.atomic(): new_resource.save() return new_resource