示例#1
0
def from_pypi(request, fpkgs='/find-packages'):
    """
    @@ convert to use action on a post rather than on a get
    """
    name = request.matchdict['name']
    version = request.matchdict['version']
    dists = PyPi.release_urls(name, version)
    flash = request.session.flash
    if not dists:
        flash("%s-%s not found" % (name, version))
        return HTTPFound(fpkgs)

    candidates = [
        x for x in dists if request.index.SDIST_EXT.match(x['filename'])
    ]

    if candidates[0]['md5_digest'] in request.index_data:
        logger.debug('Package %s-%s already in index' % (name, version))
        return HTTPFound('/index/%s' % name)

    details = candidates[0]
    url = details['url']
    filename = details['filename']
    newfile = None
    try:
        resp = requests.get(url)
        newfile = request.file_root / filename
        newfile.write_bytes(resp.content)
    except HTTPError, e:
        error = "HTTP Error: %d %s - %s" % (e.code,
                                            exc.status_map[e.code].title, url)
        logger.error(error)
        flash(error)
示例#2
0
def from_pypi(request, fpkgs='/find-packages'):
    """
    @@ convert to use action on a post rather than on a get
    """
    name = request.matchdict['name']
    version = request.matchdict['version']
    dists = PyPi.release_urls(name, version)
    flash = request.session.flash 
    if not dists:
        flash("%s-%s not found" %(name, version))
        return HTTPFound(fpkgs)

    candidates = [x for x in dists if request.index.SDIST_EXT.match(x['filename'])]

    if candidates[0]['md5_digest'] in request.index_data:
        logger.debug('Package %s-%s already in index' %(name, version))
        return HTTPFound('/index/%s' %name)
            
    details = candidates[0]
    url = details['url']
    filename = details['filename']
    newfile = None
    try:
        resp = requests.get(url)
        newfile = request.file_root / filename
        newfile.write_bytes(resp.content)
    except HTTPError, e:
        error = "HTTP Error: %d %s - %s" %(e.code, exc.status_map[e.code].title, url)
        logger.error(error)
        flash(error)