Exemple #1
0
 def d_results(self):
     hits = self.results.get('hits', {}).get('hits', [])
     hits = deduplicate(hits)
     d_results = []
     for res in hits:
         try:
             domain = Domain.wrap(res['_source'])
             if domain.copied_from is not None:
                 # this avoids putting in snapshots in the list where the
                 # copied_from domain has been deleted.
                 d_results.append(domain)
         except CopiedFromDeletedException as e:
             notify_exception(
                 self.request,
                 message=(
                     "Fetched Exchange Snapshot Error: {}. "
                     "The problem snapshot id: {}".format(
                         e.message, res['_source']['_id'])
                 )
             )
     if self.sort_by == 'newest':
         pass
     else:
         d_results = Domain.hit_sort(d_results)
     return d_results
Exemple #2
0
def appstore(request, template="appstore/appstore_base.html", sort_by=None):
    page = int(request.GET.get('page', 1))
    include_unapproved = (request.user.is_superuser and request.GET.get('unapproved', False))
    if not sort_by:
        results = Domain.published_snapshots(include_unapproved=include_unapproved, page=page, per_page=PER_PAGE)
        more_pages = page * PER_PAGE < results.total_rows and len(results) == PER_PAGE # hacky way to deal with approved vs unapproved
    else:
        total_results = Domain.published_snapshots(include_unapproved=include_unapproved)
        if sort_by == 'best':
            results = Domain.popular_sort(total_results, page)
            #more_pages = page * PER_PAGE < total_results and page <= 10
        elif sort_by == 'hits':
            results = Domain.hit_sort(total_results, page)
            #more_pages = page * PER_PAGE < len(total_results) and page <= 10
        more_pages = page * PER_PAGE < total_results.total_rows and len(results) == PER_PAGE # hacky way to deal with approved vs unapproved
    average_ratings = list()
    for result in results:
        average_ratings.append([result.name, Review.get_average_rating_by_app(result.original_doc)])

    return render_to_response(request, template, _appstore_context({
        'apps': results,
        'average_ratings': average_ratings,
        'page': page,
        'prev_page': (page-1),
        'next_page': (page+1),
        'more_pages': more_pages,
        'sort_by': sort_by,
        'include_unapproved': include_unapproved
    }))
Exemple #3
0
def appstore(request, template="appstore/appstore_base.html"):
    page_length = 10
    include_unapproved = True if request.GET.get('is_approved',
                                                 "") == "false" else False
    if include_unapproved and not request.user.is_superuser:
        raise Http404()
    params, _ = parse_args_for_es(request)
    page = params.pop('page', 1)
    page = int(page[0] if isinstance(page, list) else page)
    results = es_snapshot_query(params, SNAPSHOT_FACETS)
    hits = results.get('hits', {}).get('hits', [])
    hits = deduplicate(hits)
    d_results = [Domain.wrap(res['_source']) for res in hits]

    sort_by = request.GET.get('sort_by', None)
    if sort_by == 'best':
        d_results = Domain.popular_sort(d_results)
    elif sort_by == 'newest':
        pass
    else:
        d_results = Domain.hit_sort(d_results)

    persistent_params = {}
    if sort_by:
        persistent_params["sort_by"] = sort_by
    if include_unapproved:
        persistent_params["is_approved"] = "false"
    persistent_params = urlencode(
        persistent_params)  # json.dumps(persistent_params)

    average_ratings = list()
    for result in d_results:
        average_ratings.append([
            result.name,
            Review.get_average_rating_by_app(result.copied_from._id)
        ])

    more_pages = False if len(d_results) <= page * page_length else True

    facet_map = fill_mapping_with_facets(SNAPSHOT_MAPPING, results, params)
    vals = dict(
        apps=d_results[(page - 1) * page_length:page * page_length],
        page=page,
        prev_page=(page - 1),
        next_page=(page + 1),
        more_pages=more_pages,
        sort_by=sort_by,
        average_ratings=average_ratings,
        include_unapproved=include_unapproved,
        facet_map=facet_map,
        facets=results.get("facets", []),
        query_str=request.META['QUERY_STRING'],
        search_query=params.get('search', [""])[0],
        persistent_params=persistent_params,
    )
    return render(request, template, vals)
Exemple #4
0
def appstore(request, template="appstore/appstore_base.html"):
    page_length = 10
    include_unapproved = True if request.GET.get('is_approved', "") == "false" else False
    if include_unapproved and not request.user.is_superuser:
        raise Http404()
    params, _ = parse_args_for_es(request)
    page = params.pop('page', 1)
    page = int(page[0] if isinstance(page, list) else page)
    results = es_snapshot_query(params, SNAPSHOT_FACETS)
    hits = results.get('hits', {}).get('hits', [])
    hits = deduplicate(hits)
    d_results = [Domain.wrap(res['_source']) for res in hits]

    sort_by = request.GET.get('sort_by', None)
    if sort_by == 'best':
        d_results = Domain.popular_sort(d_results)
    elif sort_by == 'newest':
        pass
    else:
        d_results = Domain.hit_sort(d_results)

    persistent_params = {}
    if sort_by:
        persistent_params["sort_by"] = sort_by
    if include_unapproved:
        persistent_params["is_approved"] = "false"
    persistent_params = urlencode(persistent_params) # json.dumps(persistent_params)

    average_ratings = list()
    for result in d_results:
        average_ratings.append([result.name, Review.get_average_rating_by_app(result.copied_from._id)])

    more_pages = False if len(d_results) <= page*page_length else True

    facet_map = fill_mapping_with_facets(SNAPSHOT_MAPPING, results, params)
    vals = dict(
        apps=d_results[(page-1)*page_length:page*page_length],
        page=page,
        prev_page=(page-1),
        next_page=(page+1),
        more_pages=more_pages,
        sort_by=sort_by,
        average_ratings=average_ratings,
        include_unapproved=include_unapproved,
        facet_map=facet_map,
        facets=results.get("facets", []),
        query_str=request.META['QUERY_STRING'],
        search_query=params.get('search', [""])[0],
        persistent_params=persistent_params,
    )
    return render(request, template, vals)
Exemple #5
0
def appstore(request, template="appstore/appstore_base.html"):
    page_length = 10
    include_unapproved = True if request.GET.get('is_approved',
                                                 "") == "false" else False
    if include_unapproved and not request.user.is_superuser:
        raise Http404()
    params, _ = parse_args_for_es(request)
    params = dict([(SNAPSHOT_MAPPING.get(p, p), params[p]) for p in params])
    page = params.pop('page', 1)
    page = int(page[0] if isinstance(page, list) else page)
    results = es_snapshot_query(params, SNAPSHOT_FACETS)
    d_results = [
        Domain.wrap(res['_source'])
        for res in results.get('hits', {}).get('hits', [])
    ]

    sort_by = request.GET.get('sort_by', None)
    if sort_by == 'best':
        d_results = Domain.popular_sort(d_results)
    elif sort_by == 'newest':
        pass
    else:
        d_results = Domain.hit_sort(d_results)

    average_ratings = list()
    for result in d_results:
        average_ratings.append([
            result.name,
            Review.get_average_rating_by_app(result.copied_from._id)
        ])

    more_pages = False if len(d_results) <= page * page_length else True

    facets_sortables = generate_sortables_from_facets(
        results, params, inverse_dict(SNAPSHOT_MAPPING))
    vals = dict(apps=d_results[(page - 1) * page_length:page * page_length],
                page=page,
                prev_page=(page - 1),
                next_page=(page + 1),
                more_pages=more_pages,
                sort_by=sort_by,
                average_ratings=average_ratings,
                include_unapproved=include_unapproved,
                sortables=facets_sortables,
                query_str=request.META['QUERY_STRING'],
                search_query=params.get('search', [""])[0])
    return render(request, template, vals)
Exemple #6
0
def appstore(request, template="appstore/appstore_base.html"):
    page_length = 10
    include_unapproved = True if request.GET.get('is_approved', "") == "false" else False
    if include_unapproved and not request.user.is_superuser:
        raise Http404()
    params, _ = parse_args_for_es(request)
    params = dict([(SNAPSHOT_MAPPING.get(p, p), params[p]) for p in params])
    page = params.pop('page', 1)
    page = int(page[0] if isinstance(page, list) else page)
    results = es_snapshot_query(params, SNAPSHOT_FACETS)
    d_results = [Domain.wrap(res['_source']) for res in results.get('hits', {}).get('hits', [])]

    sort_by = request.GET.get('sort_by', None)
    if sort_by == 'best':
        d_results = Domain.popular_sort(d_results)
    elif sort_by == 'newest':
        pass
    else:
        d_results = Domain.hit_sort(d_results)

    average_ratings = list()
    for result in d_results:
        average_ratings.append([result.name, Review.get_average_rating_by_app(result.copied_from._id)])

    more_pages = False if len(d_results) <= page*page_length else True

    facets_sortables = generate_sortables_from_facets(results, params, inverse_dict(SNAPSHOT_MAPPING))
    vals = dict(apps=d_results[(page-1)*page_length:page*page_length],
        page=page,
        prev_page=(page-1),
        next_page=(page+1),
        more_pages=more_pages,
        sort_by=sort_by,
        average_ratings=average_ratings,
        include_unapproved=include_unapproved,
        sortables=facets_sortables,
        query_str=request.META['QUERY_STRING'],
        search_query = params.get('search', [""])[0])
    return render(request, template, vals)
Exemple #7
0
def filter_snapshots(request, filter_by, filter, template="appstore/appstore_base.html", sort_by=None):
    if filter_by not in ('category', 'license', 'region', 'author'): # 'organization',
        raise Http404("That page doesn't exist")

    page = int(request.GET.get('page', 1))
    filter = filter.replace('+', ' ')
    #query = '%s:"%s"' % (filter_by, filter)

    results = Domain.get_by_field(FILTERS[filter_by], filter)
    total_rows = len(results)

    if not sort_by:
        results = results[(page-1)*PER_PAGE : page*PER_PAGE]
    else:
        #results, total_rows = Domain.snapshot_search(query, per_page=None)
        if sort_by == 'best':
            results = Domain.popular_sort(results, page)
        elif sort_by == 'hits':
            results = Domain.hit_sort(results, page)

    more_pages = page * PER_PAGE < total_rows

    average_ratings = list()
    for result in results:
        average_ratings.append([result.name, Review.get_average_rating_by_app(result.original_doc)])

    vals = _appstore_context(dict(apps=results,
                                  filter_by=filter_by,
                                  filter=filter,
                                  filter_url=filter.replace(' ', '+'),
                                  page=page,
                                  prev_page=(page-1),
                                  next_page=(page+1),
                                  more_pages=more_pages,
                                  sort_by=sort_by,
                                  average_ratings=average_ratings))
    return render_to_response(request, template, vals)
Exemple #8
0
def appstore(request, template="appstore/appstore_base.html"):
    page_length = 10
    include_unapproved = True if request.GET.get('is_approved', "") == "false" else False
    if include_unapproved and not request.user.is_superuser:
        raise Http404()
    params, _ = parse_args_for_es(request)
    page = params.pop('page', 1)
    page = int(page[0] if isinstance(page, list) else page)
    results = es_snapshot_query(params, SNAPSHOT_FACETS)
    hits = results.get('hits', {}).get('hits', [])
    hits = deduplicate(hits)
    d_results = []
    for res in hits:
        try:
            domain = Domain.wrap(res['_source'])
            if domain.copied_from is not None:
                # this avoids putting in snapshots in the list where the
                # copied_from domain has been deleted.
                d_results.append(domain)
        except CopiedFromDeletedException as e:
            notify_exception(
                request,
                message=(
                    "Fetched Exchange Snapshot Error: {}. "
                    "The problem snapshot id: {}".format(
                    e.message, res['_source']['_id'])
                )
            )

    starter_apps = request.GET.get('is_starter_app', None)
    sort_by = request.GET.get('sort_by', None)
    if sort_by == 'newest':
        pass
    else:
        d_results = Domain.hit_sort(d_results)

    persistent_params = {}
    if sort_by:
        persistent_params["sort_by"] = sort_by
    if include_unapproved:
        persistent_params["is_approved"] = "false"
    persistent_params = urlencode(persistent_params)  # json.dumps(persistent_params)

    more_pages = False if len(d_results) <= page * page_length else True

    facet_map = fill_mapping_with_facets(SNAPSHOT_MAPPING, results, params)
    vals = dict(
        apps=d_results[(page - 1) * page_length:page * page_length],
        page=page,
        prev_page=(page - 1),
        next_page=(page + 1),
        more_pages=more_pages,
        sort_by=sort_by,
        show_starter_apps=starter_apps,
        include_unapproved=include_unapproved,
        facet_map=facet_map,
        facets=results.get("facets", []),
        query_str=request.META['QUERY_STRING'],
        search_query=params.get('search', [""])[0],
        persistent_params=persistent_params,
    )
    return render(request, template, vals)