def get_queryset(self): if self.request.DATA.get("not_assigned"): return PollResponse.objects(**dict(poll=None)).order_by("-created_at") else: fields = PollResponse._fields_ordered query_params = {key: value or None for key, value in self.request.GET.items() if key in fields} return PollResponse.objects(**query_params).order_by("-created_at")
def get_queryset(self): if self.request.DATA.get('not_assigned'): return PollResponse.objects(**dict(poll=None)).order_by('-created_at') else: fields = PollResponse._fields_ordered query_params = {key: value or None for key, value in self.request.GET.items() if key in fields} return PollResponse.objects(**query_params).order_by('-created_at')
def test_post_export_poll_response(self): poll_response = PollResponse(**self.poll_response_attr).save() poll_response_attr2 = self.poll_response_attr.copy() poll_response_attr2['text'] = "NECOCPoll %s whatever2"%self.poll['keyword'] poll_response2 = PollResponse(**poll_response_attr2).save() self.login_user() response = self.client.get('/export/poll-responses/%s/'%str(self.poll.id)) self.assertEquals(200, response.status_code) self.assertEquals(response.get('Content-Type'), 'text/csv') file_name = "disaster_space_responses.csv" self.assertEquals(response.get('Content-Disposition'), 'attachment; filename="%s"' % file_name) contents = "%s\r\n%s\r\n%s\r\n%s" % ("".join('sep=;'), "".join(self.headings), "".join(self.get_poll_response_csv_row(poll_response)), "".join(self.get_poll_response_csv_row(poll_response2))) self.assertEqual(contents, response.content)
def test_should_know_its_number_of_responses(self): poll = Poll(**self.poll).save() poll_response_attr = dict(phone_no='123455', text="NECOC There is a fire", relayer_id=234, run_id=23243, poll=poll) poll_response = PollResponse(**poll_response_attr).save() self.assertEqual(1, poll.number_of_responses()) self.assertIn(poll_response, poll.responses())
def test_exports_poll_responses(self): response = PollResponse(**self.poll_response_attr).save() poll_response_attr2 = self.poll_response_attr.copy() poll_response_attr2[ 'text'] = "NECOCPoll %s whatever2" % self.poll['keyword'] response2 = PollResponse(**poll_response_attr2).save() expected_data = [ self.delimiter_line, self.headings, self.get_poll_response_csv_row(response), self.get_poll_response_csv_row(response2) ] export_poll_service = ExportPollResponsesService(self.poll) actual_data = export_poll_service.get_formatted_responses() self.assertEqual(len(expected_data), len(actual_data)) self.assertIn(expected_data[0], actual_data) self.assertIn(expected_data[1], actual_data) self.assertIn(expected_data[2], actual_data)
def test_should_get_a_list_of_polls(self): poll = Poll(**self.poll_to_post).save() poll_response_attr = dict(phone_no='123455', text="NECOC There is a fire", relayer_id=234, run_id=23243, poll=poll) PollResponse(**poll_response_attr).save() response = self.client.get(self.POLL_ENDPOINT, format='json') self.assertEqual(200, response.status_code) self.assertEqual(1, len(response.data)) expected_poll = self.poll_to_post.copy() expected_poll['number_of_responses'] = 1 self.assertDictContainsSubset(expected_poll, response.data[0])
def responses(self): from dms.models import PollResponse return PollResponse.objects(poll=self)
def __init__(self, poll): self.poll = poll self.responses = PollResponse.objects(poll=self.poll)