[open-ils-commits] [GIT] Evergreen ILS branch rel_2_9 updated. 9516f19afd7e686c4dffa137d90c1afa76c5c372
Evergreen Git
git at git.evergreen-ils.org
Wed Aug 24 12:53:18 EDT 2016
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Evergreen ILS".
The branch, rel_2_9 has been updated
via 9516f19afd7e686c4dffa137d90c1afa76c5c372 (commit)
from 9e2afb458bd823cb43c81f4deec773f8f74a4b57 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 9516f19afd7e686c4dffa137d90c1afa76c5c372
Author: Galen Charlton <gmc at esilibrary.com>
Date: Wed Aug 24 11:41:57 2016 -0400
LP#1205492: fix crash when attempting to renew deposit & rental loans in OPAC
This patch fixes a bug where attempting to renew a loan on an item
that requires a deposit or a rental fee can cause an Apache
internal server error.
In particular, this patch supplies descriptions for the following
events:
ITEM_DEPOSIT_REQUIRED
ITEM_RENTAL_FEE_REQUIRED
ITEM_DEPOSIT_PAID
It also normalizes how 'fail_part' is set in the renewal response,
as the payload of an event returned when a renewal fails can
be either a hash or an acp Fieldmapper object depending on the
type of event. In the former case, attempting to access an
nonexistent ->fail_part method is what causes the crash.
To test
-------
[1] Create an item that requires a deposit or a rental fee
and check it out.
[2] Attempt to renew the loan in the public catalog. Note
that an internal server error is returned.
[3] Apply the patch and attept step 2 again. This time, the
public catalog should display a notification to the patron
that the renewal cannot take place, rather than crashing.
[4] Set up other situations where a renewal should fail for
reasons other than a deposit/rental fee being required. Verify
that appropriate error messages are displayed in the public
catalog.
Signed-off-by: Galen Charlton <gmc at esilibrary.com>
Signed-off-by: Mike Rylander <mrylander at gmail.com>
diff --git a/Open-ILS/src/extras/ils_events.xml b/Open-ILS/src/extras/ils_events.xml
index 2ecd618..b6f0603 100644
--- a/Open-ILS/src/extras/ils_events.xml
+++ b/Open-ILS/src/extras/ils_events.xml
@@ -159,13 +159,13 @@
<desc xml:lang="en-US">The selected bib record has volumes attached</desc>
</event>
<event code='1232' textcode='ITEM_DEPOSIT_REQUIRED'>
- <desc xml:lang="en-US"></desc>
+ <desc xml:lang="en-US">Payment of an item deposit is required.</desc>
</event>
<event code='1233' textcode='ITEM_RENTAL_FEE_REQUIRED'>
- <desc xml:lang="en-US"></desc>
+ <desc xml:lang="en-US">Payment of an item rental fee is required.</desc>
</event>
<event code='1234' textcode='ITEM_DEPOSIT_PAID'>
- <desc xml:lang="en-US"></desc>
+ <desc xml:lang="en-US">An item deposit was paid.</desc>
</event>
<event code='1235' textcode='INVALID_USER_XACT_ID'>
<desc xml:lang="en-US">While you were trying to make payments, this account's transaction history changed. Please go back and try again.</desc>
diff --git a/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Account.pm b/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Account.pm
index 30e0756..f0b5141 100644
--- a/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Account.pm
+++ b/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Account.pm
@@ -1504,6 +1504,15 @@ sub load_myopac_circs {
if($resp) {
my $evt = ref($resp->{evt}) eq 'ARRAY' ? $resp->{evt}->[0] : $resp->{evt};
+
+ # extract the fail_part, if present, from the event payload;
+ # since # the payload is an acp object in some cases,
+ # blindly looking for a # 'fail_part' key in the template can
+ # break things
+ $evt->{fail_part} = (ref($evt->{payload}) eq 'HASH' && exists $evt->{payload}->{fail_part}) ?
+ $evt->{payload}->{fail_part} :
+ '';
+
$data->{renewal_response} = $evt;
$success_renewals++ if $evt->{textcode} eq 'SUCCESS';
$failed_renewals++ if $evt->{textcode} ne 'SUCCESS';
diff --git a/Open-ILS/src/templates/opac/myopac/circs.tt2 b/Open-ILS/src/templates/opac/myopac/circs.tt2
index c78c153..4715925 100644
--- a/Open-ILS/src/templates/opac/myopac/circs.tt2
+++ b/Open-ILS/src/templates/opac/myopac/circs.tt2
@@ -179,7 +179,7 @@
circ.renewal_response.textcode != 'SUCCESS' %]
<tr>
<td colspan="6">[%# XXX colspan="0" does not work in IE %]
- <span class="failure-text" title="[% circ.renewal_response.textcode | html %] / [% circ.renewal_response.payload.fail_part | html %]">
+ <span class="failure-text" title="[% circ.renewal_response.textcode | html %] / [% circ.renewal_response.fail_part | html %]">
[%
renew_fail_msg = '';
IF circ.renewal_response.textcode == 'TOTAL_HOLD_COPY_RATIO_EXCEEDED' OR
@@ -188,7 +188,7 @@
renew_fail_msg = l('Item is needed for a hold');
ELSE;
renew_fail_msg = circ.renewal_response.desc ||
- circ.renewal_response.payload.fail_part ||
+ circ.renewal_response.fail_part ||
circ.renewal_response.textcode;
END;
renew_fail_msg | html;
-----------------------------------------------------------------------
Summary of changes:
Open-ILS/src/extras/ils_events.xml | 6 +++---
.../lib/OpenILS/WWW/EGCatLoader/Account.pm | 9 +++++++++
Open-ILS/src/templates/opac/myopac/circs.tt2 | 4 ++--
3 files changed, 14 insertions(+), 5 deletions(-)
hooks/post-receive
--
Evergreen ILS
More information about the open-ils-commits
mailing list