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 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 )
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 )
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, )
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 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
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
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)
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, )
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)