Ejemplo n.º 1
0
def metapackages(bound=None):
    # process search
    filterinfo = MetapackagesFilterInfo()
    filterinfo.ParseFlaskArgs()

    request = filterinfo.GetRequest()
    request.Bound(bound)

    # get packages
    packages = get_db().GetMetapackages(request,
                                        limit=config['METAPACKAGES_PER_PAGE'])

    # 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)
        packages = get_db().GetMetapackages(
            request, limit=config['METAPACKAGES_PER_PAGE'])

    firstname, lastname = get_packages_name_range(packages)

    metapackagedata = metapackages_to_summary_items(
        PackagesToMetapackages(packages), filterinfo.GetRepo(),
        filterinfo.GetMaintainer())

    return flask.render_template('metapackages.html',
                                 firstname=firstname,
                                 lastname=lastname,
                                 search=filterinfo.GetDict(),
                                 advanced=filterinfo.IsAdvanced(),
                                 metapackagedata=metapackagedata,
                                 repo=filterinfo.GetRepo(),
                                 maintainer=filterinfo.GetMaintainer())
Ejemplo n.º 2
0
def projects(bound: Optional[str] = None) -> Response:
    # process search
    filterinfo = MetapackagesFilterInfo()
    filterinfo.parse_flask_args()

    request = filterinfo.get_request()
    request.set_bound(bound)

    # get packages
    def get_packages(
        request: MetapackageRequest
    ) -> Tuple[Dict[str, Dict[str, Any]], List[PackageDataSummarizable]]:
        metapackages = get_db().query_metapackages(
            **request.__dict__,
            limit=config['METAPACKAGES_PER_PAGE'],
        )

        packages = [
            PackageDataSummarizable(**item)
            for item in get_db().get_metapackages_packages(
                list(metapackages.keys()), summarizable=True)
        ]

        return metapackages, packages

    metapackages, packages = get_packages(request)

    # on empty result, fallback to show first, last set of results
    if not packages:
        request = filterinfo.get_request()
        if bound and bound.startswith('..'):
            request.require_name_to(None)
        metapackages, packages = get_packages(request)

    firstname, lastname = get_packages_name_range(packages)

    metapackagedata = packages_to_summary_items(packages,
                                                filterinfo.get_repo(),
                                                filterinfo.get_maintainer())

    return flask.render_template('projects.html',
                                 firstname=firstname,
                                 lastname=lastname,
                                 search=filterinfo.get_dict(),
                                 advanced=filterinfo.is_advanced(),
                                 metapackages=metapackages,
                                 metapackagedata=metapackagedata,
                                 repo=filterinfo.get_repo(),
                                 maintainer=filterinfo.get_maintainer())
Ejemplo n.º 3
0
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(
        PackagesToMetapackages(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())
Ejemplo n.º 4
0
def metapackages_generic(bound,
                         *filters,
                         template='metapackages.html',
                         repo=None,
                         maintainer=None):
    namefilter = bound_to_filter(bound)

    # process search
    search = flask.request.args.to_dict().get('search')
    search = None if search is None else search.strip()
    searchfilter = NameSubstringQueryFilter(search) if search else None

    # get packages
    packages = get_db().GetMetapackages(namefilter,
                                        InAnyRepoQueryFilter(reponames),
                                        searchfilter,
                                        *filters,
                                        limit=config['METAPACKAGES_PER_PAGE'])

    # on empty result, fallback to show first, last set of results
    if not packages:
        if bound and bound.startswith('<'):
            namefilter = NameStartingQueryFilter()
        else:
            namefilter = NameBeforeQueryFilter()
        packages = get_db().GetMetapackages(
            namefilter,
            InAnyRepoQueryFilter(reponames),
            searchfilter,
            *filters,
            limit=config['METAPACKAGES_PER_PAGE'])

    firstname, lastname = get_packages_name_range(packages)

    metapackagedata = metapackages_to_summary_items(
        PackagesToMetapackages(packages), repo, maintainer)

    return flask.render_template(template,
                                 firstname=firstname,
                                 lastname=lastname,
                                 search=search,
                                 metapackagedata=metapackagedata,
                                 repo=repo,
                                 maintainer=maintainer)