summaryrefslogtreecommitdiff
path: root/ishtar_common/forms_common.py
diff options
context:
space:
mode:
Diffstat (limited to 'ishtar_common/forms_common.py')
-rw-r--r--ishtar_common/forms_common.py13
1 files changed, 11 insertions, 2 deletions
diff --git a/ishtar_common/forms_common.py b/ishtar_common/forms_common.py
index b6a36ff03..856381d05 100644
--- a/ishtar_common/forms_common.py
+++ b/ishtar_common/forms_common.py
@@ -2649,6 +2649,9 @@ class GISForm(forms.ModelForm, CustomForm, ManageOldType):
main_items_fields = {}
if "main_items_fields" in kwargs:
main_items_fields = kwargs.pop("main_items_fields")
+ self.too_many = {}
+ if "too_many" in kwargs:
+ self.too_many = kwargs.pop("too_many")
self.user = None
self.geom_type = kwargs.pop("geom_type") \
if kwargs.get("geom_type", None) else None
@@ -2743,7 +2746,7 @@ class GISForm(forms.ModelForm, CustomForm, ManageOldType):
# geo keys for an instanced item
geo_keys = []
for keys in self.GEO_FIELDS:
- if any(getattr(instance, key) for key in keys):
+ if any(key for key in keys if getattr(instance, key) is not None):
if keys[0] != "x":
geom = getattr(instance, keys[0])
map_srid = geom.srid or 4326
@@ -2800,13 +2803,19 @@ class GISForm(forms.ModelForm, CustomForm, ManageOldType):
)
def save(self, commit=True):
+ if not getattr(self.instance, "source_content_type", None):
+ self.instance.source_content_type_id = self.source_content_type
+ self.instance.source_id = self.source_id
item = super().save(commit=commit)
for related_key in models.GeoVectorData.RELATED_MODELS:
related = getattr(item, related_key)
initial = dict([(rel.pk, rel) for rel in related.all()])
new = [int(pk) for pk in sorted(self.cleaned_data.get(related_key, []))]
+ full_new = new[:]
+ if related_key in self.too_many:
+ full_new += self.too_many[related_key]
for pk, value in initial.items():
- if pk in new:
+ if pk in full_new:
continue
related.remove(value)
for new_pk in new: