From 361237acf7be37703022ce270dffd254053584c8 Mon Sep 17 00:00:00 2001 From: Adam Cox Date: Thu, 12 Mar 2026 07:49:54 -0500 Subject: [PATCH 1/3] save mm updates to layer --- ohmg/core/models.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/ohmg/core/models.py b/ohmg/core/models.py index a9b7e97d..981e307e 100644 --- a/ohmg/core/models.py +++ b/ohmg/core/models.py @@ -1135,7 +1135,13 @@ def update_multimask_from_geojson(self, multimask_geojson): if multimask_geojson["features"]: self.multimask = {} for feature in multimask_geojson["features"]: + layer_slug = feature["properties"]["layer"] self.multimask[feature["properties"]["layer"]] = feature + + ## future patch: save mask directly to layers + layer = Layer.objects.get(slug=layer_slug, region__document__map=self.map) + layer.mask = GEOSGeometry(json.dumps(feature["geometry"])) + layer.save(skip_map_lookup_update=True) else: self.multimask = None self.save(update_fields=["multimask"]) From 4d10a05af772ae330dc4d58f34678f55087faa30 Mon Sep 17 00:00:00 2001 From: Adam Cox Date: Thu, 12 Mar 2026 12:28:20 +0000 Subject: [PATCH 2/3] make oneoff command more flexible --- ohmg/core/management/commands/oneoffs.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/ohmg/core/management/commands/oneoffs.py b/ohmg/core/management/commands/oneoffs.py index b9c77160..93af59f4 100644 --- a/ohmg/core/management/commands/oneoffs.py +++ b/ohmg/core/management/commands/oneoffs.py @@ -420,8 +420,13 @@ def old_ds_to_new(file_set): print(ls) if ls.multimask: for k, v in ls.multimask.items(): - layer = Layer.objects.get(slug=k, region__document__map=ls.map) - print(k, end=", ") - layer.mask = GEOSGeometry(json.dumps(v["geometry"])) - layer.save(skip_map_lookup_update=True) + print(k) + ## there SHOULD only be one layer here, but per ticket + ## #308 some regions got duplicated, and some of the + ## duplicates got georeferenced :(. Can't clean all of + ## that up now, so... using filter here + layers = Layer.objects.filter(slug=k, region__document__map=ls.map) + for layer in layers: + layer.mask = GEOSGeometry(json.dumps(v["geometry"])) + layer.save(skip_map_lookup_update=True) print("") From f0e2bcb00b2c6afac49f159a5ffde8f1644d082b Mon Sep 17 00:00:00 2001 From: Adam Cox Date: Thu, 12 Mar 2026 14:41:33 +0000 Subject: [PATCH 3/3] small improvements to layer update --- ohmg/core/management/commands/oneoffs.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ohmg/core/management/commands/oneoffs.py b/ohmg/core/management/commands/oneoffs.py index 93af59f4..963a4454 100644 --- a/ohmg/core/management/commands/oneoffs.py +++ b/ohmg/core/management/commands/oneoffs.py @@ -416,7 +416,7 @@ def old_ds_to_new(file_set): from ohmg.core.models import Layer, LayerSet - for ls in LayerSet.objects.all(): + for ls in LayerSet.objects.all().order_by("map__title"): print(ls) if ls.multimask: for k, v in ls.multimask.items(): @@ -428,5 +428,5 @@ def old_ds_to_new(file_set): layers = Layer.objects.filter(slug=k, region__document__map=ls.map) for layer in layers: layer.mask = GEOSGeometry(json.dumps(v["geometry"])) - layer.save(skip_map_lookup_update=True) + layer.save(skip_map_lookup_update=True, set_extent=False) print("")