Make users_of_interest test for defined actor.usr.card values user/csharp/lp1900450_fix_users_of_interest_barcode_check
authorMichael Peters <mpeters@emeralddata.net>
Thu, 20 Nov 2014 22:41:44 +0000 (17:41 -0500)
committerChris Sharp <csharp@georgialibraries.org>
Mon, 19 Oct 2020 14:46:57 +0000 (10:46 -0400)
If the open-ils.collections.users_of_interest API encounters a patron that
has a null "card" value in actor.usr the API will crash with an error like:

Received Exception:
Name: osrfMethodException
Status:  *** Call to [open-ils.collections.users_of_interest.retrieve] failed for session [1416515351.333446.1416515351406], thread trace [1]:
Can't call method "barcode" on an undefined value at /usr/local/share/perl/5.14.2/OpenILS/Application/Collections.pm line 299.

This patches users_of_interest to be sure that the user has a defined value
for actor.usr.card before proceeding to pull out the barcode for the results
of the API call.

Signed-off-by: Michael Peters <mpeters@emeralddata.net>
Signed-off-by: Chris Sharp <csharp@georgialibraries.org>
Open-ILS/src/perlmods/lib/OpenILS/Application/Collections.pm

index b451cbd..b3a1fbe 100644 (file)
@@ -295,7 +295,7 @@ sub process_users_of_interest_results {
             id            => $u->id,
             dob        => $u->dob,
             profile    => $u->profile->name,
-            barcode    => $u->card ? $u->card->barcode : undef ,
+            barcode    => defined($u->card) ? $u->card->barcode : "There is no card for this user",
             groups    => [ map { $_->name } @{$u->groups} ],
         };