In order to unify the different subroutine of C4::Members and move them to Koha::Patrons, one of the steps is to remove GetMemberDetails. Here we will replace all occurrences of GetMemberDetails with GetMember. Additional informations will be retrieved when needed.
Created attachment 57299 [details] [review] Bug 17578: GetMemberDetails - Add Koha::Patron::Category->effective_BlockExpiredPatronOpacActions This patch simply adds a new method to retrieve the correct value of BlockExpiredPatronOpacActions.
Created attachment 57300 [details] [review] Bug 17578: GetMemberDetails - Remove BlockExpiredPatronOpacActions The correct way to get the value of BlockExpiredPatronOpacActions from a patron object is to get the patron category then call the effective_BlockExpiredPatronOpacActions: $patron->category->effective_BlockExpiredPatronOpacActions So this patch applies this change and remove this value from the GetMemberDetails subroutine.
Created attachment 57301 [details] [review] Bug 17578: GetMemberDetails - Remove authflags - 2 This script is not used from the Koha codebase and does not seem very useful. We could rewrite it if needed later (ie. if someone complains I will rewrite it).
Created attachment 57302 [details] [review] Bug 17578: GetMemberDetails - Remove authflags - 1 GetMemberDetails create a authflags key, but this key is only used from 2 different places. One is a very simple script, which does not seem very usefull C4/SIP/interactive_members_dump.pl. I propose to simply remove it. The other one is the member-flags.pl script. What is done in this one is a bit weird since we a doing twice the same query (it was not highlighted before this patch). We will need to fix that later. At the moment the goal it to remove the GetMemberDetails subroutine without introducing any regressions (and so without adding big changes) Test plan: Select/unselect permissions for a patron, save and edit again. The behavior of the permission checkboxes should be ok
Created attachment 57303 [details] [review] Bug 17578: GetMemberDetails - Remove amountoutstanding The amountoutstanding value set by GetMemberDetails was only used in a few places. In that case it makes sense to only retrieve it when needed. Test plan: 1/ Add fines to a patron, on the OPAC patron info page, you should see a "Fines" tab 2/ Add credit to a patron, you should see the credit displayed 3/ Set the pref maxoutstanding to 3 4/ Add a fine of 4 to a patron 5/ Try to place an hold for this patron => You should get a "too much oweing" message
Created attachment 57304 [details] [review] Bug 17578: GetMemberDetails - Remove flags Same as authflags, a flags key is set containing all the patron flags. It is only used in a few places and it's better to call C4::Members::patronflags when we need it. Test plan: Look at the diff and confirm that the change make sense Use git grep to confirm we do not use the flags somewhere else.
Created attachment 57305 [details] [review] Bug 17578: GetMemberDetails - Remove is_expired The is_expired value is used in 2 places, let's use Koha::Patron->is_expired instead. Test plan: Depending on the different value of BlockExpiredPatronOpacActions for the patron category, a patron must be blocked if he has expired. Confirm that behavior from opac-renew and opac-reserve scripts
Created attachment 57306 [details] [review] Bug 17578: GetMemberDetails - Remove reservefee Same as other patches, reservefee is only used in opac-reserve.pl Test plan; Set reserve fee for a patron category Place a hold at the OPAC with one of these patrons. You must get a message about the reserve fee.
Created attachment 57307 [details] [review] Bug 17578: GetMemberDetails - Remove enrolmentperiod This value is not used anywhere Test plan: git grep enrolmentperiod| grep -v installer| grep -v translator|vim - should show you that I am right
Created attachment 57308 [details] [review] Bug 17578: GetMemberDetails - Remove GetMemberDetails All the values different from the ones GetMember returned has been managed outside of GetMemberDetails. It looks safe to replace all the occurrences of GetMemberDetails with GetMember.
When I go to circulation -> checking out, or to permission settings of patron I get: Can't use string ("19") as a HASH ref while "strict refs" in use at /home/vagrant/kohaclone/C4/Members.pm line 194 19 is borrowernumber of my patron
Created attachment 57322 [details] [review] Bug 17578: GetMemberDetails - Remove flags Same as authflags, a flags key is set containing all the patron flags. It is only used in a few places and it's better to call C4::Members::patronflags when we need it. Test plan: Look at the diff and confirm that the change make sense Use git grep to confirm we do not use the flags somewhere else.
Created attachment 57323 [details] [review] Bug 17578: GetMemberDetails - Remove is_expired The is_expired value is used in 2 places, let's use Koha::Patron->is_expired instead. Test plan: Depending on the different value of BlockExpiredPatronOpacActions for the patron category, a patron must be blocked if he has expired. Confirm that behavior from opac-renew and opac-reserve scripts
Created attachment 57324 [details] [review] Bug 17578: GetMemberDetails - Remove reservefee Same as other patches, reservefee is only used in opac-reserve.pl Test plan; Set reserve fee for a patron category Place a hold at the OPAC with one of these patrons. You must get a message about the reserve fee.
Created attachment 57325 [details] [review] Bug 17578: GetMemberDetails - Remove enrolmentperiod This value is not used anywhere Test plan: git grep enrolmentperiod| grep -v installer| grep -v translator|vim - should show you that I am right
Created attachment 57326 [details] [review] Bug 17578: GetMemberDetails - Remove GetMemberDetails All the values different from the ones GetMember returned has been managed outside of GetMemberDetails. It looks safe to replace all the occurrences of GetMemberDetails with GetMember.
Continue testing: On the patron permission setting page I always see the same set of permisions... but when I tried to set some permissions, it is saved to the database Also there are these error messages in intranet-error.log, I'm not sure if it is related: moremember.pl: Problem = a value of activeBorrowerRelationship has been passed to param without key at /home/vagrant/kohaclone/C4/Templates.pm line 137., referer: http://localhost:8081/cgi-bin/koha/members/member-flags.pl?member=19 moremember.pl: Problem = a value of relatives_borrowernumbers has been passed to param without key at /home/vagrant/kohaclone/C4/Templates.pm line 137., referer: http://localhost:8081/cgi-bin/koha/members/member-flags.pl?member=19 When trying to place a hold in OPAC I got: The method category is not covered by tests! So I assume this bug should depend on bug 17555. Right? I think there will be conflict in t/db_dependent/Koha/Patrons.t (at least). Could you rebase on 17555 please? (If I am right, of course ;) )
Josef, yes you are right about the dependency. But I am stuck at the moment, I do not manage to maintain a dependency tree without conflicts. I am marking this one as blocker, hoping other will be pushed soon.
OK, thank you. I'll try to get back when dependecies will be pushed.
(In reply to Jonathan Druart from comment #1) > Created attachment 57299 [details] [review] [review] > Bug 17578: GetMemberDetails - Add > Koha::Patron::Category->effective_BlockExpiredPatronOpacActions > > This patch simply adds a new method to retrieve the correct value of > BlockExpiredPatronOpacActions. This patch has been moved to its own bug, see bug 17604.
Dependecies were pushed, could you please look at other issues from comment 17?
Created attachment 57793 [details] [review] Bug 17578: GetMemberDetails - Remove BlockExpiredPatronOpacActions The correct way to get the value of BlockExpiredPatronOpacActions from a patron object is to get the patron category then call the effective_BlockExpiredPatronOpacActions: $patron->category->effective_BlockExpiredPatronOpacActions So this patch applies this change and remove this value from the GetMemberDetails subroutine.
Created attachment 57794 [details] [review] Bug 17578: GetMemberDetails - Remove authflags - 1 GetMemberDetails create a authflags key, but this key is only used from 2 different places. One is a very simple script, which does not seem very usefull C4/SIP/interactive_members_dump.pl. I propose to simply remove it. The other one is the member-flags.pl script. What is done in this one is a bit weird since we a doing twice the same query (it was not highlighted before this patch). We will need to fix that later. At the moment the goal it to remove the GetMemberDetails subroutine without introducing any regressions (and so without adding big changes) Test plan: Select/unselect permissions for a patron, save and edit again. The behavior of the permission checkboxes should be ok
Created attachment 57795 [details] [review] Bug 17578: GetMemberDetails - Remove authflags - 2 This script is not used from the Koha codebase and does not seem very useful. We could rewrite it if needed later (ie. if someone complains I will rewrite it).
Created attachment 57796 [details] [review] Bug 17578: GetMemberDetails - Remove amountoutstanding The amountoutstanding value set by GetMemberDetails was only used in a few places. In that case it makes sense to only retrieve it when needed. Test plan: 1/ Add fines to a patron, on the OPAC patron info page, you should see a "Fines" tab 2/ Add credit to a patron, you should see the credit displayed 3/ Set the pref maxoutstanding to 3 4/ Add a fine of 4 to a patron 5/ Try to place an hold for this patron => You should get a "too much oweing" message
Created attachment 57797 [details] [review] Bug 17578: GetMemberDetails - Remove flags Same as authflags, a flags key is set containing all the patron flags. It is only used in a few places and it's better to call C4::Members::patronflags when we need it. Test plan: Look at the diff and confirm that the change make sense Use git grep to confirm we do not use the flags somewhere else.
Created attachment 57798 [details] [review] Bug 17578: GetMemberDetails - Remove is_expired The is_expired value is used in 2 places, let's use Koha::Patron->is_expired instead. Test plan: Depending on the different value of BlockExpiredPatronOpacActions for the patron category, a patron must be blocked if he has expired. Confirm that behavior from opac-renew and opac-reserve scripts
Created attachment 57799 [details] [review] Bug 17578: GetMemberDetails - Remove reservefee Same as other patches, reservefee is only used in opac-reserve.pl Test plan; Set reserve fee for a patron category Place a hold at the OPAC with one of these patrons. You must get a message about the reserve fee.
Created attachment 57800 [details] [review] Bug 17578: GetMemberDetails - Remove enrolmentperiod This value is not used anywhere Test plan: git grep enrolmentperiod| grep -v installer| grep -v translator|vim - should show you that I am right
Created attachment 57801 [details] [review] Bug 17578: GetMemberDetails - Remove GetMemberDetails All the values different from the ones GetMember returned has been managed outside of GetMemberDetails. It looks safe to replace all the occurrences of GetMemberDetails with GetMember.
(In reply to Jonathan Druart from comment #25) > Created attachment 57796 [details] [review] [review] > Bug 17578: GetMemberDetails - Remove amountoutstanding > > The amountoutstanding value set by GetMemberDetails was only used in a > few places. In that case it makes sense to only retrieve it when needed. > > Test plan: > 1/ Add fines to a patron, on the OPAC patron info page, you should see a > "Fines" tab > 2/ Add credit to a patron, you should see the credit displayed > 3/ Set the pref maxoutstanding to 3 > 4/ Add a fine of 4 to a patron > 5/ Try to place an hold for this patron > => You should get a "too much oweing" message Does not work for me, sorry...
(In reply to Jonathan Druart from comment #26) > Created attachment 57797 [details] [review] [review] > Bug 17578: GetMemberDetails - Remove flags > > Same as authflags, a flags key is set containing all the patron flags. > It is only used in a few places and it's better to call > C4::Members::patronflags when we need it. > > Test plan: > Look at the diff and confirm that the change make sense > Use git grep to confirm we do not use the flags somewhere else. in members/members-flags.pl, line 96: if ( $bor->{flags} && $bor->{flags} & 2**$bit ) {
(In reply to Jonathan Druart from comment #27) > Created attachment 57798 [details] [review] [review] > Bug 17578: GetMemberDetails - Remove is_expired > > The is_expired value is used in 2 places, let's use > Koha::Patron->is_expired instead. > > Test plan: > Depending on the different value of BlockExpiredPatronOpacActions for > the patron category, a patron must be blocked if he has expired. > Confirm that behavior from opac-renew and opac-reserve scripts Does not work for me
The other patches does work as expected.
Created attachment 57808 [details] [review] But 17578: (followup) amountoutstanding
(In reply to Josef Moravec from comment #31) > (In reply to Jonathan Druart from comment #25) > > Created attachment 57796 [details] [review] [review] [review] > > Bug 17578: GetMemberDetails - Remove amountoutstanding > > > > The amountoutstanding value set by GetMemberDetails was only used in a > > few places. In that case it makes sense to only retrieve it when needed. > > > > Test plan: > > 1/ Add fines to a patron, on the OPAC patron info page, you should see a > > "Fines" tab > > 2/ Add credit to a patron, you should see the credit displayed > > 3/ Set the pref maxoutstanding to 3 > > 4/ Add a fine of 4 to a patron > > 5/ Try to place an hold for this patron > > => You should get a "too much oweing" message > > Does not work for me, sorry... Good catch, fixed. It worked in some situations (lot of account lines). (In reply to Josef Moravec from comment #32) > (In reply to Jonathan Druart from comment #26) > > Created attachment 57797 [details] [review] [review] [review] > > Bug 17578: GetMemberDetails - Remove flags > > > > Same as authflags, a flags key is set containing all the patron flags. > > It is only used in a few places and it's better to call > > C4::Members::patronflags when we need it. > > > > Test plan: > > Look at the diff and confirm that the change make sense > > Use git grep to confirm we do not use the flags somewhere else. > > in members/members-flags.pl, line 96: > > if ( $bor->{flags} && $bor->{flags} & 2**$bit ) { Yes actually this one is ok because we need the borrowers.flags value from the DB and not the "flags" set by C4::Members::patronflags. (In reply to Josef Moravec from comment #33) > (In reply to Jonathan Druart from comment #27) > > Created attachment 57798 [details] [review] [review] [review] > > Bug 17578: GetMemberDetails - Remove is_expired > > > > The is_expired value is used in 2 places, let's use > > Koha::Patron->is_expired instead. > > > > Test plan: > > Depending on the different value of BlockExpiredPatronOpacActions for > > the patron category, a patron must be blocked if he has expired. > > Confirm that behavior from opac-renew and opac-reserve scripts > > Does not work for me Could you please detail, it looks ok here.
> > (In reply to Jonathan Druart from comment #27) > > > Created attachment 57798 [details] [review] [review] [review] [review] > > > Bug 17578: GetMemberDetails - Remove is_expired > > > > > > The is_expired value is used in 2 places, let's use > > > Koha::Patron->is_expired instead. > > > > > > Test plan: > > > Depending on the different value of BlockExpiredPatronOpacActions for > > > the patron category, a patron must be blocked if he has expired. > > > Confirm that behavior from opac-renew and opac-reserve scripts > > > > Does not work for me > > Could you please detail, it looks ok here. Sorry, my mistake, it works ok. Continue testing
Created attachment 57817 [details] [review] [SIGNED-OFF] Bug 17578: GetMemberDetails - Remove BlockExpiredPatronOpacActions The correct way to get the value of BlockExpiredPatronOpacActions from a patron object is to get the patron category then call the effective_BlockExpiredPatronOpacActions: $patron->category->effective_BlockExpiredPatronOpacActions So this patch applies this change and remove this value from the GetMemberDetails subroutine. Signed-off-by: Josef Moravec <josef.moravec@gmail.com>
Created attachment 57818 [details] [review] [SIGNED-OFF] Bug 17578: GetMemberDetails - Remove authflags - 1 GetMemberDetails create a authflags key, but this key is only used from 2 different places. One is a very simple script, which does not seem very usefull C4/SIP/interactive_members_dump.pl. I propose to simply remove it. The other one is the member-flags.pl script. What is done in this one is a bit weird since we a doing twice the same query (it was not highlighted before this patch). We will need to fix that later. At the moment the goal it to remove the GetMemberDetails subroutine without introducing any regressions (and so without adding big changes) Test plan: Select/unselect permissions for a patron, save and edit again. The behavior of the permission checkboxes should be ok Signed-off-by: Josef Moravec <josef.moravec@gmail.com>
Created attachment 57819 [details] [review] [SIGNED-OFF] Bug 17578: GetMemberDetails - Remove authflags - 2 This script is not used from the Koha codebase and does not seem very useful. We could rewrite it if needed later (ie. if someone complains I will rewrite it). Signed-off-by: Josef Moravec <josef.moravec@gmail.com>
Created attachment 57820 [details] [review] [SIGNED-OFF] Bug 17578: GetMemberDetails - Remove amountoutstanding The amountoutstanding value set by GetMemberDetails was only used in a few places. In that case it makes sense to only retrieve it when needed. Test plan: 1/ Add fines to a patron, on the OPAC patron info page, you should see a "Fines" tab 2/ Add credit to a patron, you should see the credit displayed 3/ Set the pref maxoutstanding to 3 4/ Add a fine of 4 to a patron 5/ Try to place an hold for this patron => You should get a "too much oweing" message Signed-off-by: Josef Moravec <josef.moravec@gmail.com>
Created attachment 57821 [details] [review] [SIGNED-OFF] Bug 17578: GetMemberDetails - Remove flags Same as authflags, a flags key is set containing all the patron flags. It is only used in a few places and it's better to call C4::Members::patronflags when we need it. Test plan: Look at the diff and confirm that the change make sense Use git grep to confirm we do not use the flags somewhere else. Signed-off-by: Josef Moravec <josef.moravec@gmail.com>
Created attachment 57822 [details] [review] [SIGNED-OFF] Bug 17578: GetMemberDetails - Remove is_expired The is_expired value is used in 2 places, let's use Koha::Patron->is_expired instead. Test plan: Depending on the different value of BlockExpiredPatronOpacActions for the patron category, a patron must be blocked if he has expired. Confirm that behavior from opac-renew and opac-reserve scripts Signed-off-by: Josef Moravec <josef.moravec@gmail.com>
Created attachment 57823 [details] [review] [SIGNED-OFF] Bug 17578: GetMemberDetails - Remove reservefee Same as other patches, reservefee is only used in opac-reserve.pl Test plan; Set reserve fee for a patron category Place a hold at the OPAC with one of these patrons. You must get a message about the reserve fee. Signed-off-by: Josef Moravec <josef.moravec@gmail.com>
Created attachment 57824 [details] [review] [SIGNED-OFF] Bug 17578: GetMemberDetails - Remove enrolmentperiod This value is not used anywhere Test plan: git grep enrolmentperiod| grep -v installer| grep -v translator|vim - should show you that I am right Signed-off-by: Josef Moravec <josef.moravec@gmail.com>
Created attachment 57825 [details] [review] [SIGNED-OFF] Bug 17578: GetMemberDetails - Remove GetMemberDetails All the values different from the ones GetMember returned has been managed outside of GetMemberDetails. It looks safe to replace all the occurrences of GetMemberDetails with GetMember. Signed-off-by: Josef Moravec <josef.moravec@gmail.com>
Created attachment 57826 [details] [review] [SIGNED-OFF] But 17578: (followup) amountoutstanding Signed-off-by: Josef Moravec <josef.moravec@gmail.com>
t/db_dependent/Members.t ............................... 1/79 # Failed test 'TrackLastPatronActivity - 3 patrons must be deleted' # at t/db_dependent/Members.t line 355. # got: '2' # expected: '3' # Looks like you planned 79 tests but ran 77. # Looks like you failed 1 test of 77 run. t/db_dependent/Members.t ............................... Dubious, test returned 1 (wstat 256, 0x100) Failed 3/79 subtests Test Summary Report ------------------- t/db_dependent/Members.t (Wstat: 256 Tests: 77 Failed: 1) Failed test: 64 Non-zero exit status: 1 Parse errors: Bad plan. You planned 79 tests but ran 77.
(In reply to Kyle M Hall from comment #48) > t/db_dependent/Members.t ............................... 1/79 > # Failed test 'TrackLastPatronActivity - 3 patrons must be deleted' Not related, see bug 17713
fatal: sha1 information is lacking or useless (circ/circulation.pl). Repository lacks necessary blobs to fall back on 3-way merge. Cannot fall back to three-way merge. Patch failed at 0001 Bug 17578: GetMemberDetails - Remove GetMemberDetails
Created attachment 57972 [details] [review] Bug 17578: GetMemberDetails - Remove GetMemberDetails All the values different from the ones GetMember returned has been managed outside of GetMemberDetails. It looks safe to replace all the occurrences of GetMemberDetails with GetMember. Signed-off-by: Josef Moravec <josef.moravec@gmail.com>
Created attachment 57973 [details] [review] But 17578: (followup) amountoutstanding Signed-off-by: Josef Moravec <josef.moravec@gmail.com>
Created attachment 57974 [details] [review] Bug 17578: GetMemberDetails - Remove BlockExpiredPatronOpacActions The correct way to get the value of BlockExpiredPatronOpacActions from a patron object is to get the patron category then call the effective_BlockExpiredPatronOpacActions: $patron->category->effective_BlockExpiredPatronOpacActions So this patch applies this change and remove this value from the GetMemberDetails subroutine. Signed-off-by: Josef Moravec <josef.moravec@gmail.com> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Created attachment 57975 [details] [review] Bug 17578: GetMemberDetails - Remove authflags - 1 GetMemberDetails create a authflags key, but this key is only used from 2 different places. One is a very simple script, which does not seem very usefull C4/SIP/interactive_members_dump.pl. I propose to simply remove it. The other one is the member-flags.pl script. What is done in this one is a bit weird since we a doing twice the same query (it was not highlighted before this patch). We will need to fix that later. At the moment the goal it to remove the GetMemberDetails subroutine without introducing any regressions (and so without adding big changes) Test plan: Select/unselect permissions for a patron, save and edit again. The behavior of the permission checkboxes should be ok Signed-off-by: Josef Moravec <josef.moravec@gmail.com> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Created attachment 57976 [details] [review] Bug 17578: GetMemberDetails - Remove authflags - 2 This script is not used from the Koha codebase and does not seem very useful. We could rewrite it if needed later (ie. if someone complains I will rewrite it). Signed-off-by: Josef Moravec <josef.moravec@gmail.com> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Created attachment 57977 [details] [review] Bug 17578: GetMemberDetails - Remove amountoutstanding The amountoutstanding value set by GetMemberDetails was only used in a few places. In that case it makes sense to only retrieve it when needed. Test plan: 1/ Add fines to a patron, on the OPAC patron info page, you should see a "Fines" tab 2/ Add credit to a patron, you should see the credit displayed 3/ Set the pref maxoutstanding to 3 4/ Add a fine of 4 to a patron 5/ Try to place an hold for this patron => You should get a "too much oweing" message Signed-off-by: Josef Moravec <josef.moravec@gmail.com> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Created attachment 57978 [details] [review] Bug 17578: GetMemberDetails - Remove flags Same as authflags, a flags key is set containing all the patron flags. It is only used in a few places and it's better to call C4::Members::patronflags when we need it. Test plan: Look at the diff and confirm that the change make sense Use git grep to confirm we do not use the flags somewhere else. Signed-off-by: Josef Moravec <josef.moravec@gmail.com> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Created attachment 57979 [details] [review] Bug 17578: GetMemberDetails - Remove is_expired The is_expired value is used in 2 places, let's use Koha::Patron->is_expired instead. Test plan: Depending on the different value of BlockExpiredPatronOpacActions for the patron category, a patron must be blocked if he has expired. Confirm that behavior from opac-renew and opac-reserve scripts Signed-off-by: Josef Moravec <josef.moravec@gmail.com> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Created attachment 57980 [details] [review] Bug 17578: GetMemberDetails - Remove reservefee Same as other patches, reservefee is only used in opac-reserve.pl Test plan; Set reserve fee for a patron category Place a hold at the OPAC with one of these patrons. You must get a message about the reserve fee. Signed-off-by: Josef Moravec <josef.moravec@gmail.com> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Created attachment 57981 [details] [review] Bug 17578: GetMemberDetails - Remove enrolmentperiod This value is not used anywhere Test plan: git grep enrolmentperiod| grep -v installer| grep -v translator|vim - should show you that I am right Signed-off-by: Josef Moravec <josef.moravec@gmail.com> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Created attachment 57982 [details] [review] Bug 17578: GetMemberDetails - Remove GetMemberDetails All the values different from the ones GetMember returned has been managed outside of GetMemberDetails. It looks safe to replace all the occurrences of GetMemberDetails with GetMember. Signed-off-by: Josef Moravec <josef.moravec@gmail.com> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Created attachment 57983 [details] [review] But 17578: (followup) amountoutstanding Signed-off-by: Josef Moravec <josef.moravec@gmail.com> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Created attachment 57984 [details] [review] QA Follow - Adjust number of tests Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
*** Bug 7058 has been marked as a duplicate of this bug. ***
Pushed to master for 17.05, thanks Jonathan!
This won't get backported to 16.11.x as it is an enhancement.