Exemplo n.º 1
0
 def filter_voters(self, voters, q_param, request=None):
     headers = self.get_voters_list_headers(request)
     search = self.get_voters_search_fields(request)
     bool_keys = self.get_voters_bool_keys_map(request)
     extra = self.get_voters_extra_headers(request)
     filters = get_filters(q_param, headers, search, bool_keys, extra)
     return voters.filter(filters)
Exemplo n.º 2
0
 def filter_voters(self, voters, q_param, request=None):
     headers = self.get_voters_list_headers(request)
     search = self.get_voters_search_fields(request)
     bool_keys = self.get_voters_bool_keys_map(request)
     extra = self.get_voters_extra_headers(request)
     filters = get_filters( q_param, headers, search, bool_keys, extra)
     return voters.filter(filters)
Exemplo n.º 3
0
def find_elections(request):
    order_by = request.GET.get('order', 'completed_at')
    order_type = request.GET.get('order_type', 'desc')
    start_date = request.GET.get('start_date', None)
    end_date = request.GET.get('end_date', None)
    q = request.GET.get('q', '')

    # basic filters
    filter = {
        'trial': False,
        'completed_at__isnull': False,
    }

    """
    _all = request.GET.get('full', 0)
    if not _all:
        filter['include_in_reports'] = True
    """

    # filter by date
    if start_date:
        filter['voting_starts_at__gte'] = datetime.strptime(start_date, "%d %b %Y")

    if end_date:
        filter['voting_starts_at__lte'] = datetime.strptime(end_date, "%d %b %Y")

    # filter by query
    q_filters = get_filters(
        q,
        REPORT_TABLE_HEADERS,
        REPORT_SEARCH_FIELDS,
        REPORT_BOOL_KEYS_MAP
    )

    if not order_by in ELECTION_TABLE_HEADERS:
        order_by = 'completed_at'

    elections = Election.objects.filter(**filter).order_by(order_by)
    elections = elections.filter(q_filters)

    if order_type == 'desc':
        elections = elections.reverse()

    return elections
Exemplo n.º 4
0
def find_elections(request):
    order_by = request.GET.get('order', 'completed_at')
    order_type = request.GET.get('order_type', 'desc')
    start_date = request.GET.get('start_date', None)
    end_date = request.GET.get('end_date', None)
    q = request.GET.get('q', '')

    # basic filters
    filter = {
        'trial': False,
        'completed_at__isnull': False,
    }

    """
    _all = request.GET.get('full', 0)
    if not _all:
        filter['include_in_reports'] = True
    """

    # filter by date
    if start_date:
        filter['voting_starts_at__gte'] = datetime.strptime(start_date, "%d %b %Y")

    if end_date:
        filter['voting_starts_at__lte'] = datetime.strptime(end_date, "%d %b %Y")

    # filter by query
    q_filters = get_filters(
        q,
        REPORT_TABLE_HEADERS,
        REPORT_SEARCH_FIELDS,
        REPORT_BOOL_KEYS_MAP
    )

    if not order_by in ELECTION_TABLE_HEADERS:
        order_by = 'completed_at'

    elections = Election.objects.filter(**filter).order_by(order_by)
    elections = elections.filter(q_filters)

    if order_type == 'desc':
        elections = elections.reverse()

    return elections
Exemplo n.º 5
0
    def get(request, *args, **kwargs):
        page = int(request.GET.get('page', 1))
        limit = int(request.GET.get('limit', 10))
        q_param = request.GET.get('q', '')

        default_elections_per_page = getattr(settings, 'ELECTIONS_PER_PAGE',
                                             20)
        elections_per_page = request.GET.get('limit',
                                             default_elections_per_page)
        try:
            elections_per_page = int(elections_per_page)
        except:
            elections_per_page = default_elections_per_page
        order_by = request.GET.get('order', 'created_at')
        order_type = request.GET.get('order_type', 'desc')
        if not order_by in ELECTION_TABLE_HEADERS:
            order_by = 'name'

        elections = Election.objects.administered_by(request.admin)
        nr_unfiltered_elections = elections.count()
        if nr_unfiltered_elections == 0:
            return HttpResponseRedirect(reverse('election_create'))

        elections = elections.filter(
            get_filters(q_param, ELECTION_TABLE_HEADERS,
                        ELECTION_SEARCH_FIELDS, ELECTION_BOOL_KEYS_MAP))
        elections = elections.order_by(order_by)
        if order_type == 'desc':
            elections = elections.reverse()

        context = {
            'is_superadmin': request.admin.superadmin_p,
            'elections_administered': elections,
            'election_table_headers': ELECTION_TABLE_HEADERS.iteritems(),
            'q': q_param,
            'page': page,
            'elections_per_page': elections_per_page,
        }
        return render_template(request, "index", context)
Exemplo n.º 6
0
    def get(request, *args, **kwargs):
        page = int(request.GET.get('page', 1))
        limit = int(request.GET.get('limit', 10))
        q_param = request.GET.get('q', '')

        default_elections_per_page = getattr(settings, 'ELECTIONS_PER_PAGE', 20)
        elections_per_page = request.GET.get('limit', default_elections_per_page)
        try:
            elections_per_page = int(elections_per_page)
        except:
            elections_per_page = default_elections_per_page
        order_by=request.GET.get('order', 'created_at')
        order_type = request.GET.get('order_type', 'desc')
        if not order_by in ELECTION_TABLE_HEADERS:
            order_by = 'name'

        elections = Election.objects.administered_by(request.admin)
        nr_unfiltered_elections = elections.count()
        if nr_unfiltered_elections == 0:
            return HttpResponseRedirect(reverse('election_create'))

        elections = elections.filter(get_filters(q_param, ELECTION_TABLE_HEADERS,
                                                 ELECTION_SEARCH_FIELDS,
                                                 ELECTION_BOOL_KEYS_MAP))
        elections = elections.order_by(order_by)
        if order_type == 'desc':
            elections = elections.reverse()

        context = {
            'is_superadmin': request.admin.superadmin_p,
            'elections_administered': elections,
            'election_table_headers': ELECTION_TABLE_HEADERS.iteritems(),
            'q': q_param,
            'page': page,
            'elections_per_page': elections_per_page,
        }
        return render_template(request, "index", context)
Exemplo n.º 7
0
from functools import partial
from django.test import TestCase

from zeus.utils import parse_q_param, get_filters, VOTER_TABLE_HEADERS, \
    VOTER_SEARCH_FIELDS, VOTER_BOOL_KEYS_MAP, VOTER_EXTRA_HEADERS


get_voters_filters = lambda inp: get_filters(inp, VOTER_TABLE_HEADERS,
                                                  VOTER_SEARCH_FIELDS,
                                                  VOTER_BOOL_KEYS_MAP,
                                                  VOTER_EXTRA_HEADERS)

class TestUtils(TestCase):

    def test_q_args(self):
        q = "voter- +vote"
        self.assertEqual(parse_q_param(q), ('voter-', ['+vote']))

    def test_voters_filters(self):
        qs = get_voters_filters("+voted")
        self.assertEqual(qs.children[1], ('cast_votes__id__isnull', False))

        qs = get_voters_filters("-voted")
        self.assertEqual(qs.children[1], ('cast_votes__id__isnull', True))

class TestUniGovGr(TestCase):

    def test_count(self):
        from zeus.election_modules.unigovgr import UNIGOV_COUNT
        S, G, A, B = 115, 178, 56, 74
        self.assertEqual(UNIGOV_COUNT(A, B, G, S)[1], 66.0)
Exemplo n.º 8
0
from functools import partial
from django.test import TestCase

from zeus.utils import parse_q_param, get_filters, VOTER_TABLE_HEADERS, \
    VOTER_SEARCH_FIELDS, VOTER_BOOL_KEYS_MAP, VOTER_EXTRA_HEADERS

get_voters_filters = lambda inp: get_filters(
    inp, VOTER_TABLE_HEADERS, VOTER_SEARCH_FIELDS, VOTER_BOOL_KEYS_MAP,
    VOTER_EXTRA_HEADERS)


class TestUtils(TestCase):
    def test_q_args(self):
        q = "voter- +vote"
        self.assertEqual(parse_q_param(q), ('voter-', ['+vote']))

    def test_voters_filters(self):
        qs = get_voters_filters("+voted")
        self.assertEqual(qs.children[1], ('cast_votes__id__isnull', False))

        qs = get_voters_filters("-voted")
        self.assertEqual(qs.children[1], ('cast_votes__id__isnull', True))


class TestUniGovGr(TestCase):
    def test_count(self):
        from zeus.election_modules.unigovgr import UNIGOV_COUNT
        S, G, A, B = 115, 178, 56, 74
        self.assertEqual(UNIGOV_COUNT(A, B, G, S)[1], 66.0)
        S, G, A, B = 115, 178, 33, 50
        self.assertEqual(UNIGOV_COUNT(A, B, G, S)[1], 39.0)