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 )
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() )
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 )
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', '%')
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', '%')
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)
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)
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', '%')
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', '%')
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', '%')