Bug 8007: (QA followup) Add error handling when generating the pdf

If error occurs when generating the pdf, it would be better to get an
encapsulated error instead of the "software error" message in the pdf
file.
To test this patch I added this change:

b/Koha/Borrower/Discharge.pm
-115,6 +115,7 @@ sub generate_as_pdf {
     say $html_fh $html_content;
     close $html_fh;
     my $pdf = PDF::FromHTML->new( encoding => 'utf-8' );
+    $html_path .= "poeut";
     $pdf->load_file( $html_path );
     $pdf->convert;

Signed-off-by: Tomas Cohen Arazi <tomascohen@gmail.com>
This commit is contained in:
Jonathan Druart 2015-04-28 10:59:42 +02:00 committed by Tomas Cohen Arazi
parent ce67173c3a
commit a333a13da5
4 changed files with 59 additions and 28 deletions

View File

@ -18,6 +18,14 @@
<div class="yui-b">
<div class="yui-g">
<h3>Discharge</h3>
[% FOR message IN messages %]
<div class="dialog [% message.type %]">
[% IF message.code == "unable_to_generate_pdf" %]
An error occurs when generating the pdf file.
Please contact the administrator to resolve this problem.
[% END %]
</div>
[% END %]
[% UNLESS can_be_discharged %]
<p>Cannot edit discharge: borrower has issues.</p>
[% ELSE %]

View File

@ -23,6 +23,15 @@
<div class="span10">
<div id="discharge" class="maincontainer">
<h1>Discharge</h1>
[% FOR message IN messages %]
<div class="dialog [% message.type %]">
[% IF message.code == "unable_to_generate_pdf" %]
An error occurs when generating the pdf file.
Please contact the staff to resolve this problem.
[% END %]
</div>
[% END %]
[% IF success %]
<p>Your discharge request has been sent. Your discharge will be available on this page within a few days.</p>
[% ELSIF available %]
@ -31,7 +40,7 @@
<p>Your discharge will be available on this page within a few days.</p>
[% ELSIF has_issues %]
<p>You cannot be discharged, you have issues. Please return items before asking for a discharge.</p>
[% ELSE %]
[% ELSIF not messages %]
<h2>What is a discharge?</h2>
<p>This document certifies that you have returned all borrowed items. It is sometimes asked during a file transfer from a school to another. The discharge is sent by us to your school. You will also find it available on your reader account.</p>
<p><strong>Warning</strong>: This request is only valid if you are in good standing with the library. Once the application is made, you can not borrow library materials.</p>

View File

@ -28,6 +28,7 @@ Allows librarian to edit and/or manage borrowers' discharges
=cut
use Modern::Perl;
use Carp;
use CGI qw( -utf8 );
use C4::Auth;
@ -75,20 +76,26 @@ if ( $input->param('borrowernumber') ) {
borrowernumber => $borrowernumber
});
}
my $pdf_path = Koha::Borrower::Discharge::generate_as_pdf(
{ borrowernumber => $borrowernumber, } );
eval {
my $pdf_path = Koha::Borrower::Discharge::generate_as_pdf(
{ borrowernumber => $borrowernumber, } );
binmode(STDOUT);
print $input->header(
-type => 'application/pdf',
-charset => 'utf-8',
-attachment => "discharge_$borrowernumber.pdf",
);
open my $fh, '<', $pdf_path;
my @lines = <$fh>;
close $fh;
print @lines;
exit;
binmode(STDOUT);
print $input->header(
-type => 'application/pdf',
-charset => 'utf-8',
-attachment => "discharge_$borrowernumber.pdf",
);
open my $fh, '<', $pdf_path;
my @lines = <$fh>;
close $fh;
print @lines;
exit;
};
if ( $@ ) {
carp $@;
$template->param( messages => [ {type => 'error', code => 'unable_to_generate_pdf'} ] );
}
}
$template->param(

View File

@ -18,6 +18,7 @@
# along with Koha; if not, see <http://www.gnu.org/licenses>.
use Modern::Perl;
use Carp;
use C4::Auth qw(:DEFAULT get_session);
use CGI qw( -utf8 );
@ -55,21 +56,27 @@ if ( $op eq 'request' ) {
}
}
elsif ( $op eq 'get' ) {
my $pdf_path = Koha::Borrower::Discharge::generate_as_pdf({
borrowernumber => $loggedinuser
});
eval {
my $pdf_path = Koha::Borrower::Discharge::generate_as_pdf({
borrowernumber => $loggedinuser
});
binmode(STDOUT);
print $input->header(
-type => 'application/pdf',
-charset => 'utf-8',
-attachment => "discharge_$loggedinuser.pdf",
);
open my $fh, '<', $pdf_path;
my @lines = <$fh>;
close $fh;
print @lines;
exit;
binmode(STDOUT);
print $input->header(
-type => 'application/pdf',
-charset => 'utf-8',
-attachment => "discharge_$loggedinuser.pdf",
);
open my $fh, '<', $pdf_path;
my @lines = <$fh>;
close $fh;
print @lines;
exit;
};
if ( $@ ) {
carp $@;
$template->param( messages => [ {type => 'error', code => 'unable_to_generate_pdf'} ] );
}
}
else {
my $pending = Koha::Borrower::Discharge::count({