diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2022-06-08 12:10:44 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2022-12-12 12:21:01 +0100 |
commit | ecd31c075179d58f58a5601aac7d14e3d1541e48 (patch) | |
tree | fe6e7dbda13a8aef85247aba058b3231af890f96 /ishtar_common/views.py | |
parent | 68fdbdbaf3de65409d2951e64192fdb24711fc3a (diff) | |
download | Ishtar-ecd31c075179d58f58a5601aac7d14e3d1541e48.tar.bz2 Ishtar-ecd31c075179d58f58a5601aac7d14e3d1541e48.zip |
Geodata - geoforms: manage large number of related items - fix zoom - better + button
Diffstat (limited to 'ishtar_common/views.py')
-rw-r--r-- | ishtar_common/views.py | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/ishtar_common/views.py b/ishtar_common/views.py index 9d5256df5..d019da8ba 100644 --- a/ishtar_common/views.py +++ b/ishtar_common/views.py @@ -2733,7 +2733,7 @@ class GeoPreCreateView(IshtarMixin, LoginRequiredMixin, FormView): class GeoFormMixin(IshtarMixin, LoginRequiredMixin): form_class = forms.GISForm - template_name = "ishtar/forms/base_related_items.html" + template_name = "ishtar/forms/geo_form.html" model = models.GeoVectorData def _get_source(self, request): @@ -2776,22 +2776,32 @@ class GeoEditView(GeoFormMixin, UpdateView): ): value = getattr(geo, k) if hasattr(value, "all"): - value = ",".join([str(v.pk) for v in value.all()]) + value = ",".join([str(v.pk) for v in value.all().order_by("pk")]) if hasattr(value, "pk"): value = value.pk initial[k] = value kwargs["main_items_fields"] = {} + kwargs["too_many"] = {} + LIMIT = 10 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) + values = [] + for idx, related_item in enumerate(getattr(geo, k).all()): + if idx >= LIMIT: + if k not in kwargs["too_many"]: + kwargs["too_many"][k] = [] + kwargs["too_many"][k].append(related_item.pk) + continue + pk = str(related_item.pk) + values.append(pk) + key = "{}_{}_main_item".format(k, pk) kwargs["main_items_fields"][k].append( (key, "{} - {}".format(_("Main geo item for"), related_item)) ) if related_item.main_geodata == geo: initial[key] = True - + initial[k] = ",".join(values) kwargs["initial"] = initial kwargs["user"] = self.request.user return kwargs |