From 98868815b2d578e90f5092516bb26a927775dbbc Mon Sep 17 00:00:00 2001 From: Horilla Date: Wed, 12 Mar 2025 10:45:52 +0530 Subject: [PATCH] [UPDT] HORILLA VIEWS: Error handling method --- horilla_views/generic/cbv/views.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/horilla_views/generic/cbv/views.py b/horilla_views/generic/cbv/views.py index 5f4436e10..424eb3f05 100644 --- a/horilla_views/generic/cbv/views.py +++ b/horilla_views/generic/cbv/views.py @@ -3,6 +3,7 @@ horilla/generic/views.py """ import json +import logging from typing import Any from urllib.parse import parse_qs @@ -34,6 +35,8 @@ from horilla_views.cbv_methods import ( # update_initial_cache, from horilla_views.forms import DynamicBulkUpdateForm, ToggleColumnForm from horilla_views.templatetags.generic_template_filters import getattribute +logger = logging.getLogger(__name__) + @method_decorator(hx_request_required, name="dispatch") class HorillaListView(ListView): @@ -570,9 +573,27 @@ class HorillaDetailedView(DetailView): action_method: list = [] actions: list = [] cols: dict = {} + instance = None + empty_template = None ids_key: str = "instance_ids" + def get_object(self, queryset=None): + try: + self.instance = super().get_object(queryset) + except Exception as e: + logger.error(f"Error getting object: {e}") + return self.instance + + def get(self, request, *args, **kwargs): + response = super().get(request, *args, **kwargs) + if not self.instance and self.empty_template: + return render(request, self.empty_template, context=self.get_context_data()) + elif not self.instance: + messages.info(request, "No record found...") + return HttpResponse("") + return response + def __init__(self, **kwargs: Any) -> None: super().__init__(**kwargs) request = getattr(_thread_locals, "request", None) @@ -584,6 +605,8 @@ class HorillaDetailedView(DetailView): instance_ids = self.request.session.get( f"ordered_ids_{self.model.__name__.lower()}", [] ) + if not context.get("object", False): + return context pk = context["object"].pk # if instance_ids: