[FIX] HORILLA VIEWS: Updated ordered id logic to prevent URI too long issue
This commit is contained in:
@@ -324,13 +324,12 @@ class HorillaListView(ListView):
|
||||
query_dict, queryset, self.sortby_key, is_first_sort=is_first_sort
|
||||
)
|
||||
|
||||
ordered_ids = [instance.id for instance in queryset]
|
||||
ordered_ids = []
|
||||
if not self._saved_filters.get("field"):
|
||||
for instance in queryset:
|
||||
instance.ordered_ids = ordered_ids
|
||||
ordered_ids.append(instance.pk)
|
||||
|
||||
self.request.session[f"ordered_ids_{self.model.__name__.lower()}"] = ordered_ids
|
||||
context["queryset"] = paginator_qry(
|
||||
queryset, self._saved_filters.get("page"), self.records_per_page
|
||||
)
|
||||
@@ -349,10 +348,11 @@ class HorillaListView(ListView):
|
||||
groups, self._saved_filters.get("page"), 10
|
||||
)
|
||||
|
||||
for group in context["groups"]:
|
||||
for instance in group["list"]:
|
||||
instance.ordered_ids = ordered_ids
|
||||
ordered_ids.append(instance.pk)
|
||||
# for group in context["groups"]:
|
||||
# for instance in group["list"]:
|
||||
# instance.ordered_ids = ordered_ids
|
||||
# ordered_ids.append(instance.pk)
|
||||
|
||||
CACHE.get(self.request.session.session_key + "cbv")[HorillaListView] = context
|
||||
from horilla.urls import path, urlpatterns
|
||||
|
||||
@@ -523,11 +523,13 @@ class HorillaDetailedView(DetailView):
|
||||
|
||||
def get_context_data(self, **kwargs: Any):
|
||||
context = super().get_context_data(**kwargs)
|
||||
instance_ids = eval_validate(str(self.request.GET.get(self.ids_key)))
|
||||
instance_ids = self.request.session.get(
|
||||
f"ordered_ids_{self.model.__name__.lower()}", []
|
||||
)
|
||||
|
||||
pk = context["object"].pk
|
||||
if instance_ids:
|
||||
context["object"].ordered_ids = instance_ids
|
||||
# if instance_ids:
|
||||
# context["object"].ordered_ids = instance_ids
|
||||
context["instance"] = context["object"]
|
||||
|
||||
url = resolve(self.request.path)
|
||||
@@ -712,10 +714,11 @@ class HorillaCardView(ListView):
|
||||
context["filter_dict"] = data_dict
|
||||
|
||||
ordered_ids = list(queryset.values_list("id", flat=True))
|
||||
ordered_ids = []
|
||||
if not self._saved_filters.get("field"):
|
||||
for instance in queryset:
|
||||
instance.ordered_ids = ordered_ids
|
||||
ordered_ids.append(instance.pk)
|
||||
self.request.session[f"ordered_ids_{self.model.__name__.lower()}"] = ordered_ids
|
||||
|
||||
CACHE.get(self.request.session.session_key + "cbv")[HorillaCardView] = context
|
||||
referrer = self.request.GET.get("referrer", "")
|
||||
@@ -879,7 +882,9 @@ class HorillaFormView(FormView):
|
||||
pk = self.form.instance.pk
|
||||
# next/previous option in the forms
|
||||
if pk and self.request.GET.get(self.ids_key):
|
||||
instance_ids = eval_validate(str(self.request.GET.get(self.ids_key)))
|
||||
instance_ids = self.request.session.get(
|
||||
f"ordered_ids_{self.model.__name__.lower()}", []
|
||||
)
|
||||
url = resolve(self.request.path)
|
||||
key = list(url.kwargs.keys())[0]
|
||||
url_name = url.url_name
|
||||
@@ -1190,10 +1195,11 @@ class HorillaProfileView(DetailView):
|
||||
).first()
|
||||
if active_tab:
|
||||
context["active_target"] = active_tab.tab_target
|
||||
instance_ids_str = self.request.GET.get("instance_ids")
|
||||
if not instance_ids_str:
|
||||
instance_ids_str = "[]"
|
||||
instance_ids = eval_validate(instance_ids_str)
|
||||
|
||||
instance_ids = self.request.session.get(
|
||||
f"ordered_ids_{self.model.__name__.lower()}", []
|
||||
)
|
||||
|
||||
if instance_ids:
|
||||
CACHE.set(
|
||||
f"{self.request.session.session_key}hpv-instance-ids", instance_ids
|
||||
|
||||
@@ -14,6 +14,7 @@ from django.views import View
|
||||
from django.views.decorators.csrf import csrf_protect
|
||||
|
||||
from base.methods import eval_validate
|
||||
from horilla.signals import post_generic_delete, pre_generic_delete
|
||||
from horilla_views import models
|
||||
from horilla_views.cbv_methods import get_short_uuid, login_required, merge_dicts
|
||||
from horilla_views.forms import SavedFilterForm
|
||||
@@ -554,7 +555,21 @@ class HorillaDeleteConfirmationView(View):
|
||||
if self.request.user.has_perm(
|
||||
f"{instance._meta.app_label}.delete_{instance._meta.model.__name__.lower()}"
|
||||
):
|
||||
pre_generic_delete.send(
|
||||
sender=instance._meta.model,
|
||||
instance=instance,
|
||||
args=args,
|
||||
view_instance=self,
|
||||
kwargs=kwargs,
|
||||
)
|
||||
instance.delete()
|
||||
post_generic_delete.send(
|
||||
sender=instance._meta.model,
|
||||
instance=instance,
|
||||
args=args,
|
||||
view_instance=self,
|
||||
kwargs=kwargs,
|
||||
)
|
||||
messages.success(self.request, f"Deleted {instance}")
|
||||
else:
|
||||
messages.info(
|
||||
|
||||
Reference in New Issue
Block a user