def test_invalid_when_if_year_is_does_not_have_questionnaire(self): form_data = self.form_data.copy() selected_year = date.today().year form_data['year'] = [selected_year] export_filter = ExportFilterForm(form_data) self.assertFalse(export_filter.is_valid()) error_message = "Select a valid choice. %d is not one of the available choices." % selected_year self.assertIn(error_message, export_filter.errors['year'])
def post(self, *args, **kwargs): years = None filter_form = ExportFilterForm(self.request.POST) all_questionnaires = Questionnaire.objects.all() export_service = ExportToTextService(questionnaires=all_questionnaires) if filter_form.is_valid(): years = filter_form.cleaned_data['year'] countries = filter_form.cleaned_data['countries'] themes = filter_form.cleaned_data['themes'] export_filter_params = {'year__in': years, 'region__in': filter_form.cleaned_data['regions']} questionnaires = all_questionnaires.filter(**export_filter_params) export_service = ExportToTextService(questionnaires=questionnaires, countries=countries, themes=themes) formatted_responses = export_service.get_formatted_responses() response = HttpResponse(content_type='text/csv') response['Content-Disposition'] = 'attachment; filename="%s-%s.txt"' % ('data', '_'.join(years) or self.ALL_QUESTIONNAIRES) response.write("\r\n".join(formatted_responses)) return response
def test_valid_when_year_is_blank(self): form_data = self.form_data.copy() form_data['year'] = '' export_filter = ExportFilterForm(form_data) self.assertTrue(export_filter.is_valid())
def test_valid_when_themes_are_blank(self): form_data = self.form_data.copy() form_data['themes'] = '' export_filter = ExportFilterForm(form_data) self.assertTrue(export_filter.is_valid())
def test_valid(self): export_filter = ExportFilterForm(self.form_data) self.assertTrue(export_filter.is_valid())