def form_with_responses(request, number, version): form = forms_service.form_with_responses(number, version) exclude = ['user', 'created', 'modified'] update = { 'username': lambda f: f.user.username, 'date': lambda f: _format_date(f.modified), 'fields': lambda f: [model_to_dict(fld, 'form') for fld in f.formfield_set.all()], 'responses': lambda f: [_response_to_dict(r) for r in f.formresponse_set.all()], } return JSONResponse({'form': model_to_dict(form, *exclude, **update)})
def test_returns_form_with_responses_and_fields_loaded(self): form1 = mommy.make(Form, number=1, version=1) field1 = mommy.make(FormField, form=form1, kind='short-answer') response1 = mommy.make(FormResponse, form=form1) field_response1 = mommy.make( FormFieldResponse, form_response=response1, form_field=field1, details={'answer': 'ok'} ) form2 = forms_service.form_with_responses(1, 1) with self.assertNumQueries(0): field2 = form2.formfield_set.all()[0] response2 = form2.formresponse_set.all()[0] field_response2 = response2.formfieldresponse_set.all()[0] self.assertEqual(form1.id, form2.id) self.assertEqual(field1.id, field2.id) self.assertEqual(response1.id, response2.id) self.assertEqual(field_response1.id, field_response2.id)
def form_with_responses_csv(request, number, version): form = forms_service.form_with_responses(number, version) response = HttpResponse(content_type='text/csv') response['Content-Disposition'] = 'attachment; filename=responses.csv' form_responses_csv_service.create_csv(form, response) return response
def test_returns_form_with_empty_responses_list_if_no_responses(self): mommy.make(Form, number=1, version=1) form2 = forms_service.form_with_responses(1, 1) self.assertEqual(list(form2.formresponse_set.all()), [])