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)
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)
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
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)
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)
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)
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)