Пример #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'
            }])
Пример #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",
            }],
        )
Пример #3
0
    def error_404(self, error):
        if self.mode == "json":
            return jsonify(dict(error=404))
        else:
            if isinstance(error, Http404ErrorSuggestions) or isinstance(
                    error, Http404MissingCopyright):
                # let's suggest all the possible locations with a different
                # package version
                possible_versions = qry.pkg_names_list_versions(
                    session, error.package)

                suggestions = []
                for possible_version in possible_versions:
                    suggestions.append(
                        str(
                            Path(error.package) / possible_version.version /
                            error.path))

                if isinstance(error, Http404ErrorSuggestions):
                    return (
                        render_template("404_suggestions.html",
                                        suggestions=suggestions),
                        404,
                    )
                else:
                    return (
                        render_template("copyright/404_missing.html",
                                        suggestions=suggestions),
                        404,
                    )
            else:
                return render_template("404.html"), 404
Пример #4
0
def handle_latest_version(endpoint, package, path):
    """
    redirects to the latest version for the requested page,
    when 'latest' is provided instead of a version number
    """

    suite_order = consts.SUITES['all']

    try:
        versions = qry.pkg_names_list_versions(session,
                                               package,
                                               suite_order=suite_order)

    except InvalidPackageOrVersionError:
        raise Http404Error("%s not found" % package)
    # This is already sorted in the pkg_names_list_versions function.
    # So, we just extract the required value.
    version = [v.version for v in versions][-1]

    # avoids extra '/' at the end
    if path == "":
        redirect_url = '/'.join([package, version])
    else:
        redirect_url = '/'.join([package, version, path])
    return redirect_to_url(endpoint, redirect_url)
Пример #5
0
def handle_latest_version(endpoint, package, path):
    """
    redirects to the latest version for the requested page,
    when 'latest' is provided instead of a version number
    """

    suite_order = consts.SUITES['all']

    try:
        versions = qry.pkg_names_list_versions(session,
                                               package,
                                               suite_order=suite_order)

    except InvalidPackageOrVersionError:
        raise Http404Error("%s not found" % package)
    # This is already sorted in the pkg_names_list_versions function.
    # So, we just extract the required value.
    version = [v.version for v in versions][-1]

    # avoids extra '/' at the end
    if path == "":
        redirect_url = '/'.join([package, version])
    else:
        redirect_url = '/'.join([package, version, path])
    return redirect_to_url(endpoint, redirect_url)
Пример #6
0
    def _handle_latest_version(self, endpoint, package, path):
        """
        redirects to the latest version for the requested page,
        when 'latest' is provided instead of a version number
        """
        try:
            versions = qry.pkg_names_list_versions(session, package)
        except InvalidPackageOrVersionError:
            raise Http404Error("%s not found" % package)
        # the latest version is the latest item in the
        # sorted list (by debian_support.version_compare)
        version = sorted([v.version for v in versions],
                         cmp=version_compare)[-1]

        # avoids extra '/' at the end
        if path == "":
            redirect_url = '/'.join([package, version])
        else:
            if request.blueprint == 'patches':
                patch = '/'.join(path.split('/')[2:])
                redirect_url = '/'.join([package, version, patch])
            else:
                redirect_url = '/'.join([package, version, path])

        return self._redirect_to_url(endpoint, redirect_url)
Пример #7
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'}])
Пример #8
0
 def error_404(self, error):
     if self.mode == 'json':
         return jsonify(dict(error=404))
     else:
         if isinstance(error, Http404ErrorSuggestions):
             # let's suggest all the possible locations with a different
             # package version
             possible_versions = qry.pkg_names_list_versions(
                 session, error.package)
             suggestions = ['/'.join(
                 [_f for _f in [error.package, v.version, error.path]
                  if _f])
                 for v in possible_versions]
             return render_template('404_suggestions.html',
                                    suggestions=suggestions), 404
         else:
             return render_template('404.html'), 404
Пример #9
0
 def error_404(self, error):
     if self.mode == 'json':
         return jsonify(dict(error=404))
     else:
         if isinstance(error, Http404ErrorSuggestions):
             # let's suggest all the possible locations with a different
             # package version
             possible_versions = qry.pkg_names_list_versions(
                 session, error.package)
             suggestions = [
                 '/'.join([
                     _f for _f in [error.package, v.version, error.path]
                     if _f
                 ]) for v in possible_versions
             ]
             return render_template('404_suggestions.html',
                                    suggestions=suggestions), 404
         else:
             return render_template('404.html'), 404