From ecf5fa172f87be92353247f366ac854320a49d37 Mon Sep 17 00:00:00 2001 From: Horilla Date: Fri, 21 Feb 2025 15:10:43 +0530 Subject: [PATCH] [UPDT] HORILLA VIEWS: Added default visible columns feature --- horilla_views/forms.py | 10 +++++---- horilla_views/generic/cbv/views.py | 22 ++++++++++++++----- .../templates/generic/horilla_list_table.html | 2 +- 3 files changed, 24 insertions(+), 10 deletions(-) diff --git a/horilla_views/forms.py b/horilla_views/forms.py index cb1ce2be7..d09eee8de 100644 --- a/horilla_views/forms.py +++ b/horilla_views/forms.py @@ -10,7 +10,7 @@ from django.core.files.storage import default_storage from django.db import transaction from django.template.loader import render_to_string from django.utils.safestring import SafeText -from django.utils.translation import gettext_lazy as _trans +from django.utils.translation import gettext_lazy as _ from horilla.horilla_middlewares import _thread_locals from horilla_views import models @@ -29,7 +29,7 @@ class ToggleColumnForm(forms.Form): Toggle column form """ - def __init__(self, columns, hidden_fields: list, *args, **kwargs): + def __init__(self, columns, default_columns, hidden_fields: list, *args, **kwargs): request = getattr(_thread_locals, "request", {}) self.request = request super().__init__(*args, **kwargs) @@ -37,7 +37,9 @@ class ToggleColumnForm(forms.Form): initial = True if column[1] in hidden_fields: initial = False - + if not hidden_fields: + if column not in default_columns: + initial = False self.fields[column[1]] = forms.BooleanField( label=column[0], initial=initial ) @@ -96,7 +98,7 @@ class DynamicBulkUpdateForm(forms.Form): DynamicBulkUpdateForm """ - verbose_name = _trans("Bulk Update") + verbose_name = _("Bulk Update") def __init__( self, diff --git a/horilla_views/generic/cbv/views.py b/horilla_views/generic/cbv/views.py index c02439bb7..ee2b2d0ec 100644 --- a/horilla_views/generic/cbv/views.py +++ b/horilla_views/generic/cbv/views.py @@ -51,6 +51,7 @@ class HorillaListView(ListView): context_object_name = "queryset" # column = [("Verbose Name","field_name","avatar_mapping")], opt: avatar_mapping columns: list = [] + default_columns: list = [] search_url: str = "" bulk_select_option: bool = True filter_selected: bool = True @@ -97,7 +98,6 @@ class HorillaListView(ListView): records_per_page: int = 50 export_fields: list = [] verbose_name: str = "" - bulk_update_fields: list = [] bulk_template: str = "generic/bulk_form.html" @@ -129,10 +129,22 @@ class HorillaListView(ListView): self.visible_column = self.columns.copy() - self.toggle_form = ToggleColumnForm(self.columns, hidden_fields) - for column in self.columns: - if column[1] in hidden_fields: - self.visible_column.remove(column) + if not existing_instance: + if not self.default_columns: + self.default_columns = self.columns + self.toggle_form = ToggleColumnForm( + self.columns, self.default_columns, hidden_fields + ) + for column in self.columns: + if column not in self.default_columns: + self.visible_column.remove(column) + else: + self.toggle_form = ToggleColumnForm( + self.columns, self.default_columns, hidden_fields + ) + for column in self.columns: + if column[1] in hidden_fields: + self.visible_column.remove(column) def bulk_update_accessibility(self) -> bool: """ diff --git a/horilla_views/templates/generic/horilla_list_table.html b/horilla_views/templates/generic/horilla_list_table.html index 24b33a9bb..b5f743d7e 100644 --- a/horilla_views/templates/generic/horilla_list_table.html +++ b/horilla_views/templates/generic/horilla_list_table.html @@ -153,7 +153,7 @@ /> - {{instance|getattribute:attribute}} + {{instance|getattribute:attribute|safe}} {% endif %}