Bug 23271

Summary: Koha::Patron::Category should use Koha::Object::Limit::Library
Product: Koha Reporter: Tomás Cohen Arazi (tcohen) <tomascohen>
Component: Architecture, internals, and plumbingAssignee: Jonathan Druart <jonathan.druart>
Status: CLOSED FIXED QA Contact: Kyle M Hall (khall) <kyle>
Severity: enhancement    
Priority: P5 - low CC: fridolin.somers, jonathan.druart, martin.renvoize, nick, tomascohen
Version: Main   
Hardware: All   
OS: All   
Change sponsored?: --- Patch complexity: ---
Documentation contact: Documentation submission:
Text to go in the release notes:
This enhancement makes Koha::Patron::Categories inherit the 'search_with_library_limits' method from Koha::Objects::Limit::Library and thus makes it consistent with other locations where filtering by branch is required.
Version(s) released in:
21.05.00
Circulation function:
Bug Depends on: 17755, 23281    
Bug Blocks: 28622, 28946    
Attachments: Bug 23271: Improve library limitation selection for item types
Bug 23271: Use Koha::Object::Limit::Library for Koha::Patron::Categories
Bug 23271: Replace search_limited with search_with_library_limits
Bug 23271: Improve library limitation selection for item types
Bug 23271: Use Koha::Object::Limit::Library for Koha::Patron::Categories
Bug 23271: Replace search_limited with search_with_library_limits
Bug 23271: (QA follow-up) Make search_with_library_limits fallback to userenv if required
Bug 23271: Improve library limitation selection for item types
Bug 23271: Use Koha::Object::Limit::Library for Koha::Patron::Categories
Bug 23271: Replace search_limited with search_with_library_limits
Bug 23271: (QA follow-up) Minor POD fix
Bug 23271: Remove 'selecteds' from Branches
Bug 23271: (QA follow-up) Make search_with_library_limits fallback to userenv if required
Bug 23271: Improve library limitation selection for item types
Bug 23271: Use Koha::Object::Limit::Library for Koha::Patron::Categories
Bug 23271: Replace search_limited with search_with_library_limits
Bug 23271: (QA follow-up) Minor POD fix
Bug 23271: Remove 'selecteds' from Branches
Bug 23271: (QA follow-up) Make search_with_library_limits fallback to userenv if required
Bug 23271: Improve library limitation selection for item types
Bug 23271: Use Koha::Object::Limit::Library for Koha::Patron::Categories
Bug 23271: Replace search_limited with search_with_library_limits
Bug 23271: (QA follow-up) Minor POD fix
Bug 23271: Remove 'selecteds' from Branches
Bug 23271: Prevent crash if called without parameters
Bug 23271: Fix Template/Plugin/Branches.t
Bug 23271: Fix random failure from Categories.t
Bug 23271: (follow-up) Fix typo 'limlits'

Description Tomás Cohen Arazi (tcohen) 2019-07-05 18:50:20 UTC
Koha::Patron::Attribute::Type should be used as example.
Comment 1 Jonathan Druart 2019-10-16 12:57:30 UTC
Created attachment 94292 [details] [review]
Bug 23271: Improve library limitation selection for item types
Comment 2 Jonathan Druart 2019-10-16 12:57:33 UTC
Created attachment 94293 [details] [review]
Bug 23271: Use Koha::Object::Limit::Library for Koha::Patron::Categories
Comment 3 Jonathan Druart 2019-10-16 12:57:44 UTC
Created attachment 94294 [details] [review]
Bug 23271: Replace search_limited with search_with_library_limits
Comment 4 Jonathan Druart 2019-10-16 12:59:00 UTC
Tomas, about the last patch I am wondering if it makes sense. Should not we call search_with_library_limits from search_limited and keep the search_limited calls?
I can imagine having other limitations and so a generic method names makes more sense.
Comment 5 Tomás Cohen Arazi (tcohen) 2019-10-16 13:05:37 UTC
(In reply to Jonathan Druart from comment #4)
> Tomas, about the last patch I am wondering if it makes sense. Should not we
> call search_with_library_limits from search_limited and keep the
> search_limited calls?
> I can imagine having other limitations and so a generic method names makes
> more sense.

Maybe, but we could do it in Koha::Objects if such was the case. The idea was not to 'detect' environment state inside de libs, but do it in the controllers and explicitly pass the information as parameter in the call.
Comment 6 Tomás Cohen Arazi (tcohen) 2021-04-12 20:53:53 UTC
It would be great to have this in master ASAP and finish this cleanup.
Can you please rebase?
Comment 7 Jonathan Druart 2021-04-13 07:36:37 UTC
Created attachment 119503 [details] [review]
Bug 23271: Improve library limitation selection for item types
Comment 8 Jonathan Druart 2021-04-13 07:36:41 UTC
Created attachment 119504 [details] [review]
Bug 23271: Use Koha::Object::Limit::Library for Koha::Patron::Categories
Comment 9 Jonathan Druart 2021-04-13 07:36:45 UTC
Created attachment 119505 [details] [review]
Bug 23271: Replace search_limited with search_with_library_limits
Comment 10 Tomás Cohen Arazi (tcohen) 2021-04-13 11:19:57 UTC
The changes assume ->search_with_library_limits implicitly falls back to C4::Context->userenv->{branch} if no library_id is passed.

While that could be convenient, it is not the case right now. So failing it until it passes the right library_id or this/a new bug introduces the fallback.
Comment 11 Tomás Cohen Arazi (tcohen) 2021-04-13 12:14:58 UTC
Created attachment 119529 [details] [review]
Bug 23271: (QA follow-up) Make search_with_library_limits fallback to userenv if required

This patch makes  the generic method rely on C4::Context->userenv if the
library_id is not passed.

To test:
1. Apply this patch
2. Run:
   $ kshell
  k$ prove t/db_dependent/Koha/Patron/Attribute/Types.t
=> SUCCESS: Tests pass!
3. Sign off :-D

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Comment 12 Tomás Cohen Arazi (tcohen) 2021-04-13 12:15:03 UTC
Created attachment 119530 [details] [review]
Bug 23271: Improve library limitation selection for item types

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Comment 13 Tomás Cohen Arazi (tcohen) 2021-04-13 12:15:08 UTC
Created attachment 119531 [details] [review]
Bug 23271: Use Koha::Object::Limit::Library for Koha::Patron::Categories

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Comment 14 Tomás Cohen Arazi (tcohen) 2021-04-13 12:15:13 UTC
Created attachment 119532 [details] [review]
Bug 23271: Replace search_limited with search_with_library_limits

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Comment 15 Tomás Cohen Arazi (tcohen) 2021-04-13 12:15:21 UTC
Created attachment 119533 [details] [review]
Bug 23271: (QA follow-up) Minor POD fix

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Comment 16 Tomás Cohen Arazi (tcohen) 2021-04-13 12:21:23 UTC
Jonathan, I submitted what I had in mind for you to ponder.
Comment 17 Jonathan Druart 2021-04-13 13:52:43 UTC
Created attachment 119537 [details] [review]
Bug 23271: Remove 'selecteds' from Branches

Restoring the first version of this from the first patch and reverting
what hit master first.
Comment 18 Jonathan Druart 2021-04-13 13:54:27 UTC
Test plan:
1. Create a patron category that is not limited to any libraries
2. Create a patron category limited to a couple a libraries
3. Edit it and confirm that the select is selected with the libraries you picked
4. Modify the choice and save again, confirm it has been saved correctly
5. Confirm that the patron's category is visible only from those libraries.
Comment 19 Martin Renvoize (ashimema) 2021-04-14 14:48:27 UTC
Created attachment 119579 [details] [review]
Bug 23271: (QA follow-up) Make search_with_library_limits fallback to userenv if required

This patch makes  the generic method rely on C4::Context->userenv if the
library_id is not passed.

To test:
1. Apply this patch
2. Run:
   $ kshell
  k$ prove t/db_dependent/Koha/Patron/Attribute/Types.t
=> SUCCESS: Tests pass!
3. Sign off :-D

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Comment 20 Martin Renvoize (ashimema) 2021-04-14 14:48:31 UTC
Created attachment 119580 [details] [review]
Bug 23271: Improve library limitation selection for item types

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Comment 21 Martin Renvoize (ashimema) 2021-04-14 14:48:34 UTC
Created attachment 119581 [details] [review]
Bug 23271: Use Koha::Object::Limit::Library for Koha::Patron::Categories

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Comment 22 Martin Renvoize (ashimema) 2021-04-14 14:48:38 UTC
Created attachment 119582 [details] [review]
Bug 23271: Replace search_limited with search_with_library_limits

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Comment 23 Martin Renvoize (ashimema) 2021-04-14 14:48:42 UTC
Created attachment 119583 [details] [review]
Bug 23271: (QA follow-up) Minor POD fix

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Comment 24 Martin Renvoize (ashimema) 2021-04-14 14:48:46 UTC
Created attachment 119584 [details] [review]
Bug 23271: Remove 'selecteds' from Branches

Restoring the first version of this from the first patch and reverting
what hit master first.

Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Comment 25 Martin Renvoize (ashimema) 2021-04-14 14:49:37 UTC
All works as described and seems a solid code improvement... Signing off
Comment 26 Martin Renvoize (ashimema) 2021-04-14 14:53:58 UTC
Humm.. there is a funky QA script warning however: 

FAIL   Koha/Patron/Category.pm
   FAIL   pod coverage
                POD coverage was greater before, try perl -MPod::Coverage=PackageName -e666
   FAIL   valid
                Inconsistent hierarchy during C3 merge of class 'Koha::Patron::Category':
                        current merge results [
                                Koha::Patron::Category,
                        ]
                        merging failed on 'Koha::Object'
Comment 27 Jonathan Druart 2021-04-15 08:04:37 UTC
We already have it for most of the other modules based on Koha::Object::Limit::Library:

Koha::AuthorisedValue, Koha::Account::CreditType, Koha::Account::CreditType and Koha::Patron::Attribute::Type

Not Koha::ItemType.

In my understanding it's coming from this circular dependency:

Koha:AuthorisedValues inherits from Koha::Object and Koha::Object::Limit::Library
Koha::Object::Limit::Library uses Koha::Libraries -> Koha::Biblios -> Koha::Biblio -> Koha::Suggestions -> Koha::Patrons -> Koha::Patron -> Koha::Holds -> Koha::Hold -> Koha::AuthorisedValues -> ...

There is certainly a shorter path to find the loop
Comment 28 Kyle M Hall (khall) 2021-04-16 17:41:20 UTC
Created attachment 119772 [details] [review]
Bug 23271: (QA follow-up) Make search_with_library_limits fallback to userenv if required

This patch makes  the generic method rely on C4::Context->userenv if the
library_id is not passed.

To test:
1. Apply this patch
2. Run:
   $ kshell
  k$ prove t/db_dependent/Koha/Patron/Attribute/Types.t
=> SUCCESS: Tests pass!
3. Sign off :-D

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Comment 29 Kyle M Hall (khall) 2021-04-16 17:41:32 UTC
Created attachment 119773 [details] [review]
Bug 23271: Improve library limitation selection for item types

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Comment 30 Kyle M Hall (khall) 2021-04-16 17:41:36 UTC
Created attachment 119774 [details] [review]
Bug 23271: Use Koha::Object::Limit::Library for Koha::Patron::Categories

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Comment 31 Kyle M Hall (khall) 2021-04-16 17:41:40 UTC
Created attachment 119775 [details] [review]
Bug 23271: Replace search_limited with search_with_library_limits

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Comment 32 Kyle M Hall (khall) 2021-04-16 17:41:44 UTC
Created attachment 119776 [details] [review]
Bug 23271: (QA follow-up) Minor POD fix

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Comment 33 Kyle M Hall (khall) 2021-04-16 17:41:48 UTC
Created attachment 119777 [details] [review]
Bug 23271: Remove 'selecteds' from Branches

Restoring the first version of this from the first patch and reverting
what hit master first.

Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Comment 34 Jonathan Druart 2021-04-21 09:54:41 UTC
Created attachment 119939 [details] [review]
Bug 23271: Prevent crash if called without parameters

Can't use an undefined value as a HASH reference at /kohadevbox/koha/Koha/Objects/Limit/Library.pm line 87.
Comment 35 Jonathan Druart 2021-04-21 13:29:44 UTC
Pushed to master for 21.05, thanks to everybody involved!
Comment 36 Jonathan Druart 2021-04-21 14:58:04 UTC
Created attachment 119956 [details] [review]
Bug 23271: Fix Template/Plugin/Branches.t

#   Failed test 'Without selected parameter, my library should be preselected'
    #   at t/db_dependent/Template/Plugin/Branches.t line 81.
    #          got: '0'
    #     expected: '1'
Comment 37 Jonathan Druart 2021-04-21 14:58:25 UTC
Follow-up pushed to master.
Comment 38 Jonathan Druart 2021-04-21 15:26:04 UTC
Created attachment 119957 [details] [review]
Bug 23271: Fix random failure from Categories.t

#   Failed test 'The branch limitation should have been stored and retrieved'
 #   at t/db_dependent/Koha/Patron/Categories.t line 57.
 #     Structures begin differing at:
 #          $got->[0] = 'fm0A1a'
 #     $expected->[0] = 'vNquBvCa'
Comment 39 Jonathan Druart 2021-04-21 15:26:43 UTC
Follow-up pushed to master.
Comment 40 Nick Clemens (kidclamp) 2021-04-23 11:19:40 UTC
Created attachment 120054 [details] [review]
Bug 23271: (follow-up) Fix typo 'limlits'
Comment 41 Jonathan Druart 2021-04-23 11:56:07 UTC
Ooops, thanks Nick. Pushed to master!
Comment 42 Fridolin Somers 2021-04-29 13:10:00 UTC
Enhancement not pushed to 20.11.x