def test_get_all_indiv_fiscal_reports(self): # just to make sure: no reports are present in the database yet indiv_reports = IndividualFiscalReport.objects.filter(year=self.reference_date.year) self.assertEqual(len(indiv_reports), 0) reports = IndividualFiscalReport.getAllReports(self.reference_date.year) self.assertEqual(len(reports), 2) indiv_reports = IndividualFiscalReport.objects.filter(year=self.reference_date.year) self.assertEqual(len(indiv_reports), 2)
def individual_fiscal_report(request): msg = None if request.method == 'POST': year = request.POST.get('year', '') if year == '': msg = 'Please fill in a year.' else: contributor_id = request.POST.get('contributor', '') reportWriter = ReportWriter() response = HttpResponse(content_type="application/pdf") if contributor_id == '': reports = IndividualFiscalReport.getAllReports(year) if reports == []: msg = 'No contributors made enough donations in {0} for a fiscal report'.format(year) else: response["Content-Disposition"] = "attachment; filename='all_fiscal_reports_{0}.pdf'".format(str(year)) report_values = [IndividualFiscalReport.getValuesForRenderedReport(contributor=report.contributor, year=year) for report in reports] reportWriter.write_all_fiscal_reports(outputobject=response, report_values=report_values) return response else: contributor = Contributor.objects.get(pk=contributor_id) print 'year: {0}, contributor_id: {1}'.format(year, contributor_id) report_values = IndividualFiscalReport.getValuesForRenderedReport(contributor=contributor, year=year) if not report_values: print 'Total amount below minimum fiscal amount' msg = "Contributor {0} did not donate enough in {1} for a fiscal report".format(contributor, year) else: response["Content-Disposition"] = "attachment; filename='fiscal_report_{0}.pdf'".format(report_values['contributor'].encode('utf-8')) reportWriter.write_fiscal_report(outputobject=response, report_values=report_values) return response form = IndividualFiscalReportForm() context_data = { "individual_form": form, "report": "individual fiscal report", "app_label": "simplereports", } if msg: context_data['errors'] = msg context = RequestContext(request, context_data) return render_to_response("individual_fiscal_report.html", context)
def test_individual_fiscal_report(self): """ contributor 4 did not donate enough to receive a fiscal report. Only contributors 1, and 2 should receive a fiscal report for 2015. Contributor 3 receivers a fiscal report for 2014. """ # check contributor 1 ifr1 = IndividualFiscalReport(contributor=self.contributor1, year=self.reference_date.year) self.assertEqual(ifr1.full_clean(), None) # no error raised, nothing returned ifr1.save() self.assertEqual(ifr1.report_number, 1) # check contributor 2 ifr2 = IndividualFiscalReport(contributor=self.contributor2, year=self.reference_date.year) self.assertEqual(ifr2.full_clean(), None) # no error raised, nothing returned ifr2.save() self.assertEqual(ifr2.report_number, 2) # check contributor 3 ifr3 = IndividualFiscalReport(contributor=self.contributor3, year=self.reference_date.year - 1) self.assertEqual(ifr3.full_clean(), None) # no error raised, nothing returned ifr3.save() self.assertEqual(ifr3.report_number, 1) # cannot create a second report for contributor 1 ifr4 = IndividualFiscalReport(contributor=self.contributor1, year=self.reference_date.year) self.assertRaises(ValidationError, ifr4.full_clean)