summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2022-05-31 16:10:33 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2022-12-12 12:21:00 +0100
commit6dc16ea82a21a9fd15a9691b10c09a8db48c5592 (patch)
treec1c350fe91b8ef7c9fb5536b57d523cb04d8cffe
parentdf8a001203e9e936ae5bae4e06f5631d87fb3ada (diff)
downloadIshtar-6dc16ea82a21a9fd15a9691b10c09a8db48c5592.tar.bz2
Ishtar-6dc16ea82a21a9fd15a9691b10c09a8db48c5592.zip
Geodata - geo forms: manage main item
-rw-r--r--ishtar_common/forms_common.py5
-rw-r--r--ishtar_common/views.py11
2 files changed, 16 insertions, 0 deletions
diff --git a/ishtar_common/forms_common.py b/ishtar_common/forms_common.py
index 695638120..ed97cbab1 100644
--- a/ishtar_common/forms_common.py
+++ b/ishtar_common/forms_common.py
@@ -2755,6 +2755,11 @@ class GISForm(forms.ModelForm, CustomForm, ManageOldType):
related_item = related.model.objects.get(pk=new_pk)
if new_pk not in initial.keys():
related.add(related_item)
+ key = "{}_{}_main_item".format(related_key, related_item.pk)
+ if self.cleaned_data.get(key, []) and related_item.main_geodata != item:
+ related_item.skip_history_when_saving = True
+ related_item.main_geodata = item
+ related_item.save()
item = models.GeoVectorData.objects.get(pk=item.pk)
if self.user:
item.history_creator = self.user
diff --git a/ishtar_common/views.py b/ishtar_common/views.py
index 361c32022..f79ad25ee 100644
--- a/ishtar_common/views.py
+++ b/ishtar_common/views.py
@@ -2763,6 +2763,17 @@ class GeoEditView(GeoFormMixin, UpdateView):
value = value.pk
initial[k] = value
+ kwargs["main_items_fields"] = {}
+ for k in models.GeoVectorData.RELATED_MODELS:
+ kwargs["main_items_fields"][k] = []
+ for related_item in getattr(geo, k).all():
+ key = "{}_{}_main_item".format(k, related_item.pk)
+ kwargs["main_items_fields"][k].append(
+ (key, "{} - {}".format(_("Main geo item for"), related_item))
+ )
+ if related_item.main_geodata == geo:
+ initial[key] = True
+
kwargs["initial"] = initial
kwargs["user"] = self.request.user
self.geo = geo