Beispiel #1
0
def badge_version_for_repo(repo: str, name: str) -> Any:
    if repo not in repometadata.all_names():
        flask.abort(404)

    args = flask.request.args.to_dict()

    best_package = packageset_to_best(get_db().get_metapackage_packages(
        name, repo=repo, fields=['repo', 'version', 'versionclass']),
                                      allow_ignored=args.get(
                                          'allow_ignored', False))

    left_cell = BadgeCell(flask.request.args.to_dict().get(
        'header', repometadata[repo]['singular']),
                          collapsible=True)

    if best_package is None:
        # Note: it would be more correct to return 404 with content here,
        # but some browsers (e.g. Firefox) won't display the image in that case
        right_cell = BadgeCell('-')
    else:
        minversion = flask.request.args.to_dict().get('minversion')
        unsatisfying = minversion and version_compare(best_package.version,
                                                      minversion) < 0

        right_cell = BadgeCell(best_package.version,
                               badge_color(best_package.versionclass,
                                           unsatisfying),
                               truncate=20)

    return render_generic_badge([[left_cell, right_cell]])
Beispiel #2
0
def badge_version_only_for_repo(repo, name):
    if repo not in repometadata.all_names():
        flask.abort(404)

    packages = get_db().get_metapackage_packages(
        name, fields=['repo', 'version', 'versionclass'])
    best_pkg_by_repo = PackagesetToBestByRepo(packages)

    if repo not in best_pkg_by_repo:
        return (
            flask.render_template('badge-tiny-string.svg', string='-'),
            # XXX: it's more correct to return 404 with content
            # here, but some browsers (e.g. Firefox) won't display
            # the image in that case
            {
                'Content-type': 'image/svg+xml'
            })

    return (flask.render_template(
        'badge-tiny-version-only.svg',
        repo=repo,
        version=best_pkg_by_repo[repo].version,
        versionclass=best_pkg_by_repo[repo].versionclass,
    ), {
        'Content-type': 'image/svg+xml'
    })
Beispiel #3
0
def badge_version_for_repo(repo, name):
    if repo not in repometadata.all_names():
        flask.abort(404)

    packages = get_db().get_metapackage_packages(
        name, fields=['repo', 'version', 'versionclass'])
    best_pkg_by_repo = packageset_to_best_by_repo(packages)

    if repo not in best_pkg_by_repo:
        # XXX: display this as normal "pill" badge with correct repository name
        return (
            flask.render_template('badge-tiny-string.svg',
                                  string='No package'),
            # XXX: it's more correct to return 404 with content
            # here, but some browsers (e.g. Firefox) won't display
            # the image in that case
            {
                'Content-type': 'image/svg+xml'
            })

    minversion = flask.request.args.to_dict().get('minversion')
    unsatisfying = version_compare(best_pkg_by_repo[repo].version,
                                   minversion) < 0 if minversion else False

    return (flask.render_template(
        'badge-tiny-version.svg',
        repo=repo,
        version=best_pkg_by_repo[repo].version,
        versionclass=best_pkg_by_repo[repo].versionclass,
        unsatisfying=unsatisfying,
    ), {
        'Content-type': 'image/svg+xml'
    })
Beispiel #4
0
    def prepare_repos(repos: Collection[str]) -> List[str]:
        if not repos:
            return []

        repos = set(repos)

        # ensure correct ordering
        return [name for name in repometadata.all_names() if name in repos]
Beispiel #5
0
    def prepare_repos(repos):
        if not repos:
            return []

        repos = set(repos)

        # ensure correct ordering
        return [name for name in repometadata.all_names() if name in repos]
Beispiel #6
0
def repository(repo):
    if repo not in repometadata.all_names():
        flask.abort(404)
        #return (flask.render_template('repository-404.html', repo=repo), 404)
    if repo not in repometadata.active_names():
        # HTTP code is intentionally 404
        return (flask.render_template(
            'repository-410.html',
            repo=repo,
            repo_info=get_db().get_repository_information(repo)), 404)

    return flask.render_template(
        'repository.html',
        repo=repo,
        repo_info=get_db().get_repository_information(repo))
Beispiel #7
0
def repository(repo: str) -> Response:
    autorefresh = flask.request.args.to_dict().get('autorefresh')

    if repo not in repometadata.all_names():
        flask.abort(404)
        #return (flask.render_template('repository-404.html', repo=repo), 404)
    if repo not in repometadata.active_names():
        # HTTP code is intentionally 404
        return (flask.render_template('repository-410.html', repo=repo, repo_info=get_db().get_repository_information(repo)), 404)

    return flask.render_template(
        'repository.html',
        repo=repo,
        repo_info=get_db().get_repository_information(repo),
        autorefresh=autorefresh
    )