def calibration_report(self):
        """ Process form paramters, create a pdf calibration report form
        and generate a thumbnail view.
        """
        form = Form(ReportSchema(), buttons=("submit",))

        if "submit" in self.request.POST:
            #log.info("submit: %s", self.request.POST)
            controls = self.request.POST.items()
            try:
                appstruct = form.validate(controls)
                rendered_form = form.render(appstruct)

                report = self.populate_data(appstruct)
                self.makedir_write_files(appstruct)
                pdf = WasatchSinglePage(filename=report.filename,
                                        report=report)
                pdf.write_thumbnail()

                return {"form":rendered_form, "appstruct":appstruct}

            except ValidationFailure as exc: 
                #log.exception(exc)
                log.info("Validation failure")
                return {'form':exc.render()} 

        return {"form":form.render()}
    def test_can_return_blob_main_pdf(self):
        from calibrationreport.pdfgenerator import WasatchSinglePage

        pdf = WasatchSinglePage(return_blob=True)
        blob_data = pdf.return_blob()

        self.assertTrue(size_range(len(blob_data), 101194, ok_range=5000))
Esempio n. 3
0
    def generate_calibration_report(self, appstruct, checkout_id):
        """ Use the generator object from the calibration report module
        to create a single page pdf.
        """

        report = EmptyReport()
        report.serial = appstruct["serial"]
        report.coefficient_0 = appstruct["coefficient_0"]
        report.coefficient_1 = appstruct["coefficient_1"]
        report.coefficient_2 = appstruct["coefficient_2"]
        report.coefficient_3 = appstruct["coefficient_3"]
        pdf = WasatchSinglePage(report=report, return_blob=True)

        blob_data = pdf.return_blob()
        log.info("PDF report blob: %s", len(blob_data))
        new_file = File(filename="Calibration_Report.pdf",
                        file_data=blob_data)


        dbqry = DBSession.query(Checkout)
        checkout = dbqry.filter(Checkout.id == checkout_id).one()
        checkout.files.append(new_file)

        blob_data = pdf.return_thumbnail_blob()
        self.cache_blob(blob_data, checkout_id,
                        "calibration_report_thumbnail.png")
        log.info("thumbnail report blob: %s", len(blob_data))
        new_file = File(filename="calibration_report_thumbnail.png",
                        file_data=blob_data)

        dbqry = DBSession.query(Checkout)
        checkout = dbqry.filter(Checkout.id == checkout_id).one()
        checkout.files.append(new_file)
    def test_can_return_blob_thumbnail_from_pdf(self):
        from calibrationreport.pdfgenerator import WasatchSinglePage

        pdf = WasatchSinglePage(return_blob=True)
        blob_data = pdf.return_thumbnail_blob()

        self.assertTrue(size_range(len(blob_data), 198863, 
                                   ok_range=40000))
    def test_thumbnail_generation(self):
        # Create the default report
        from calibrationreport.pdfgenerator import WasatchSinglePage
        filename = "default.pdf"
        self.assertFalse(touch_erase(filename))
        pdf = WasatchSinglePage()
        self.assertTrue(file_range(filename, 101194, ok_range=5000))

        # Generate the thumbnail of the first page
        png_filename = pdf.write_thumbnail()

        # Verify the size is as epected
        self.assertTrue(file_range(png_filename, 198863, 
                                   ok_range=40000))