Ejemplo n.º 1
0
def _personas(request):
    """Handle the request for persona searches."""

    initial = dict(request.GET.items())

    # Ignore these filters since return the same results for Firefox
    # as for Thunderbird, etc.
    initial.update(appver=None, platform=None)

    form = ESSearchForm(initial, type=amo.ADDON_PERSONA)
    form.is_valid()

    qs = Addon.search_public()
    filters = ['sort']
    mapping = {
        'downloads': '-weekly_downloads',
        'users': '-average_daily_users',
        'rating': '-bayesian_rating',
        'created': '-created',
        'name': 'name.raw',
        'updated': '-last_updated',
        'hotness': '-hotness'
    }
    results = _filter_search(request,
                             qs,
                             form.cleaned_data,
                             filters,
                             sorting=mapping,
                             sorting_default='-average_daily_users',
                             types=[amo.ADDON_PERSONA])

    form_data = form.cleaned_data.get('q', '')

    search_opts = {}
    search_opts['limit'] = form.cleaned_data.get('pp', DEFAULT_NUM_PERSONAS)
    page = form.cleaned_data.get('page') or 1
    search_opts['offset'] = (page - 1) * search_opts['limit']

    pager = amo.utils.paginate(request, results, per_page=search_opts['limit'])
    categories, filter, base, category = personas_listing_view(request)
    context = {
        'pager': pager,
        'form': form,
        'categories': categories,
        'query': form_data,
        'filter': filter,
        'search_placeholder': 'themes'
    }
    return render(request, 'search/personas.html', context)
Ejemplo n.º 2
0
def _personas(request):
    """Handle the request for persona searches."""

    initial = dict(request.GET.items())

    # Ignore these filters since return the same results for Firefox
    # as for Thunderbird, etc.
    initial.update(appver=None, platform=None)

    form = ESSearchForm(initial, type=amo.ADDON_PERSONA)
    form.is_valid()

    qs = Addon.search_public()
    filters = ['sort']
    mapping = {
        'downloads': '-weekly_downloads',
        'users': '-average_daily_users',
        'rating': '-bayesian_rating',
        'created': '-created',
        'name': 'name.raw',
        'updated': '-last_updated',
        'hotness': '-hotness'}
    results = _filter_search(request, qs, form.cleaned_data, filters,
                             sorting=mapping,
                             sorting_default='-average_daily_users',
                             types=[amo.ADDON_PERSONA])

    form_data = form.cleaned_data.get('q', '')

    search_opts = {}
    search_opts['limit'] = form.cleaned_data.get('pp', DEFAULT_NUM_PERSONAS)
    page = form.cleaned_data.get('page') or 1
    search_opts['offset'] = (page - 1) * search_opts['limit']

    pager = amo.utils.paginate(request, results, per_page=search_opts['limit'])
    categories, filter, base, category = personas_listing_view(request)
    context = {
        'pager': pager,
        'form': form,
        'categories': categories,
        'query': form_data,
        'filter': filter,
        'search_placeholder': 'themes'}
    return render(request, 'search/personas.html', context)