def get_package_by_version(request): package_name = request.matchdict.get('package_name') version = request.matchdict.get('version') if package_name in request.context and version in request.context[package_name].releases.keys(): serializer = ReleaseAPISerializer(request=request) return serializer.serialize(request.context[package_name][version]) else: return HTTPNotFound()
def get_package_by_version(request): package_name = request.matchdict.get("package_name") version = request.matchdict.get("version") if ( package_name in [package.__name__ for package in request.context] and version in request.context[package_name].releases.keys() ): serializer = ReleaseAPISerializer(request=request) return serializer.serialize(request.context[package_name][version]) else: return HTTPNotFound()
def test_serialize(self): from papaye.serializers import ReleaseAPISerializer from papaye.models import Package, Release, ReleaseFile serializer = ReleaseAPISerializer(request=self.request) package = Package(name='package') package['1.0'] = Release('1.0', '1.0', { 'summary': 'The package', 'description': 'A description', }) package['2.0'] = Release('2.0', '2.0', { 'summary': 'The package', 'description': 'A description', }) package['1.0']['package-1.0.tar.gz'] = ReleaseFile('package-1.0.tar.gz', b'') expected = { 'name': 'package', 'version': '1.0', 'gravatar_hash': None, 'metadata': { 'summary': 'The package', 'description': {'html': True, 'content': '<p>A description</p>\n'}, 'version': None, 'author': None, 'author_email': None, 'home_page': None, 'keywords': [], 'license': None, 'maintainer': None, 'maintainer_email': None, 'platform': None, 'classifiers': [], 'name': None, }, 'download_url': 'http://example.com/simple/package/1.0/package-1.0.tar.gz/', 'release_files': [{ 'size': '0', 'filename': 'package-1.0.tar.gz', 'url': 'http://example.com/simple/package/1.0/package-1.0.tar.gz/', 'version': '1.0', 'upload_date': str(package['1.0']['package-1.0.tar.gz'].upload_date), }], 'other_releases': [{ 'url': 'http://example.com/#/package/package/2.0', 'version': '2.0', }] } result = serializer.serialize(package['1.0']) self.assertEqual(result, expected)
def test_instanciate(self): from papaye.serializers import ReleaseAPISerializer serializer = ReleaseAPISerializer(request=self.request) self.assertIsInstance(serializer, ReleaseAPISerializer) self.assertTrue(getattr(serializer, 'request', None)) self.assertEqual(serializer.request, self.request)
def get_package(request): package_name = request.matchdict.get('package_name') if package_name: package = request.context[package_name] if package: release = package.get_last_release() return ReleaseAPISerializer(request).serialize(release) else: return HTTPNotFound()
def test_serialize_with_metadata_is_none(self): from papaye.serializers import ReleaseAPISerializer from papaye.models import Package, Release, ReleaseFile serializer = ReleaseAPISerializer(request=self.request) package = Package(name='package') package['1.0'] = Release('1.0', '1.0', { 'summary': 'The package', 'description': 'A description', }) package['1.0'].metadata = None package['2.0'] = Release('2.0', '2.0', { 'summary': 'The package', 'description': 'A description', }) package['1.0']['package-1.0.tar.gz'] = ReleaseFile('package-1.0.tar.gz', b'') expected = { 'name': 'package', 'version': '1.0', 'gravatar_hash': None, 'metadata': None, 'download_url': 'http://example.com/simple/package/1.0/package-1.0.tar.gz/', 'release_files': [{ 'size': '0', 'filename': 'package-1.0.tar.gz', 'url': 'http://example.com/simple/package/1.0/package-1.0.tar.gz/', 'version': '1.0', 'upload_date': str(package['1.0']['package-1.0.tar.gz'].upload_date), }], 'other_releases': [{ 'url': 'http://example.com/#/package/package/2.0', 'version': '2.0', }] } result = serializer.serialize(package['1.0']) self.assertEqual(result, expected)
def test_serialize_with_metadata_is_none(self): from papaye.serializers import ReleaseAPISerializer from papaye.models import Package, Release, ReleaseFile serializer = ReleaseAPISerializer(request=self.request) package = Package(name='package') package['1.0'] = Release('1.0', '1.0', { 'summary': 'The package', 'description': 'A description', }) package['1.0'].metadata = None package['2.0'] = Release('2.0', '2.0', { 'summary': 'The package', 'description': 'A description', }) package['1.0']['package-1.0.tar.gz'] = ReleaseFile('package-1.0.tar.gz', b'') expected = { 'name': 'package', 'version': '1.0', 'gravatar_hash': None, 'metadata': None, 'download_url': 'http://example.com/simple/package/1.0/package-1.0.tar.gz/', 'release_files': [{ 'size': '0', 'filename': 'package-1.0.tar.gz', 'url': 'http://example.com/simple/package/1.0/package-1.0.tar.gz/', 'version': '1.0', 'upload_date': str(package['1.0']['package-1.0.tar.gz'].upload_date), }], 'other_releases': [{ 'url': 'http://example.com/#/browse/package/2.0', 'version': '2.0', }] } result = serializer.serialize(package['1.0']) self.assertEqual(result, expected)
def test_serialize(self): from papaye.serializers import ReleaseAPISerializer request = get_current_request() serializer = ReleaseAPISerializer(request=self.request) package = factories.PackageFactory(name='package') package['1.0'] = factories.ReleaseFactory( version='1.0', metadata={ 'summary': 'The package', 'description': 'A description', }, package=package, ) release = factories.ReleaseFactory( version='2.0', metadata={ 'summary': 'The package', 'description': 'A description', }, package=package, ) package['2.0'] = release release_file = factories.ReleaseFileFactory( name='package-1.0.tar.gz', content=b'', release=release, ) package['1.0']['package-1.0.tar.gz'] = release_file expected = { 'name': package.name, 'version': '1.0', 'gravatar_hash': None, 'metadata': { 'summary': 'The package', 'description': {'html': True, 'content': '<p>A description</p>\n'}, 'version': None, 'author': None, 'author_email': None, 'home_page': None, 'keywords': [], 'license': None, 'maintainer': None, 'maintainer_email': None, 'platform': None, 'classifiers': [], 'name': None, }, 'download_url': request.static_url(release_file.path), 'release_files': [{ 'size': '0', 'filename': release_file.filename, 'url': request.static_url(release_file.path), 'version': '1.0', 'upload_date': str(release_file.upload_date), }], 'other_releases': [{ 'url': 'http://example.com/#/browse/package/2.0', 'version': '2.0', }] } result = serializer.serialize(package['1.0']) for key, value in result.items(): assert value == expected[key]