Centralizing page size code, reading cookie

Centralizing duplicate code around the default page size.
Additionally, we now read the 'horizon_pagesize' cookie set for
the user in the settings panel to reuse the value across sessions.

Closes-bug: #1251456

Change-Id: I78b6c978926f53a598f89745c517b8083270e5ba
This commit is contained in:
David Lyle 2013-11-14 15:01:24 -07:00
parent efdae3ce35
commit e7a8a20d60
6 changed files with 22 additions and 17 deletions
horizon/utils
openstack_dashboard

@ -52,3 +52,13 @@ def logout_with_message(request, msg):
'%s?next=%s' % (settings.LOGOUT_URL, request.path))
add_logout_reason(request, response, msg)
return response
def get_page_size(request, default=20):
session = request.session
cookies = request.COOKIES
return int(session.get('horizon_pagesize',
cookies.get('horizon_pagesize',
getattr(settings,
'API_RESULT_PAGE_SIZE',
default))))

@ -29,6 +29,8 @@ from django.conf import settings # noqa
import glanceclient as glance_client
from horizon.utils import functions as utils
from openstack_dashboard.api import base
@ -59,9 +61,7 @@ def image_get(request, image_id):
def image_list_detailed(request, marker=None, filters=None, paginate=False):
limit = getattr(settings, 'API_RESULT_LIMIT', 1000)
page_size = request.session.get('horizon_pagesize',
getattr(settings, 'API_RESULT_PAGE_SIZE',
20))
page_size = utils.get_page_size(request)
if paginate:
request_size = page_size + 1

@ -253,9 +253,8 @@ def tenant_delete(request, project):
def tenant_list(request, paginate=False, marker=None, domain=None, user=None):
manager = VERSIONS.get_project_manager(request, admin=True)
page_size = request.session.get('horizon_pagesize',
getattr(settings, 'API_RESULT_PAGE_SIZE',
20))
page_size = utils.get_page_size(request)
limit = None
if paginate:
limit = page_size + 1

@ -35,6 +35,7 @@ from novaclient.v1_1 import security_groups as nova_security_groups
from novaclient.v1_1 import servers as nova_servers
from horizon import conf
from horizon.utils import functions as utils
from horizon.utils.memoized import memoized # noqa
from openstack_dashboard.api import base
@ -493,9 +494,8 @@ def server_get(request, instance_id):
def server_list(request, search_opts=None, all_tenants=False):
page_size = request.session.get('horizon_pagesize',
getattr(settings, 'API_RESULT_PAGE_SIZE',
20))
page_size = utils.get_page_size(request)
paginate = False
if search_opts is None:
search_opts = {}

@ -21,6 +21,7 @@ from troveclient.v1 import client
from openstack_dashboard.api import base
from horizon.utils import functions as utils
LOG = logging.getLogger(__name__)
@ -44,8 +45,7 @@ def troveclient(request):
def instance_list(request, marker=None):
default_page_size = getattr(settings, 'API_RESULT_PAGE_SIZE', 20)
page_size = request.session.get('horizon_pagesize', default_page_size)
page_size = utils.get_page_size(request)
return troveclient(request).instances.list(limit=page_size, marker=marker)

@ -16,6 +16,7 @@
from django.conf import settings # noqa
from horizon import forms
from horizon.utils import functions as utils
from openstack_dashboard.dashboards.settings.user import forms as user_forms
@ -33,12 +34,7 @@ class UserSettingsView(forms.ModalFormView):
'timezone': self.request.session.get(
'django_timezone',
self.request.COOKIES.get('django_timezone', 'UTC')),
'pagesize': self.request.session.get(
'horizon_pagesize',
self.request.COOKIES.get(
'horizon_pagesize',
getattr(settings,
'API_RESULT_PAGE_SIZE', 20)))}
'pagesize': utils.get_page_size(self.request)}
def form_valid(self, form):
return form.handle(self.request, form.cleaned_data)