add column visibility feature to router list, allowing customization and persistence via cookies.

This commit is contained in:
Eduardo Silva 2025-06-17 14:53:07 -03:00
parent 010f911222
commit 5a7f9f7bf2
3 changed files with 277 additions and 40 deletions

View file

@ -13,7 +13,8 @@ from user_manager.models import UserAcl
from .forms import RouterForm, RouterGroupForm, SSHKeyForm
from .models import Router, RouterGroup, RouterInformation, RouterStatus, SSHKey, BackupSchedule
from django.conf import settings
import json
from urllib.parse import unquote
@login_required
def view_router_list(request):
@ -41,12 +42,25 @@ def view_router_list(request):
if not filter_group and request.GET.get('filter_group') != 'all':
filter_group = RouterGroup.objects.filter(default_group=True).first()
# Parse the router_visible_columns cookie
visible_columns = []
if 'router_visible_columns' in request.COOKIES:
try:
visible_columns = json.loads(unquote(request.COOKIES['router_visible_columns']))
except json.JSONDecodeError:
# If the cookie is invalid, use default columns
visible_columns = ["name", "type", "status", "backup", "groups"]
else:
# Default columns if cookie doesn't exist
visible_columns = ["name", "type", "status", "backup", "groups"]
context = {
'router_list': router_list,
'page_title': 'Router List',
'filter_group_list': RouterGroup.objects.all().order_by('name'),
'filter_group': filter_group,
'last_status_change_timestamp': last_status_change_timestamp,
'visible_columns': visible_columns,
}
return render(request, 'router_manager/router_list.html', context=context)