Exemplo n.º 1
0
Arquivo: api.py Projeto: ldgeo/papaye
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()
Exemplo n.º 2
0
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()
Exemplo n.º 3
0
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()
Exemplo n.º 4
0
    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)
Exemplo n.º 5
0
    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)
Exemplo n.º 6
0
    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)
Exemplo n.º 7
0
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()
Exemplo n.º 8
0
    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)
Exemplo n.º 9
0
    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)
Exemplo n.º 10
0
    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]