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
netbox/utilities

@ -37,3 +37,22 @@ class EnhancedPage(Page):
page_list.insert(page_list.index(i), False)
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)

@ -2,7 +2,6 @@ import logging
import sys
from copy import deepcopy
from django.conf import settings
from django.contrib import messages
from django.contrib.contenttypes.models import ContentType
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 .error_handlers import handle_protectederror
from .forms import ConfirmationForm, ImportForm
from .paginator import EnhancedPaginator
from .paginator import EnhancedPaginator, get_paginate_count
class GetReturnURLMixin(object):
@ -172,7 +171,7 @@ class ObjectListView(View):
# Apply the request context
paginate = {
'paginator_class': EnhancedPaginator,
'per_page': request.GET.get('per_page', settings.PAGINATE_COUNT)
'per_page': get_paginate_count(request)
}
RequestConfig(request, paginate).configure(table)