From c4cdcc17f112bbaa383893c92d7e68ccabcbabc4 Mon Sep 17 00:00:00 2001 From: Horilla Date: Mon, 17 Feb 2025 15:10:26 +0530 Subject: [PATCH] [UPDT] HORILLA VIEWS: Custom empty page configuration --- horilla_views/generic/cbv/views.py | 60 +++++++++++-------- .../templates/generic/horilla_list_table.html | 5 ++ 2 files changed, 41 insertions(+), 24 deletions(-) diff --git a/horilla_views/generic/cbv/views.py b/horilla_views/generic/cbv/views.py index 8439fd571..c02439bb7 100644 --- a/horilla_views/generic/cbv/views.py +++ b/horilla_views/generic/cbv/views.py @@ -23,13 +23,12 @@ from horilla.filters import FilterSet from horilla.group_by import group_by_queryset from horilla.horilla_middlewares import _thread_locals from horilla_views import models -from horilla_views.cbv_methods import ( +from horilla_views.cbv_methods import ( # update_initial_cache, get_short_uuid, hx_request_required, paginator_qry, sortby, structured, - update_initial_cache, update_saved_filter_cache, ) from horilla_views.forms import DynamicBulkUpdateForm, ToggleColumnForm @@ -54,6 +53,11 @@ class HorillaListView(ListView): columns: list = [] search_url: str = "" bulk_select_option: bool = True + filter_selected: bool = True + quick_export: bool = True + bulk_update: bool = True + + custom_empty_template: str = "" action_method: str = """""" """ @@ -112,7 +116,7 @@ class HorillaListView(ListView): request = getattr(_thread_locals, "request", None) self.request = request - update_initial_cache(request, CACHE, HorillaListView) + # # update_initial_cache(request, CACHE, HorillaListView) # hidden columns configuration existing_instance = models.ToggleColumn.objects.filter( @@ -203,9 +207,9 @@ class HorillaListView(ListView): root_model=self.model, bulk_update_fields=self.bulk_update_fields ) - def get_queryset(self): + def get_queryset(self, queryset=None, filtered=False, *args, **kwargs): if not self.queryset: - self.queryset = super().get_queryset() + self.queryset = super().get_queryset() if not queryset else queryset self._saved_filters = QueryDict("", mutable=True) if self.filter_class: query_dict = self.request.GET @@ -252,10 +256,12 @@ class HorillaListView(ListView): query_dict._mutable = False self._saved_filters = query_dict self.request.exclude_filter_form = True - self.queryset = self.filter_class( - data=query_dict, queryset=self.queryset, request=self.request - ).qs - + if not filtered: + self.queryset = self.filter_class( + data=query_dict, queryset=self.queryset, request=self.request + ).qs + else: + self.queryset = queryset if self.request.GET.get( "show_all" ) == "true" and self.request.session.get("hlv_selected_ids"): @@ -295,10 +301,14 @@ class HorillaListView(ListView): context["selected_instances_key_id"] = self.selected_instances_key_id context["row_status_indications"] = self.row_status_indications context["saved_filters"] = self._saved_filters + context["quick_export"] = self.quick_export + context["filter_selected"] = self.filter_selected + context["bulk_update"] = self.bulk_update if not self.verbose_name: self.verbose_name = self.model.__class__ context["model_name"] = self.verbose_name context["export_fields"] = self.export_fields + context["custom_empty_template"] = self.custom_empty_template referrer = self.request.GET.get("referrer", "") if referrer: # Remove the protocol and domain part @@ -388,7 +398,7 @@ class HorillaListView(ListView): # instance.ordered_ids = ordered_ids # ordered_ids.append(instance.pk) - CACHE.get(self.request.session.session_key + "cbv")[HorillaListView] = context + # CACHE.get(self.request.session.session_key + "cbv")[HorillaListView] = context from horilla.urls import path, urlpatterns self.export_path = f"export-list-view-{get_short_uuid(4)}/" @@ -506,7 +516,7 @@ class HorillaSectionView(TemplateView): super().__init__(**kwargs) request = getattr(_thread_locals, "request", None) self.request = request - update_initial_cache(request, CACHE, HorillaListView) + # update_initial_cache(request, CACHE, HorillaListView) nav_url: str = "" view_url: str = "" @@ -554,7 +564,7 @@ class HorillaDetailedView(DetailView): super().__init__(**kwargs) request = getattr(_thread_locals, "request", None) self.request = request - update_initial_cache(request, CACHE, HorillaDetailedView) + # update_initial_cache(request, CACHE, HorillaDetailedView) def get_context_data(self, **kwargs: Any): context = super().get_context_data(**kwargs) @@ -590,9 +600,9 @@ class HorillaDetailedView(DetailView): context["action_method"] = self.action_method context["cols"] = self.cols - CACHE.get(self.request.session.session_key + "cbv")[ - HorillaDetailedView - ] = context + # CACHE.get(self.request.session.session_key + "cbv")[ + # HorillaDetailedView + # ] = context return context @@ -612,7 +622,7 @@ class HorillaTabView(TemplateView): super().__init__(**kwargs) request = getattr(_thread_locals, "request", None) self.request = request - update_initial_cache(request, CACHE, HorillaTabView) + # update_initial_cache(request, CACHE, HorillaTabView) def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) @@ -625,7 +635,7 @@ class HorillaTabView(TemplateView): context["tabs"] = self.tabs context["view_id"] = self.view_id - CACHE.get(self.request.session.session_key + "cbv")[HorillaTabView] = context + # CACHE.get(self.request.session.session_key + "cbv")[HorillaTabView] = context return context @@ -678,7 +688,7 @@ class HorillaCardView(ListView): super().__init__(**kwargs) request = getattr(_thread_locals, "request", None) self.request = request - update_initial_cache(request, CACHE, HorillaCardView) + # update_initial_cache(request, CACHE, HorillaCardView) self._saved_filters = QueryDict() def get_queryset(self): @@ -755,7 +765,7 @@ class HorillaCardView(ListView): 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 + # CACHE.get(self.request.session.session_key + "cbv")[HorillaCardView] = context referrer = self.request.GET.get("referrer", "") if referrer: # Remove the protocol and domain part @@ -871,7 +881,7 @@ class HorillaFormView(FormView): self.request = request if not self.success_url: self.success_url = self.request.path - update_initial_cache(request, CACHE, HorillaFormView) + # update_initial_cache(request, CACHE, HorillaFormView) if self.form_class: setattr(self.form_class, "structured", structured) @@ -1063,7 +1073,7 @@ class HorillaFormView(FormView): self.form_class.verbose_name = self.new_display_title form.close_button_attrs = self.close_button_attrs form.submit_button_attrs = self.submit_button_attrs - CACHE.get(self.request.session.session_key + "cbv")[HorillaFormView] = form + # CACHE.get(self.request.session.session_key + "cbv")[HorillaFormView] = form self.form = form return self.form @@ -1092,12 +1102,13 @@ class HorillaNavView(TemplateView): empty_inputs: list = [] view_types: list = [] create_attrs: str = """""" + apply_first_filter = True def __init__(self, **kwargs: Any) -> None: super().__init__(**kwargs) request = getattr(_thread_locals, "request", None) self.request = request - update_initial_cache(request, CACHE, HorillaNavView) + # update_initial_cache(request, CACHE, HorillaNavView) def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) @@ -1111,6 +1122,7 @@ class HorillaNavView(TemplateView): context["view_types"] = self.view_types context["create_attrs"] = self.create_attrs context["search_in"] = self.search_in + context["apply_first_filter"] = self.apply_first_filter context["filter_instance_context_name"] = self.filter_instance last_filter = CACHE.get( self.request.session.session_key @@ -1125,7 +1137,7 @@ class HorillaNavView(TemplateView): context["active_view"] = models.ActiveView.objects.filter( path=self.request.path ).first() - CACHE.get(self.request.session.session_key + "cbv")[HorillaNavView] = context + # CACHE.get(self.request.session.session_key + "cbv")[HorillaNavView] = context return context @@ -1157,7 +1169,7 @@ class HorillaProfileView(DetailView): request = getattr(_thread_locals, "request", None) self.request = request - update_initial_cache(request, CACHE, HorillaProfileView) + # update_initial_cache(request, CACHE, HorillaProfileView) from horilla.urls import path, urlpatterns diff --git a/horilla_views/templates/generic/horilla_list_table.html b/horilla_views/templates/generic/horilla_list_table.html index 72f3260b7..24b33a9bb 100644 --- a/horilla_views/templates/generic/horilla_list_table.html +++ b/horilla_views/templates/generic/horilla_list_table.html @@ -353,6 +353,7 @@ {% endfor %} {% endif %} + {% if not custom_empty_template %}
Page not found. 404. @@ -362,6 +363,10 @@

+ {% else %} + {% include custom_empty_template %} + {% endif %} + {% endif %}