summaryrefslogtreecommitdiff
path: root/ishtar_common/views.py
diff options
context:
space:
mode:
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
commitecd31c075179d58f58a5601aac7d14e3d1541e48 (patch)
treefe6e7dbda13a8aef85247aba058b3231af890f96 /ishtar_common/views.py
parent68fdbdbaf3de65409d2951e64192fdb24711fc3a (diff)
downloadIshtar-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.py20
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