示例#1
0
 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)
示例#2
0
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)
示例#3
0
    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)