def metapackages(bound=None): # process search filterinfo = MetapackagesFilterInfo() filterinfo.ParseFlaskArgs() request = filterinfo.GetRequest() request.Bound(bound) # get packages def get_packages(request): metapackages = get_db().query_metapackages( **request.__dict__, limit=config['METAPACKAGES_PER_PAGE'], ) packages = get_db().get_metapackages_packages( list(metapackages.keys()), fields=[ 'repo', 'family', 'effname', 'version', 'versionclass', 'maintainers', 'flags' ]) return metapackages, packages metapackages, packages = get_packages(request) # on empty result, fallback to show first, last set of results if not packages: request = filterinfo.GetRequest() if bound and bound.startswith('..'): request.NameTo(None) metapackages, packages = get_packages(request) firstname, lastname = get_packages_name_range(packages) metapackagedata = metapackages_to_summary_items( packages_to_metapackages(packages), filterinfo.GetRepo(), filterinfo.GetMaintainer()) return flask.render_template('metapackages.html', firstname=firstname, lastname=lastname, search=filterinfo.GetDict(), advanced=filterinfo.IsAdvanced(), metapackages=metapackages, metapackagedata=metapackagedata, repo=filterinfo.GetRepo(), maintainer=filterinfo.GetMaintainer())
def metapackage_related(name): metapackages = get_db().get_metapackage_related_metapackages(name, limit=config['METAPACKAGES_PER_PAGE']) packages = get_db().get_metapackages_packages(list(metapackages.keys()), fields=['family', 'effname', 'version', 'versionclass', 'flags']) metapackagedata = metapackages_to_summary_items(packages_to_metapackages(packages)) too_many_warning = None if len(metapackagedata) == config['METAPACKAGES_PER_PAGE']: too_many_warning = config['METAPACKAGES_PER_PAGE'] return flask.render_template( 'metapackage-related.html', name=name, metapackages=metapackages, metapackagedata=metapackagedata, too_many_warning=too_many_warning )
def api_v1_metapackages(bound=None): filterinfo = MetapackagesFilterInfo() filterinfo.ParseFlaskArgs() request = filterinfo.GetRequest() request.Bound(bound) metapackages = get_db().query_metapackages( **request.__dict__, limit=config['METAPACKAGES_PER_PAGE']) packages = get_db().get_metapackages_packages(list(metapackages.keys())) metapackages = packages_to_metapackages(packages) metapackages = { metapackage_name: [api_v1_package_to_json(package) for package in packageset] for metapackage_name, packageset in metapackages.items() } return (dump_json(metapackages), {'Content-type': 'application/json'})
def api_v1_projects(bound: Optional[str] = None) -> Any: filterinfo = MetapackagesFilterInfo() filterinfo.parse_flask_args() request = filterinfo.get_request() request.set_bound(bound) metapackages = get_db().query_metapackages( **request.__dict__, limit=config['METAPACKAGES_PER_PAGE']) packages = get_db().get_metapackages_packages(list(metapackages.keys())) metapackages = packages_to_metapackages(packages) metapackages = { metapackage_name: [api_v1_package_to_json(package) for package in packageset] for metapackage_name, packageset in metapackages.items() } return (dump_json(metapackages), {'Content-type': 'application/json'})
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_newest'] + repo['num_metapackages_outdated'], } for repo in sorted(repostats, key=lambda repo: repo['num_metapackages_newest'] + repo['num_metapackages_outdated'], 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 = metapackages_to_summary_items( packages_to_metapackages(packages)) return flask.render_template('index.html', top_repos=top_repos, metapackages=metapackages, metapackagedata=metapackagedata)