Bug 20640: (follow-up) Degrade gracefully on error
authorMartin Renvoize <martin.renvoize@ptfs-europe.com>
Thu, 1 Nov 2018 15:29:08 +0000 (15:29 +0000)
committerNick Clemens <nick@bywatersolutions.com>
Mon, 28 Jan 2019 13:06:29 +0000 (13:06 +0000)
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>

Signed-off-by: Nick Clemens <nick@bywatersolutions.com>

Koha/Illrequest.pm
ill/ill-requests.pl

index f9b4995..ff834f1 100644 (file)
@@ -536,11 +536,12 @@ Migrate a request from one backend to another.
 sub backend_migrate {
     my ( $self, $params ) = @_;
 
-    my $response = $self->_backend->migrate({
+    my $response = $self->_backend_capability('migrate',{
             request    => $self,
             other      => $params,
         });
-    return $self->expandTemplate($response);
+    return $self->expandTemplate($response) if $response;
+    return $response;
 }
 
 =head2 backend_confirm
index 0a29785..77a8d05 100755 (executable)
@@ -93,10 +93,26 @@ if ( $backends_available ) {
         if ( $params->{backend} ) {
             my $new_request = Koha::Illrequest->new->load_backend( $params->{backend} );
             $backend_result = $new_request->backend_migrate($params);
-            $template->param(
-                whole   => $backend_result,
-                request => $new_request
-            );
+            if ($backend_result) {
+                $template->param(
+                    whole   => $backend_result,
+                    request => $new_request
+                );
+            } else {
+                # backend failure
+                $backend_result = {
+                    stage => 'commit',
+                    next  => 'illview',
+                    error => {
+                        message => 'Migrating to backedn does not support migrate',
+                        status => 'Migrating to backedn does not support migrate'
+                    }
+                };
+                $template->param(
+                    whole   => $backend_result,
+                    request => $request
+                );
+            }
         }
         else {
             $request = Koha::Illrequests->find( $params->{illrequest_id} );