1
0
mirror of https://github.com/netbox-community/netbox.git synced 2024-05-10 07:54:54 +00:00

Remember user's per_page preference (POC for UserConfig)

This commit is contained in:
Jeremy Stretch
2020-04-23 16:48:13 -04:00
parent f3012ed839
commit 30c3d6ee40
2 changed files with 21 additions and 3 deletions

View File

@ -37,3 +37,22 @@ class EnhancedPage(Page):
page_list.insert(page_list.index(i), False) page_list.insert(page_list.index(i), False)
return page_list return page_list
def get_paginate_count(request):
"""
Determine the length of a page, using the following in order:
1. per_page URL query parameter
2. Saved user preference
3. PAGINATE_COUNT global setting.
"""
if 'per_page' in request.GET:
try:
per_page = int(request.GET.get('per_page'))
request.user.config.set('paginate_count', per_page, commit=True)
return per_page
except ValueError:
pass
return request.user.config.get('paginate_count', settings.PAGINATE_COUNT)

View File

@ -2,7 +2,6 @@ import logging
import sys import sys
from copy import deepcopy from copy import deepcopy
from django.conf import settings
from django.contrib import messages from django.contrib import messages
from django.contrib.contenttypes.models import ContentType from django.contrib.contenttypes.models import ContentType
from django.core.exceptions import FieldDoesNotExist, ValidationError from django.core.exceptions import FieldDoesNotExist, ValidationError
@ -29,7 +28,7 @@ from utilities.forms import BootstrapMixin, CSVDataField
from utilities.utils import csv_format, prepare_cloned_fields from utilities.utils import csv_format, prepare_cloned_fields
from .error_handlers import handle_protectederror from .error_handlers import handle_protectederror
from .forms import ConfirmationForm, ImportForm from .forms import ConfirmationForm, ImportForm
from .paginator import EnhancedPaginator from .paginator import EnhancedPaginator, get_paginate_count
class GetReturnURLMixin(object): class GetReturnURLMixin(object):
@ -172,7 +171,7 @@ class ObjectListView(View):
# Apply the request context # Apply the request context
paginate = { paginate = {
'paginator_class': EnhancedPaginator, 'paginator_class': EnhancedPaginator,
'per_page': request.GET.get('per_page', settings.PAGINATE_COUNT) 'per_page': get_paginate_count(request)
} }
RequestConfig(request, paginate).configure(table) RequestConfig(request, paginate).configure(table)