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' }])
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", }], )
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
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)
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)
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'}])
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
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