def get_data(self): sort_dir = self.request.GET.get('sort_dir', 'asc') opts = { 'include_disabled': True, 'sort_dir': sort_dir, } marker = self.request.GET.get( tables.PackageDefinitionsTable._meta.pagination_param, None) opts = self.get_filters(opts) packages = [] page_size = utils.get_page_size(self.request) with api.handled_exceptions(self.request): packages, extra = pkg_api.package_list( self.request, marker=marker, filters=opts, paginate=True, page_size=page_size) if sort_dir == 'asc': self._more = extra else: packages = list(reversed(packages)) self._prev = extra if packages: if sort_dir == 'asc': backward_marker = packages[0].id opts['sort_dir'] = 'desc' else: backward_marker = packages[-1].id opts['sort_dir'] = 'asc' __, extra = pkg_api.package_list( self.request, filters=opts, paginate=True, marker=backward_marker, page_size=0) if sort_dir == 'asc': self._prev = extra else: self._more = extra # Add information about project tenant for admin user if self.request.user.is_superuser: tenants = [] try: tenants, _more = keystone.tenant_list(self.request) except Exception: exceptions.handle(self.request, _("Unable to retrieve project list.")) tenent_name_by_id = {tenant.id: tenant.name for tenant in tenants} for i, p in enumerate(packages): packages[i].tenant_name = tenent_name_by_id.get(p.owner_id) else: current_tenant = self.request.session['token'].tenant for i, package in enumerate(packages): if package.owner_id == current_tenant['id']: packages[i].tenant_name = current_tenant['name'] else: packages[i].tenant_name = _('UNKNOWN') return packages
def get_apps_list(self): packages = [] with api_utils.handled_exceptions(self.request): packages, self._more = pkg_api.package_list( self.request, filters={'type': 'Application', 'catalog': True}) return json.dumps([package.to_dict() for package in packages])
def test_package_list_with_filters(self): package_list, more = packages.package_list(self.mock_request, marker='test_marker', sort_dir='test_sort_dir') self.assertEqual(self.packages, package_list) self.assertFalse(more) self.mock_client.packages.filter.assert_called_once_with( limit=100, marker='test_marker', sort_dir='test_sort_dir')
def has_next_page(self): if self.request.GET.get('sort_dir', 'asc') == 'asc': return self._more else: query_params = self.get_query_params(internal_query=True) packages, more = pkg_api.package_list( self.request, filters=query_params, paginate=True, marker=self.get_marker(), page_size=1) return len(packages) > 0
def get_data(self): sort_dir = self.request.GET.get('sort_dir', 'asc') opts = { 'include_disabled': True, 'sort_dir': sort_dir, } marker = self.request.GET.get( tables.PackageDefinitionsTable._meta.pagination_param, None) packages = [] page_size = utils.get_page_size(self.request) with api.handled_exceptions(self.request): packages, extra = pkg_api.package_list(self.request, marker=marker, filters=opts, paginate=True, page_size=page_size) if sort_dir == 'asc': self._more = extra else: packages = list(reversed(packages)) self._prev = extra if packages: if sort_dir == 'asc': backward_marker = packages[0].id opts['sort_dir'] = 'desc' else: backward_marker = packages[-1].id opts['sort_dir'] = 'asc' __, extra = pkg_api.package_list(self.request, filters=opts, paginate=True, marker=backward_marker, page_size=0) if sort_dir == 'asc': self._prev = extra else: self._more = extra return packages
def test_package_list_with_paginate(self): package_list, more = packages.package_list(self.mock_request, paginate=True, page_size=1) # Only one package should be returned. self.assertEqual(self.packages[:1], package_list) self.assertTrue(more) self.mock_client.packages.filter.assert_called_once_with(limit=2) self.mock_client.packages.filter.reset_mock() package_list, more = packages.package_list(self.mock_request, paginate=True, page_size=2) # Only two packages should be returned. self.assertEqual(self.packages[:2], package_list) self.assertTrue(more) self.mock_client.packages.filter.assert_called_once_with(limit=3)
def get_data(self): sort_dir = self.request.GET.get('sort_dir', 'asc') opts = { 'include_disabled': True, 'owned': True, 'sort_dir': sort_dir, } marker = self.request.GET.get( tables.PackageDefinitionsTable._meta.pagination_param, None) packages = [] page_size = utils.get_page_size(self.request) with api.handled_exceptions(self.request): packages, extra = pkg_api.package_list( self.request, marker=marker, filters=opts, paginate=True, page_size=page_size) if sort_dir == 'asc': self._more = extra else: packages = list(reversed(packages)) self._prev = extra if packages: if sort_dir == 'asc': backward_marker = packages[0].id opts['sort_dir'] = 'desc' else: backward_marker = packages[-1].id opts['sort_dir'] = 'asc' # Check if there are extra packages in backwards direction __, extra = pkg_api.package_list( self.request, filters=opts, paginate=True, marker=backward_marker, page_size=0) if sort_dir == 'asc': self._prev = extra else: self._more = extra return packages
def has_next_page(self): if self.request.GET.get('sort_dir', 'asc') == 'asc': return self._more else: query_params = self.get_query_params(internal_query=True) query_params['sort_dir'] = 'asc' query_params['catalog'] = True packages, more = pkg_api.package_list( self.request, filters=query_params, paginate=True, marker=self.get_marker(), page_size=1) return len(packages) > 0
def get_apps_list(self): packages = [] with api_utils.handled_exceptions(self.request): packages, self._more = pkg_api.package_list( self.request, filters={'type': 'Cloud', 'catalog': True}) items = [] for package in packages: item = package.to_dict() item['name'] = ugettext(item['name']) items.append(item) return json.dumps(items)
def get_queryset(self): query_params = self.get_query_params(internal_query=True) marker = self.request.GET.get('marker') sort_dir = self.request.GET.get('sort_dir') packages = [] with api.handled_exceptions(self.request): packages, self._more = pkg_api.package_list( self.request, filters=query_params, paginate=True, marker=marker, page_size=self.paginate_by, sort_dir=sort_dir) if sort_dir == 'desc': packages.reverse() return packages
def get_data(self): sort_dir = self.request.GET.get("sort_dir", "asc") opts = {"include_disabled": True, "sort_dir": sort_dir} marker = self.request.GET.get(tables.PackageDefinitionsTable._meta.pagination_param, None) packages = [] page_size = utils.get_page_size(self.request) with api.handled_exceptions(self.request): packages, extra = pkg_api.package_list( self.request, marker=marker, filters=opts, paginate=True, page_size=page_size ) if sort_dir == "asc": self._more = extra else: packages = list(reversed(packages)) self._prev = extra if packages: if sort_dir == "asc": backward_marker = packages[0].id opts["sort_dir"] = "desc" else: backward_marker = packages[-1].id opts["sort_dir"] = "asc" __, extra = pkg_api.package_list( self.request, filters=opts, paginate=True, marker=backward_marker, page_size=0 ) if sort_dir == "asc": self._prev = extra else: self._more = extra return packages
def get_queryset(self): query_params = self.get_query_params(internal_query=True) marker = self.request.GET.get('marker') sort_dir = query_params['sort_dir'] packages = [] with api.handled_exceptions(self.request): query_params['catalog'] = True packages, self._more = pkg_api.package_list( self.request, filters=query_params, paginate=True, marker=marker, page_size=self.paginate_by, sort_dir=sort_dir, limit=self.paginate_by) if sort_dir == 'desc': packages = list(reversed(packages)) return packages
def get_queryset(self): query_params = self.get_query_params(internal_query=True) marker = self.request.GET.get('marker') sort_dir = query_params['sort_dir'] packages = [] with api.handled_exceptions(self.request): query_params['catalog'] = True packages, self._more = pkg_api.package_list( self.request, filters=query_params, paginate=True, marker=marker, page_size=self.paginate_by, sort_dir=sort_dir, limit=self.paginate_by) if self.request.GET.get('sort_dir', 'asc') == 'desc': packages = list(reversed(packages)) return packages
def test_package_list(self): package_list, more = packages.package_list(self.mock_request) self.assertEqual(self.packages, package_list) self.assertFalse(more) self.mock_client.packages.filter.assert_called_once_with(limit=100)