diff options
Diffstat (limited to 'ishtar_common/forms_common.py')
| -rw-r--r-- | ishtar_common/forms_common.py | 13 | 
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: | 
