Fix [ui] Actions screen pagination supports only descending order
* fix action pagination order - added reverse flag, same mechanism in horizon glance code. Change-Id: Ibe7c2c5196c330c49dce42347c38721c176c17ab Closes-Bug: #1546021
This commit is contained in:
parent
22818f5a83
commit
ba78e5d2f6
|
@ -83,7 +83,8 @@ class IndexView(tables.DataTableView):
|
|||
marker=marker,
|
||||
sort_keys='name',
|
||||
sort_dirs=sort_dir,
|
||||
paginate=True
|
||||
paginate=True,
|
||||
reversed_order=True
|
||||
)
|
||||
|
||||
if prev_marker is not None:
|
||||
|
@ -92,7 +93,7 @@ class IndexView(tables.DataTableView):
|
|||
key=lambda action: getattr(
|
||||
action, 'name'
|
||||
),
|
||||
reverse=True
|
||||
reverse=False
|
||||
)
|
||||
|
||||
except Exception as e:
|
||||
|
|
|
@ -47,8 +47,8 @@ def mistralclient(request):
|
|||
|
||||
|
||||
@handle_errors(_("Unable to retrieve list"), [])
|
||||
def pagination_list(entity, request, marker='', sort_keys='',
|
||||
sort_dirs='asc', paginate=False):
|
||||
def pagination_list(entity, request, marker='', sort_keys='', sort_dirs='asc',
|
||||
paginate=False, reversed_order=False):
|
||||
"""Retrieve a listing of specific entity and handles pagination.
|
||||
|
||||
:param entity: Requested entity (String)
|
||||
|
@ -58,6 +58,7 @@ def pagination_list(entity, request, marker='', sort_keys='',
|
|||
:param sort_dirs: Sorting Directions (asc/desc). Default:asc
|
||||
:param paginate: If true will perform pagination based on settings.
|
||||
Default:False
|
||||
:param reversed_order: flag to reverse list. Default:False
|
||||
"""
|
||||
|
||||
limit = getattr(settings, 'API_RESULT_LIMIT', 1000)
|
||||
|
@ -68,6 +69,9 @@ def pagination_list(entity, request, marker='', sort_keys='',
|
|||
else:
|
||||
request_size = limit
|
||||
|
||||
if reversed_order:
|
||||
sort_dirs = 'desc' if sort_dirs == 'asc' else 'asc'
|
||||
|
||||
api = mistralclient(request)
|
||||
entities_iter = getattr(api, entity).list(
|
||||
marker, limit, sort_keys, sort_dirs
|
||||
|
@ -85,11 +89,19 @@ def pagination_list(entity, request, marker='', sort_keys='',
|
|||
if marker is not None:
|
||||
has_prev_data = True
|
||||
# first page condition when reached via prev back
|
||||
elif sort_dirs == 'asc' and marker is not None:
|
||||
elif reversed_order and marker is not None:
|
||||
has_more_data = True
|
||||
# last page condition
|
||||
elif marker is not None:
|
||||
has_prev_data = True
|
||||
|
||||
# restore the original ordering here
|
||||
if reversed_order:
|
||||
entities = sorted(entities,
|
||||
key=lambda ent:
|
||||
(getattr(ent, sort_keys) or '').lower(),
|
||||
reverse=(sort_dirs == 'desc')
|
||||
)
|
||||
else:
|
||||
entities = list(entities_iter)
|
||||
|
||||
|
|
Loading…
Reference in New Issue