Пример #1
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)

        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
Пример #2
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)

        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
Пример #3
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': 'Application', 'catalog': True})
     return json.dumps([package.to_dict() for package in packages])
Пример #4
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': 'Application', 'catalog': True})
     return json.dumps([package.to_dict() for package in packages])
Пример #5
0
    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')
Пример #6
0
    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')
Пример #7
0
 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
Пример #8
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
Пример #9
0
    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)
Пример #10
0
    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)
Пример #11
0
    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
Пример #12
0
 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
Пример #13
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)
Пример #14
0
    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
Пример #15
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
Пример #16
0
    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
Пример #17
0
    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
Пример #18
0
    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)
Пример #19
0
    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)