Esempio n. 1
0
    def test_list_versions(self):
        # Test without suit
        packages = qry.pkg_names_list_versions(self.session, "gnubg")
        self.assertEqual([p.version for p in packages],
                         ["0.90+20091206-4", "0.90+20120429-1", "1.02.000-2"])

        # Test with suit
        packages = qry.pkg_names_list_versions(self.session, "gnubg", "wheezy")
        self.assertEqual([p.version for p in packages], ["0.90+20120429-1"])

        # Test returning suites without suit as parameter
        self.assertTrue({
            'suites': [u'wheezy'],
            'version': u'0.90+20120429-1',
            'area': u'main'
        } in qry.pkg_names_list_versions_w_suites(self.session, "gnubg"))

        # Test returning suites with a suit as parameter
        self.assertEqual(
            qry.pkg_names_list_versions_w_suites(self.session, "gnubg",
                                                 "jessie"),
            [{
                'suites': [u'jessie', u'sid'],
                'version': u'1.02.000-2',
                'area': u'main'
            }])
Esempio n. 2
0
    def test_list_versions(self):
        # Test without suit
        packages = qry.pkg_names_list_versions(self.session, "gnubg")
        self.assertEqual(
            [p.version for p in packages],
            ["0.90+20091206-4", "0.90+20120429-1", "1.02.000-2"],
        )

        # Test with suit
        packages = qry.pkg_names_list_versions(self.session, "gnubg", "wheezy")
        self.assertEqual([p.version for p in packages], ["0.90+20120429-1"])

        # Test when suit_order is given as parameter
        packages = qry.pkg_names_list_versions(
            self.session,
            "gnubg",
            suite_order=["squeeze", "jessie", "sid", "wheezy"])
        self.assertEqual(
            [p.version for p in packages],
            ["0.90+20091206-4", "1.02.000-2", "0.90+20120429-1"],
        )

        packages = qry.pkg_names_list_versions(
            self.session,
            "gnubg",
            suite_order=["squeeze", "wheezy", "jessie", "sid"])
        self.assertEqual(
            [p.version for p in packages],
            ["0.90+20091206-4", "0.90+20120429-1", "1.02.000-2"],
        )

        # Test returning suites without suit as parameter
        self.assertTrue({
            "suites": [u"wheezy"],
            "version": u"0.90+20120429-1",
            "area": u"main"
        } in qry.pkg_names_list_versions_w_suites(self.session, "gnubg"))

        # Test returning suites with a suit as parameter
        self.assertEqual(
            qry.pkg_names_list_versions_w_suites(self.session, "gnubg",
                                                 "jessie"),
            [{
                "suites": [u"jessie", u"sid"],
                "version": u"1.02.000-2",
                "area": u"main",
            }],
        )
Esempio n. 3
0
    def get_objects(self, packagename):
        suite = request.args.get("suite") or ""
        suite = suite.lower()
        if suite == "all":
            suite = ""
        # we list the version with suites it belongs to
        try:
            versions_w_suites = qry.pkg_names_list_versions_w_suites(
                session, packagename, suite, reverse=True)
        except InvalidPackageOrVersionError:
            raise Http404Error("%s not found" % packagename)

        # we simply add pathl (for use with "You are here:")
        if request.blueprint == 'sources':
            endpoint = '.source'
        elif request.blueprint == 'copyright':
            endpoint = '.versions'

        pathl = qry.location_get_path_links(endpoint, packagename)
        return dict(type="package",
                    package=packagename,
                    versions=versions_w_suites,
                    path=packagename,
                    suite=suite,
                    pathl=pathl
                    )
Esempio n. 4
0
    def get_objects(self, packagename):
        suite = request.args.get("suite") or ""
        suite = suite.lower()
        if suite == "all":
            suite = ""
        # we list the version with suites it belongs to
        try:
            versions_w_suites = qry.pkg_names_list_versions_w_suites(
                session, packagename, suite, reverse=True)
        except InvalidPackageOrVersionError:
            raise Http404Error("%s not found" % packagename)

        # we simply add pathl (for use with "You are here:")
        if request.blueprint == 'sources':
            endpoint = '.source'
        elif request.blueprint == 'copyright':
            endpoint = '.versions'

        pathl = qry.location_get_path_links(endpoint, packagename)
        return dict(type="package",
                    package=packagename,
                    versions=versions_w_suites,
                    path=packagename,
                    suite=suite,
                    pathl=pathl
                    )
Esempio n. 5
0
    def _render_package(self, packagename, path_to):
        """
        renders the package page (which lists available versions)
        """
        suite = request.args.get("suite") or ""
        suite = suite.lower()
        if suite == "all":
            suite = ""
        # we list the version with suites it belongs to
        try:
            versions_w_suites = qry.pkg_names_list_versions_w_suites(
                session, packagename, suite)
        except InvalidPackageOrVersionError:
            raise Http404Error("%s not found" % packagename)

        if self.d.get('api'):
            self.render_func = jsonify
        else:
            self.render_func = bind_render(
                'sources/source_package.html',
                # we simply add pathl (for use with "You are here:")
                pathl=qry.location_get_path_links('.source', path_to))

        return dict(type="package",
                    package=packagename,
                    versions=versions_w_suites,
                    path=path_to,
                    suite=suite,
                    )
Esempio n. 6
0
    def test_list_versions(self):
        # Test without suit
        packages = qry.pkg_names_list_versions(self.session, "gnubg")
        self.assertEqual([p.version for p in packages],
                         ["0.90+20091206-4", "0.90+20120429-1", "1.02.000-2"])

        # Test with suit
        packages = qry.pkg_names_list_versions(self.session, "gnubg", "wheezy")
        self.assertEqual([p.version for p in packages], ["0.90+20120429-1"])

        # Test returning suites without suit as parameter
        self.assertTrue({'suites': [u'wheezy'], 'version': u'0.90+20120429-1',
                         'area': u'main'} in
                        qry.pkg_names_list_versions_w_suites(self.session,
                                                             "gnubg"))

        # Test returning suites with a suit as parameter
        self.assertEqual(qry.pkg_names_list_versions_w_suites(self.session,
                                                              "gnubg",
                                                              "jessie"),
                         [{'suites': [u'jessie', u'sid'],
                          'version': u'1.02.000-2', 'area': u'main'}])
Esempio n. 7
0
def handle_versions(version, package, path):
    check_for_alias = session.query(SuiteAlias) \
        .filter(SuiteAlias.alias == version).first()
    if check_for_alias:
            version = check_for_alias.suite
    try:
            versions_w_suites = qry.pkg_names_list_versions_w_suites(
                session, package)
    except InvalidPackageOrVersionError:
            raise Http404Error("%s not found" % package)

    versions = sorted([v['version'] for v in versions_w_suites
                      if version in v['suites']],
                      cmp=version_compare)
    return versions
Esempio n. 8
0
def handle_versions(version, package, path):
    check_for_alias = session.query(SuiteAlias) \
        .filter(SuiteAlias.alias == version).first()
    if check_for_alias:
        version = check_for_alias.suite
    try:
        versions_w_suites = qry.pkg_names_list_versions_w_suites(
            session, package)
    except InvalidPackageOrVersionError:
        raise Http404Error("%s not found" % package)

    versions = sorted(
        [v['version'] for v in versions_w_suites if version in v['suites']],
        cmp=version_compare)
    return versions
Esempio n. 9
0
    def get_objects(self, path_to):
        """
        determines if the dealing object is a package/folder/source file
        and sets this in 'type'
        Package: we want the available versions (db request)
        Directory: we want the subdirs and subfiles (disk listing)
        File: we want to render the raw url of the file
        """
        path_dict = path_to.split('/')

        if len(path_dict) == 1:  # package
            return self._render_package(path_dict[0], path_to)

        else:  # folder or file
            package = path_dict[0]
            version = path_dict[1]
            path = '/'.join(path_dict[2:])

            if version == "latest":  # we search the latest available version
                return self._handle_latest_version(package, path)
            else:
                # Check if an alias was used. If positive, handle the request
                # as if the suite was used instead of the alias
                check_for_alias = session.query(SuiteAlias) \
                    .filter(SuiteAlias.alias == version).first()
                if check_for_alias:
                    version = check_for_alias.suite
                try:
                    versions_w_suites = qry.pkg_names_list_versions_w_suites(
                        session, package)
                except InvalidPackageOrVersionError:
                    raise Http404Error("%s not found" % package)

                versions = sorted([v['version'] for v in versions_w_suites
                                  if version in v['suites']],
                                  cmp=version_compare)
                if versions:
                    redirect_url_parts = [package, versions[-1]]
                    if path:
                        redirect_url_parts.append(path)
                    redirect_url = '/'.join(redirect_url_parts)
                    return self._redirect_to_url(redirect_url,
                                                 redirect_code=302)

                return self._render_location(package, version, path)
Esempio n. 10
0
    def get_objects(self, packagename):
        suite = request.args.get("suite") or ""
        suite = suite.lower()
        if suite == "all":
            suite = ""
        # we list the version with suites it belongs to
        try:
            versions_w_suites = qry.pkg_names_list_versions_w_suites(
                session, packagename, suite, reverse=True)
        except InvalidPackageOrVersionError:
            raise Http404Error("%s not found" % packagename)
        empty = False
        for i, v in enumerate(versions_w_suites):
            try:
                format_file = helper.get_patch_format(session, packagename,
                                                      v["version"],
                                                      current_app.config)
            except FileOrFolderNotFound:
                format_file = ""
                versions_w_suites[i]["supported"] = False
            if not helper.is_supported(format_file.rstrip()):
                versions_w_suites[i]["supported"] = False
            else:
                versions_w_suites[i]["supported"] = True
                try:
                    series = helper.get_patch_series(session, packagename,
                                                     v["version"],
                                                     current_app.config)
                except (FileOrFolderNotFound, InvalidPackageOrVersionError):
                    series = []
                if len(series) == 0:
                    empty = True
                versions_w_suites[i]["series"] = len(series)

        return dict(
            type="package",
            package=packagename,
            versions=versions_w_suites,
            path=packagename,
            suite=suite,
            is_empty=empty,
        )
Esempio n. 11
0
    def get_objects(self, packagename):
        suite = request.args.get("suite") or ""
        suite = suite.lower()
        if suite == "all":
            suite = ""
        # we list the version with suites it belongs to
        try:
            versions_w_suites = qry.pkg_names_list_versions_w_suites(
                session, packagename, suite, reverse=True)
        except InvalidPackageOrVersionError:
            raise Http404Error("%s not found" % packagename)
        empty = False
        for i, v in enumerate(versions_w_suites):
            try:
                format_file = helper.get_patch_format(session, packagename,
                                                      v['version'],
                                                      current_app.config)
            except FileOrFolderNotFound:
                format_file = ""
                versions_w_suites[i]['supported'] = False
            if not helper.is_supported(format_file.rstrip()):
                versions_w_suites[i]['supported'] = False
            else:
                versions_w_suites[i]['supported'] = True
                try:
                    series = helper.get_patch_series(session, packagename,
                                                     v['version'],
                                                     current_app.config)
                except (FileOrFolderNotFound, InvalidPackageOrVersionError):
                    series = []
                if len(series) == 0:
                    empty = True
                versions_w_suites[i]['series'] = len(series)

        return dict(type="package",
                    package=packagename,
                    versions=versions_w_suites,
                    path=packagename,
                    suite=suite,
                    is_empty=empty)