Esempio n. 1
0
def candidates_view(request):
    politician_list = (Politician.objects.filter(
        statistic__id__gt=0).distinct().order_by('first_name', 'last_name'))

    states = State.objects.all().order_by('name')
    categories = (Category.objects.filter(
        statistic__id__gt=0).order_by('name').distinct())

    category = request.GET.get('category', None)
    state = request.GET.get('state', None)
    search = request.GET.get('search', None)

    per_site = request.GET.get('per_page', 10)
    page = request.GET.get('page', 1)

    request.GET = request.GET.copy()
    stat_cookie = get_cookie(request, 'statistics', {})
    if 'evaluate' in request.GET and stat_cookie == {}:
        request.GET.pop('evaluate')

    if category and category != '0':
        if 'evaluate' in request.GET:
            stats = get_cookie(request, 'statistics', {})
            val = stats.get('category_%s' % category, 0)
        else:
            val = Question.objects.filter(category__id=category).aggregate(
                Sum('preferred_answer'))['preferred_answer__sum']

        politician_list = (Politician.get_politicians_by_category(
            category, (int(val) * 10)))

    if state and state != '0':
        politician_list = politician_list.filter(state=state)

    if search:
        politician_list = politician_list.filter(
            Q(last_name__icontains=search) | Q(first_name__icontains=search)
            | Q(state__name__icontains=search)
            | Q(party__name__icontains=search)
            | Q(party__shortname__icontains=search))

    paginator = Paginator(politician_list, per_site)

    try:
        politicians = paginator.page(page)
    except PageNotAnInteger:
        politicians = paginator.page(1)
    except EmptyPage:
        politicians = paginator.page(paginator.num_pages)

    # remove the page parameter from url
    if request.GET.get('page', None):
        request.GET.pop('page')

    return render(request, 'core/candidates/index.html', {
        'politicians': politicians,
        'categories': categories,
        'states': states,
    })
Esempio n. 2
0
def candidates_view(request):
    politician_list = (
        Politician.objects.
        filter(statistic__id__gt=0).distinct().
        order_by('first_name', 'last_name'))

    states          = State.objects.all().order_by('name')
    categories      = (
        Category.objects.filter(statistic__id__gt=0).
        order_by('name').distinct())

    category = request.GET.get('category', None)
    state    = request.GET.get('state', None)
    search   = request.GET.get('search', None)

    per_site = request.GET.get('per_page', 10)
    page     = request.GET.get('page',      1)

    request.GET = request.GET.copy()
    stat_cookie = get_cookie(request, 'statistics', {})
    if 'evaluate' in request.GET and stat_cookie == {}:
        request.GET.pop('evaluate')

    if category and category != '0':
        if 'evaluate' in request.GET:
            stats = get_cookie(request, 'statistics', {})
            val = stats.get('category_%s' % category, 0)
        else:
            val = Question.objects.filter(
                category__id=category
            ).aggregate(Sum('preferred_answer'))['preferred_answer__sum']

        politician_list = (
            Politician.get_politicians_by_category(
                category, (int(val) * 10)))

    if state and state != '0':
        politician_list = politician_list.filter(state=state)

    if search:
        politician_list = politician_list.filter(
            Q(last_name__icontains=search) |
            Q(first_name__icontains=search) |
            Q(state__name__icontains=search) |
            Q(party__name__icontains=search) |
            Q(party__shortname__icontains=search)
        )

    paginator = Paginator(politician_list, per_site)

    try:
        politicians = paginator.page(page)
    except PageNotAnInteger:
        politicians = paginator.page(1)
    except EmptyPage:
        politicians = paginator.page(paginator.num_pages)

    # remove the page parameter from url
    if request.GET.get('page', None):
        request.GET.pop('page')

    return render(
        request,
        'core/candidates/index.html',
        {
            'politicians' : politicians,
            'categories'  : categories,
            'states'      : states,
        }
    )