From 7df4a606d0cfd77f830bf5460df9878c5ca12363 Mon Sep 17 00:00:00 2001 From: Valentin Deniaud Date: Tue, 9 Nov 2021 17:17:42 +0100 Subject: [PATCH 2/2] maps: duplicate map layer options (#57760) --- combo/apps/maps/models.py | 8 ++++++-- tests/test_maps_cells.py | 6 +++++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/combo/apps/maps/models.py b/combo/apps/maps/models.py index af58c9c0..8f1bd748 100644 --- a/combo/apps/maps/models.py +++ b/combo/apps/maps/models.py @@ -14,6 +14,7 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . +import copy import json import pyproj @@ -520,8 +521,11 @@ class Map(CellBase): def duplicate_m2m(self, new_cell): # set layers - for layer in self.layers.all(): - MapLayerOptions.objects.create(map_cell=new_cell, map_layer=layer) + for options in self.maplayeroptions_set.all(): + new_options = copy.deepcopy(options) + new_options.pk = None + new_options.map_cell = new_cell + new_options.save() class MapLayerOptions(models.Model): diff --git a/tests/test_maps_cells.py b/tests/test_maps_cells.py index 9de8dff6..ba3ca056 100644 --- a/tests/test_maps_cells.py +++ b/tests/test_maps_cells.py @@ -639,7 +639,11 @@ def test_get_geojson_properties(app, layer, user): def test_duplicate(layer): page = Page.objects.create(title='xxx', slug='new', template_name='standard') cell = Map.objects.create(page=page, placeholder='content', order=0, public=True, title='Map') - MapLayerOptions.objects.create(map_cell=cell, map_layer=layer) + MapLayerOptions.objects.create(map_cell=cell, map_layer=layer, opacity=0.5, properties='a, b') new_cell = cell.duplicate() assert list(new_cell.layers.all()) == [layer] + options = new_cell.maplayeroptions_set.get() + assert options.map_layer == layer + assert options.opacity == 0.5 + assert options.properties == 'a, b' -- 2.30.2