def assert_invalid_if_field_is_non_sense(self, field_key): form_data = self.data.copy() form_data[field_key] = 'non_sense_hohoho_&^%$#' survey_batch_filter_form = SurveyBatchFilterForm(form_data) self.assertFalse(survey_batch_filter_form.is_valid()) message = "Select a valid choice. That choice is not one of the available choices." self.assertEqual([message], survey_batch_filter_form.errors[field_key])
def download(request): survey_batch_filter_form = SurveyBatchFilterForm() if request.GET: survey_batch_filter_form = SurveyBatchFilterForm(request.GET) if survey_batch_filter_form.is_valid(): return _process_export(survey_batch_filter_form) return render(request, 'aggregates/download_excel.html', {'survey_batch_filter_form': survey_batch_filter_form})
def test_invalid_if_batch_is_not_under_survey(self): form_data = self.data.copy() form_data['survey'] = self.survey.id form_data['batch'] = self.batch_1.id survey_batch_filter_form = SurveyBatchFilterForm(form_data) self.assertFalse(survey_batch_filter_form.is_valid()) message = "Select a valid choice. That choice is not one of the available choices." self.assertEqual([message], survey_batch_filter_form.errors['batch'])
def assert_invalid_if_field_does_not_exist(self, field_key): form_data = self.data.copy() non_existing_survey_id = 666 form_data[field_key] = non_existing_survey_id survey_batch_filter_form = SurveyBatchFilterForm(form_data) self.assertFalse(survey_batch_filter_form.is_valid()) message = "Select a valid choice. That choice is not one of the available choices." self.assertEqual([message], survey_batch_filter_form.errors[field_key])
def download(request): survey_batch_filter_form = SurveyBatchFilterForm(data=request.GET) locations_filter = LocationsFilterForm(data=request.GET) last_selected_loc = locations_filter.last_location_selected if request.GET and request.GET.get('action'): survey_batch_filter_form = SurveyBatchFilterForm(data=request.GET) if survey_batch_filter_form.is_valid(): batch = survey_batch_filter_form.cleaned_data['batch'] survey = survey_batch_filter_form.cleaned_data['survey'] multi_option = survey_batch_filter_form.cleaned_data[ 'multi_option'] restricted_to = None if last_selected_loc: restricted_to = [ last_selected_loc, ] if request.GET.get('action') == 'Email Spreadsheet': composer = ResultComposer( request.user, ResultsDownloadService(batch=batch, survey=survey, restrict_to=restricted_to, multi_display=multi_option)) send_mail.delay(composer) messages.warning( request, "Email would be sent to you shortly. This could take a while." ) else: download_service = ResultsDownloadService( batch=batch, survey=survey, restrict_to=restricted_to, multi_display=multi_option) file_name = '%s%s' % ( '%s-%s-' % (last_selected_loc.type.name, last_selected_loc.name) if last_selected_loc else '', batch.name if batch else survey.name) generate_result_link.delay(request.user, download_service, file_name) messages.warning( request, "Download is in progress. Download link would be available to you shortly" ) loc_types = LocationType.in_between() return render( request, 'aggregates/download_excel.html', { 'survey_batch_filter_form': survey_batch_filter_form, 'locations_filter': locations_filter, 'export_url': '%s?%s' % (reverse('excel_report'), request.META['QUERY_STRING']), 'location_filter_types': loc_types })
def download(request): request_data = request.GET if request.method == 'GET' else request.POST survey_batch_filter_form = SurveyBatchFilterForm(data=request_data) locations_filter = LocationsFilterForm(data=request_data) last_selected_loc = locations_filter.last_location_selected if request_data and request_data.get('action'): survey_batch_filter_form = SurveyBatchFilterForm(data=request_data) if survey_batch_filter_form.is_valid(): batch = survey_batch_filter_form.cleaned_data['batch'] survey = survey_batch_filter_form.cleaned_data['survey'] multi_option = \ survey_batch_filter_form.cleaned_data['multi_option'] restricted_to = None if last_selected_loc: restricted_to = [ last_selected_loc, ] if request_data.get('action') == 'Email Spreadsheet': composer = ResultComposer( request.user, ResultsDownloadService(batch, survey=survey, restrict_to=restricted_to, multi_display=multi_option)) send_mail.delay(composer) messages.warning( request, "Email would be sent to\ you shortly. This could take a while.") else: download_service = ResultsDownloadService( batch, survey=survey, restrict_to=restricted_to, multi_display=multi_option) file_name = '%s%s' % ( '%s-%s-' % (last_selected_loc.type.name, last_selected_loc.name) if last_selected_loc else '', batch.name if batch else survey.name) reports_df = download_service.generate_interview_reports() response = HttpResponse(content_type='application/zip') string_buf = StringIO() reports_df.to_csv(string_buf, columns=reports_df.columns[1:]) string_buf.seek(0) file_contents = string_buf.read() string_buf.close() zip_file = InMemoryZip() zip_file = zip_file.append("%s.csv" % file_name, file_contents) response['Content-Disposition'] = 'attachment;\ filename=%s.zip' % file_name response.write(zip_file.read()) # exclude interview id if not request.is_ajax(): messages.info(request, "Download successfully downloaded") return response loc_types = LocationType.in_between() return render( request, 'aggregates/download_excel.html', { 'survey_batch_filter_form': survey_batch_filter_form, 'locations_filter': locations_filter, 'export_url': '%s?%s' % (reverse('excel_report'), request.META['QUERY_STRING']), 'location_filter_types': loc_types })
def test_empty_batch_is_valid(self): data = self.data.copy() data['batch'] = '' survey_batch_filter_form = SurveyBatchFilterForm(data) self.assertTrue(survey_batch_filter_form.is_valid())
def test_valid(self): survey_batch_filter_form = SurveyBatchFilterForm(self.data) self.assertTrue(survey_batch_filter_form.is_valid())
def download(request): request_data = request.GET if request.method == 'GET' else request.POST survey_batch_filter_form = SurveyBatchFilterForm(data=request_data) locations_filter = LocationsFilterForm(data=request_data) last_selected_loc = locations_filter.last_location_selected if request_data and request_data.get('action'): survey_batch_filter_form = SurveyBatchFilterForm(data=request_data) if survey_batch_filter_form.is_valid(): batch = survey_batch_filter_form.cleaned_data['batch'] survey = survey_batch_filter_form.cleaned_data['survey'] multi_option = \ survey_batch_filter_form.cleaned_data['multi_option'] restricted_to = None if last_selected_loc: restricted_to = [last_selected_loc, ] if request_data.get('action') == 'Email Spreadsheet': composer = ResultComposer( request.user, ResultsDownloadService( batch, survey=survey, restrict_to=restricted_to, multi_display=multi_option)) send_mail.delay(composer) messages.warning( request, "Email would be sent to\ you shortly. This could take a while.") else: download_service = ResultsDownloadService( batch, survey=survey, restrict_to=restricted_to, multi_display=multi_option) file_name = '%s%s' % ('%s-%s-' % ( last_selected_loc.type.name, last_selected_loc.name) if last_selected_loc else '', batch.name if batch else survey.name) reports_df = download_service.generate_interview_reports() response = HttpResponse(content_type='application/zip') string_buf = StringIO() reports_df.to_csv(string_buf, columns=reports_df.columns[1:]) string_buf.seek(0) file_contents = string_buf.read() string_buf.close() zip_file = InMemoryZip() zip_file = zip_file.append("%s.csv" % file_name, file_contents) response['Content-Disposition'] = 'attachment;\ filename=%s.zip' % file_name response.write(zip_file.read()) # exclude interview id if not request.is_ajax(): messages.info(request, "Download successfully downloaded") return response loc_types = LocationType.in_between() return render(request, 'aggregates/download_excel.html', {'survey_batch_filter_form': survey_batch_filter_form, 'locations_filter': locations_filter, 'export_url': '%s?%s' % (reverse('excel_report'), request.META['QUERY_STRING']), 'location_filter_types': loc_types})