示例#1
0
文件: views.py 项目: Ivoz/warehouse
def project_detail(app, request, project_name, version=None):
    # Get the real project name for this project
    project = app.models.packaging.get_project(project_name)

    if project is None:
        raise NotFound("Cannot find a project named {}".format(project_name))

    # Look up all the releases for the given project
    releases = app.models.packaging.get_releases(project)

    if not releases:
        # If there are no releases then we need to return a simpler response
        # that simply states the project exists but that there is no versions
        # registered.
        raise NotFound(
            "There are no releases registered for the {} project".format(
                project,
            ),
        )

    if project != project_name:
        # We've found the project, and the version exists, but the project name
        # isn't quite right so we'll redirect them to the correct one.
        return redirect(
            url_for(
                request,
                "warehouse.packaging.views.project_detail",
                project_name=project,
                version=version,
            ),
            code=301,
        )

    if version is None:
        # If there's no version specified, then we use the latest version
        version = releases[0]["version"]
    elif not version in (r["version"] for r in releases):
        # If a version was specified then we need to ensure it's one of the
        # versions this project has, else raise a NotFound
        raise NotFound(
            "Cannot find the {} version of the {} project".format(
                version,
                project,
            ),
        )

    # Get the release data for the version
    release = app.models.packaging.get_release(project, version)

    if release.get("description"):
        # Render the project description
        description_html = htmlize(release["description"])

        # If our description wasn't able to be rendered, wrap it in <pre></pre>
        if not description_html.rendered:
            description_html = "<pre>" + description_html + "</pre>"
    else:
        description_html = ""

    # Mark our description_html as safe as it's already been cleaned by bleach
    description_html = jinja2.Markup(description_html)

    return render_response(
        app, request, "projects/detail.html",
        project=project,
        release=release,
        releases=releases,
        description_html=description_html,
        download_counts=app.models.packaging.get_download_counts(project),
        downloads=app.models.packaging.get_downloads(project, version),
        classifiers=app.models.packaging.get_classifiers(project, version),
        documentation=app.models.packaging.get_documentation_url(project),
        bugtracker=app.models.packaging.get_bugtrack_url(project),
        maintainers=app.models.packaging.get_users_for_project(project),
    )
示例#2
0
counter = collections.Counter()

unexpected = []

packages = client.list_packages()

for package in Bar("Processing", max=len(packages)).iter(packages):
    for version in client.package_releases(package, True):
        release_data = client.release_data(package, version)

        description = release_data.get("description", "")

        if description is None:
            continue

        html = recliner.htmlize(description)
        pypi = pypi_render(description)

        counter["total"] += 1

        if html.rendered:
            counter["recliner"] += 1
        if pypi is not None:
            counter["pypi"] += 1

        if not html.rendered and pypi is not None:
            unexpected.append((package, version))


for key, count in counter.items():
    print key, "=>", count