コード例 #1
0
def repositories_statistics(sorting: Optional[str] = None) -> Response:
    autorefresh = flask.request.args.to_dict().get('autorefresh')

    repostats_by_name = {repostat['name']: repostat for repostat in get_db().get_active_repositories()}
    repostats = [repostats_by_name[reponame] for reponame in repometadata.active_names() if reponame in repostats_by_name]

    if sorting == 'newest':
        repostats = sorted(repostats, key=lambda s: cast(int, s['num_metapackages_newest']), reverse=True)
    elif sorting == 'pnewest':
        repostats = sorted(repostats, key=lambda s: safe_percent(s['num_metapackages_newest'], s['num_metapackages_comparable']), reverse=True)
    elif sorting == 'outdated':
        repostats = sorted(repostats, key=lambda s: cast(int, s['num_metapackages_outdated']), reverse=True)
    elif sorting == 'poutdated':
        repostats = sorted(repostats, key=lambda s: safe_percent(s['num_metapackages_outdated'], s['num_metapackages_comparable']), reverse=True)
    elif sorting == 'total':
        repostats = sorted(repostats, key=lambda s: cast(int, s['num_metapackages']), reverse=True)
    elif sorting == 'nonunique':
        repostats = sorted(repostats, key=lambda s: cast(int, s['num_metapackages'] - s['num_metapackages_unique']), reverse=True)
    elif sorting == 'vulnerable':
        repostats = sorted(repostats, key=lambda s: cast(int, s['num_metapackages_vulnerable']), reverse=True)
    elif sorting == 'pvulnerable':
        repostats = sorted(repostats, key=lambda s: safe_percent(s['num_metapackages_vulnerable'], s['num_metapackages']), reverse=True)
    else:
        sorting = 'name'

    return flask.render_template(
        'repositories-statistics.html',
        sorting=sorting,
        repostats=repostats,
        repostats_old={},  # {repo['name']: repo for repo in get_db().GetRepositoriesHistoryAgo(60 * 60 * 24 * 7)},
        counts=get_db().get_counts(),
        autorefresh=autorefresh
    )
コード例 #2
0
ファイル: statistics.py プロジェクト: jtojnar/repology
def statistics(sorting=None):
    repostats = {repostat['name']: repostat for repostat in get_db().GetRepositories()}
    repostats = [repostats[reponame] for reponame in reponames if reponame in repostats]
    showmedals = True

    if sorting == 'newest':
        repostats = sorted(repostats, key=lambda s: s['num_metapackages_newest'], reverse=True)
    elif sorting == 'pnewest':
        repostats = sorted(repostats, key=lambda s: safe_percent(s['num_metapackages_newest'], s['num_metapackages_comparable']), reverse=True)
    elif sorting == 'outdated':
        repostats = sorted(repostats, key=lambda s: s['num_metapackages_outdated'], reverse=True)
    elif sorting == 'poutdated':
        repostats = sorted(repostats, key=lambda s: safe_percent(s['num_metapackages_outdated'], s['num_metapackages_comparable']), reverse=True)
    elif sorting == 'total':
        repostats = sorted(repostats, key=lambda s: s['num_metapackages'], reverse=True)
    else:
        sorting = 'name'
        showmedals = False

    return flask.render_template(
        'statistics.html',
        sorting=sorting,
        repostats=repostats,
        showmedals=showmedals,
        repostats_old={},  # {repo['name']: repo for repo in get_db().GetRepositoriesHistoryAgo(60 * 60 * 24 * 7)},
        num_metapackages=get_db().GetMetapackagesCount()
    )
コード例 #3
0
ファイル: repositories.py プロジェクト: jriddell/repology
def repositories_statistics(sorting=None):
    autorefresh = flask.request.args.to_dict().get('autorefresh')

    repostats = {repostat['name']: repostat for repostat in get_db().get_active_repositories()}
    repostats = [repostats[reponame] for reponame in repometadata.active_names() if reponame in repostats]
    showmedals = True

    if sorting == 'newest':
        repostats = sorted(repostats, key=lambda s: s['num_metapackages_newest'], reverse=True)
    elif sorting == 'pnewest':
        repostats = sorted(repostats, key=lambda s: safe_percent(s['num_metapackages_newest'], s['num_metapackages_comparable']), reverse=True)
    elif sorting == 'outdated':
        repostats = sorted(repostats, key=lambda s: s['num_metapackages_outdated'], reverse=True)
    elif sorting == 'poutdated':
        repostats = sorted(repostats, key=lambda s: safe_percent(s['num_metapackages_outdated'], s['num_metapackages_comparable']), reverse=True)
    elif sorting == 'total':
        repostats = sorted(repostats, key=lambda s: s['num_metapackages'], reverse=True)
    else:
        sorting = 'name'
        showmedals = False

    return flask.render_template(
        'repositories-statistics.html',
        sorting=sorting,
        repostats=repostats,
        showmedals=showmedals,
        repostats_old={},  # {repo['name']: repo for repo in get_db().GetRepositoriesHistoryAgo(60 * 60 * 24 * 7)},
        counts=get_db().get_counts(),
        autorefresh=autorefresh
    )
コード例 #4
0
ファイル: graphs.py プロジェクト: sitedata/repology-webapp
def graph_repo_projects_vulnerable_percent(repo: str) -> Response:
    return graph_repo_generic(repo, lambda s: safe_percent(s['num_metapackages_vulnerable'], s['num_metapackages']), '#ff0000', '%')
コード例 #5
0
ファイル: graphs.py プロジェクト: sitedata/repology-webapp
def graph_repo_projects_outdated_percent(repo: str) -> Response:
    return graph_repo_generic(repo, lambda s: safe_percent(s['num_metapackages_outdated'], s['num_metapackages_newest'] + s['num_metapackages_outdated']), '#d9534f', '%')
コード例 #6
0
ファイル: index.py プロジェクト: ibara/repology-webapp
def index() -> Any:
    top_by_total = Top()
    top_by_nonunique = Top()
    top_by_newest = Top()
    top_by_pnewest = Top()
    top_by_maintainers = Top()
    top_by_problematic = Top()  # not used right now
    top_by_ppm = Top(reverse=True)

    for repo in get_db().get_active_repositories():
        metadata = repometadata[repo['name']]
        if metadata['type'] != 'repository':
            continue
        top_by_total.add(metadata['statsgroup'], repo['name'],
                         repo['num_metapackages'])
        top_by_nonunique.add(
            metadata['statsgroup'], repo['name'],
            repo['num_metapackages'] - repo['num_metapackages_unique'])
        top_by_newest.add(metadata['statsgroup'], repo['name'],
                          repo['num_metapackages_newest'])
        top_by_maintainers.add(metadata['statsgroup'], repo['name'],
                               repo['num_maintainers'])
        top_by_problematic.add(
            metadata['statsgroup'], repo['name'],
            safe_percent(repo['num_metapackages_problematic'],
                         repo['num_metapackages']))

        if repo['num_metapackages'] > 1000:
            top_by_pnewest.add(
                metadata['statsgroup'], repo['name'],
                safe_percent(repo['num_metapackages_newest'],
                             repo['num_metapackages_comparable']))
            if repo['num_maintainers'] > 0:
                top_by_ppm.add(
                    metadata['statsgroup'], repo['name'],
                    repo['num_metapackages'] / repo['num_maintainers'])

    important_packages = [
        'apache24',
        'awesome',
        'bash',
        'binutils',
        'bison',
        'blender',
        'boost',
        'bzip2',
        'chromium',
        'claws-mail',
        'cmake',
        'cppcheck',
        'cups',
        'curl',
        'darktable',
        'dia',
        'djvulibre',
        'dosbox',
        'dovecot',
        'doxygen',
        'dvd+rw-tools',
        'emacs',
        'exim',
        'ffmpeg',
        'firefox',
        'flex',
        'fluxbox',
        'freecad',
        'freetype',
        'gcc',
        'gdb',
        'geeqie',
        'gimp',
        'git',
        'gnupg',
        'go',
        'graphviz',
        'grub',
        'icewm',
        'imagemagick',
        'inkscape',
        'irssi',
        'kodi',
        'lame',
        'lftp',
        'libreoffice',
        'libressl',
        'lighttpd',
        'links',
        'llvm',
        'mariadb',
        'maxima',
        'mc',
        'memcached',
        'mercurial',
        'mesa',
        'mplayer',
        'mutt',
        'mysql',
        'nginx',
        'nmap',
        'octave',
        'openbox',
        'openssh',
        'openssl',
        'openttf',
        'openvpn',
        'p7zip',
        'perl',
        'pidgin',
        'postfix',
        'postgresql',
        'privoxy',
        'procmail',
        'python3',
        'qemu',
        'rdesktop',
        'redis',
        'rrdtool',
        'rsync',
        'rtorrent',
        'rxvt-unicode',
        'samba',
        'sane-backends',
        'scons',
        'screen',
        'scribus',
        'scummvm',
        'sdl2',
        'smartmontools',
        'sqlite3',
        'squid',
        'subversion',
        'sudo',
        'sumversion',
        'thunderbird',
        'tigervnc',
        'tmux',
        'tor',
        'valgrind',
        'vim',
        'virtualbox',
        'vlc',
        'vsftpd',
        'wayland',
        'wesnoth',
        'wget',
        'wine',
        'wireshark',
        'xorg-server',
        'youtube-dl',
        'zsh',
    ]

    metapackages = get_db().get_metapackages(important_packages)

    metapackagedata = packages_to_summary_items(
        PackageDataSummarizable(**item)
        for item in get_db().get_metapackages_packages(important_packages,
                                                       summarizable=True))

    top_size = 10

    return flask.render_template(
        'index.html',
        top_by_total=top_by_total.get(top_size),
        top_by_nonunique=top_by_nonunique.get(top_size),
        top_by_newest=top_by_newest.get(top_size),
        top_by_pnewest=top_by_pnewest.get(top_size),
        top_by_maintainers=top_by_maintainers.get(top_size),
        top_by_ppm=top_by_ppm.get(top_size),
        metapackages=metapackages,
        metapackagedata=metapackagedata)
コード例 #7
0
ファイル: index.py プロジェクト: luzpaz/repology
def index():
    repostats = [
        repo for repo in get_db().get_active_repositories()
        if repometadata[repo['name']]['type'] == 'repository'
    ]

    top_repos = {
        'by_total': [{
            'name': repo['name'],
            'value': repo['num_metapackages'],
        } for repo in sorted(
            repostats, key=lambda repo: repo['num_metapackages'], reverse=True)
                     ][:10],
        'by_nonunique': [{
            'name':
            repo['name'],
            'value':
            repo['num_metapackages'] - repo['num_metapackages_unique'],
        } for repo in sorted(repostats,
                             key=lambda repo: repo['num_metapackages'] - repo[
                                 'num_metapackages_unique'],
                             reverse=True)][:10],
        'by_newest': [{
            'name': repo['name'],
            'value': repo['num_metapackages_newest'],
        } for repo in sorted(repostats,
                             key=lambda repo: repo['num_metapackages_newest'],
                             reverse=True)][:10],
        'by_pnewest': [{
            'name':
            repo['name'],
            'value':
            '{:.2f}%'.format(
                safe_percent(repo['num_metapackages_newest'],
                             repo['num_metapackages_comparable'])),
        } for repo in sorted(
            repostats,
            key=lambda repo: safe_percent(repo['num_metapackages_newest'],
                                          repo['num_metapackages_comparable']),
            reverse=True) if repo['num_metapackages'] > 1000][:8]
    }

    important_packages = [
        'apache24',
        'awesome',
        'bash',
        'binutils',
        'bison',
        'blender',
        'boost',
        'bzip2',
        'chromium',
        'claws-mail',
        'cmake',
        'cppcheck',
        'cups',
        'curl',
        'darktable',
        'dia',
        'djvulibre',
        'dosbox',
        'dovecot',
        'doxygen',
        'dvd+rw-tools',
        'emacs',
        'exim',
        'ffmpeg',
        'firefox',
        'flex',
        'fluxbox',
        'freecad',
        'freetype',
        'gcc',
        'gdb',
        'geeqie',
        'gimp',
        'git',
        'gnupg',
        'go',
        'graphviz',
        'grub',
        'icewm',
        'imagemagick',
        'inkscape',
        'irssi',
        'kodi',
        'lame',
        'lftp',
        'libreoffice',
        'libressl',
        'lighttpd',
        'links',
        'llvm',
        'mariadb',
        'maxima',
        'mc',
        'memcached',
        'mercurial',
        'mesa',
        'mplayer',
        'mutt',
        'mysql',
        'nginx',
        'nmap',
        'octave',
        'openbox',
        'openssh',
        'openssl',
        'openttf',
        'openvpn',
        'p7zip',
        'perl',
        'pidgin',
        'postfix',
        'postgresql',
        'privoxy',
        'procmail',
        'python3',
        'qemu',
        'rdesktop',
        'redis',
        'rrdtool',
        'rsync',
        'rtorrent',
        'rxvt-unicode',
        'samba',
        'sane-backends',
        'scons',
        'screen',
        'scribus',
        'scummvm',
        'sdl2',
        'smartmontools',
        'sqlite3',
        'squid',
        'subversion',
        'sudo',
        'sumversion',
        'thunderbird',
        'tigervnc',
        'tmux',
        'tor',
        'valgrind',
        'vim',
        'virtualbox',
        'vlc',
        'vsftpd',
        'wayland',
        'wesnoth',
        'wget',
        'wine',
        'wireshark',
        'xorg-server',
        'youtube-dl',
        'zsh',
    ]

    metapackages = get_db().get_metapackages(important_packages)

    packages = get_db().get_metapackages_packages(
        important_packages,
        fields=['family', 'effname', 'version', 'versionclass', 'flags'])

    metapackagedata = packages_to_summary_items(packages)

    return flask.render_template('index.html',
                                 top_repos=top_repos,
                                 metapackages=metapackages,
                                 metapackagedata=metapackagedata)
コード例 #8
0
ファイル: graphs.py プロジェクト: sniperkit/snk.fork.repology
def graph_repo_metapackages_outdated_percent(repo):
    return graph_repo_generic(
        repo, lambda s: safe_percent(
            s['num_metapackages_outdated'], s['num_metapackages_newest'] + s[
                'num_metapackages_outdated']), '#d9534f', '%')
コード例 #9
0
def graph_repo_projects_newest_percent(repo: str) -> Any:
    return graph_repo_generic(
        repo, lambda s: safe_percent(
            s['num_metapackages_newest'], s['num_metapackages_newest'] + s[
                'num_metapackages_outdated']), '#5cb85c', '%')
コード例 #10
0
ファイル: graphs.py プロジェクト: stephengroat/repology
def graph_repo_metapackages_newest_percent(repo):
    return graph_repo_generic(
        repo, lambda s: safe_percent(
            s['num_metapackages_newest'], s['num_metapackages'] - s[
                'num_metapackages_unique']), '#5cb85c', '%')