From 182913fcc2f4d5aad9bf50fda7206fa6de503a58 Mon Sep 17 00:00:00 2001 From: gmc Date: Fri, 6 Aug 2010 01:21:31 +0000 Subject: [PATCH] bug 614150: bail out on ACTOR_USER_NOT_FOUND This fixes a bug where uploading an offline checkout that refers to a missing patron returns an INTERNAL_SERVER_ERROR instead of ACTOR_USER_NOT_FOUND. More generally, this avoids an exception in case case where a circ operation is made without checking the existence of the patron record beforehand. mk_env could use a better name, too. Signed-off-by: Galen Charlton git-svn-id: svn://svn.open-ils.org/ILS/trunk@17113 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- Open-ILS/src/perlmods/OpenILS/Application/Circ/Circulate.pm | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/Open-ILS/src/perlmods/OpenILS/Application/Circ/Circulate.pm b/Open-ILS/src/perlmods/OpenILS/Application/Circ/Circulate.pm index a8aca9f3d..de040e384 100644 --- a/Open-ILS/src/perlmods/OpenILS/Application/Circ/Circulate.pm +++ b/Open-ILS/src/perlmods/OpenILS/Application/Circ/Circulate.pm @@ -677,15 +677,17 @@ sub mk_env { }; if( $self->patron_id ) { - $patron = $e->retrieve_actor_user([$self->patron_id, $flesh]) or return $e->event; + $patron = $e->retrieve_actor_user([$self->patron_id, $flesh]) + or return $self->bail_on_events(OpenILS::Event->new('ACTOR_USER_NOT_FOUND')); } elsif( $self->patron_barcode ) { - my $card = $e->search_actor_card( - {barcode => $self->patron_barcode})->[0] or return $e->event; + # note: throwing ACTOR_USER_NOT_FOUND instead of ACTOR_CARD_NOT_FOUND is intentional + my $card = $e->search_actor_card({barcode => $self->patron_barcode})->[0] + or return $self->bail_on_events(OpenILS::Event->new('ACTOR_USER_NOT_FOUND')); - $patron = $e->search_actor_user([ - {card => $card->id}, $flesh])->[0] or return $e->event; + $patron = $e->search_actor_user([{card => $card->id}, $flesh])->[0] + or return $self->bail_on_events(OpenILS::Event->new('ACTOR_USER_NOT_FOUND')); } else { if( my $copy = $self->copy ) { -- 2.11.0