LP#1772680: fix look-up of authorized services collab/gmcharlt/lp1772680_rbdigital_enhancements
authorGalen Charlton <gmc@equinoxinitiative.org>
Wed, 23 Jan 2019 01:53:44 +0000 (20:53 -0500)
committerGalen Charlton <gmc@equinoxinitiative.org>
Wed, 23 Jan 2019 01:57:41 +0000 (20:57 -0500)
We now search for authorized digital services using the
patron's home OU _and_ its ancestors.

Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
Open-ILS/src/perlmods/lib/OpenILS/Application/EbookAPI.pm
Open-ILS/src/perlmods/lib/OpenILS/Application/EbookAPI/RBDigital.pm

index 2c9be3a..541c2bd 100644 (file)
@@ -1350,7 +1350,7 @@ sub get_authorized_vendors {
     }
 
     my $handler = new_handler($session_id);
-    return $handler->get_authorized_vendors();
+    return $handler->get_authorized_vendors($editor->requestor->home_ou);
 }
 
 __PACKAGE__->register_method(
index 2e1449e..a9292da 100644 (file)
@@ -40,6 +40,8 @@ use constant EBOOK_API_DOMAIN => 'http://api.rbdigitalstage.com/v1';
 use constant EBOOK_API_DOMAIN_QA => 'http://api.rbdigitalqa.com/v1';
 use constant EBOOK_API_QA_TOKEN => '5ad925df4ee5df112009e562';
 
+my $U = 'OpenILS::Application::AppUtils';
+
 sub new {
     my( $class, $args ) = @_;
     $class = ref $class || $class;
@@ -125,9 +127,10 @@ sub _get_vendor_library {
     my $pcrud = OpenSRF::AppSession->create('open-ils.pcrud');
     $pcrud->connect();
 
+    my $org_list = $U->get_org_ancestors($home_ou);
     $ebook_rdsa_req = $pcrud->request('open-ils.pcrud.search.ebook_rdsa.atomic', "ANONYMOUS", 
         { 
-            home_ou => $home_ou,
+            home_ou => $org_list,
             "+ebook_rds" => {
                 vendor_key => EBOOK_API_VENDOR
             }
@@ -150,15 +153,16 @@ sub _get_vendor_library {
 
 # Call this method to all the vendors (from rbdigital.digital_services table) tied to user's home library in EG
 sub get_authorized_vendors {
-    my $home_ou = @_;
+    my ($self, $home_ou) = @_;
     my $pcrud = OpenSRF::AppSession->create('open-ils.pcrud');
     $pcrud->connect();
     
+    my $org_list = $U->get_org_ancestors($home_ou);
     my $ebook_rds_req = $pcrud->request('open-ils.pcrud.search.ebook_rds.atomic', "ANONYMOUS", 
         {
             is_enabled => 't',
             "+ebook_rdsa" => {
-                home_ou => $home_ou
+                home_ou => $org_list
             }
         },
         {
@@ -917,8 +921,9 @@ sub is_authorized_patron {
     my $pcrud = OpenSRF::AppSession->create('open-ils.pcrud');
     $pcrud->connect();
 
+    my $org_list = $U->get_org_ancestors($home_library_id);
     $ebook_rdsa_req = $pcrud->request('open-ils.pcrud.search.ebook_rdsa.atomic', "ANONYMOUS", 
-        { home_ou => $home_library_id }
+        { home_ou => $org_list }
     )->gather();
     
     if ($ebook_rdsa_req && scalar (@$ebook_rdsa_req) > 0) {