Bugzilla – Attachment 41363 Details for
Bug 10612
Add ability to delete patrons with batch patron deletion tool
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 10612 - Add ability to delete patrons with batch patron deletion tool
Bug-10612---Add-ability-to-delete-patrons-with-bat.patch (text/plain), 12.04 KB, created by
Jonathan Druart
on 2015-08-05 07:49:23 UTC
(
hide
)
Description:
Bug 10612 - Add ability to delete patrons with batch patron deletion tool
Filename:
MIME Type:
Creator:
Jonathan Druart
Created:
2015-08-05 07:49:23 UTC
Size:
12.04 KB
patch
obsolete
>From 83b917323b2c62813b078888593235af01ace50e Mon Sep 17 00:00:00 2001 >From: Kyle M Hall <kyle@bywatersolutions.com> >Date: Wed, 11 Jun 2014 08:11:48 -0400 >Subject: [PATCH] Bug 10612 - Add ability to delete patrons with batch patron > deletion tool > >This patch adds the ability to select a patron list for deletetion >when using the Batch patron deletion/anonymization tool. It also adds >buttons to the the patron lists table to access both the batch deletion >and batch modification directly from the lists view. > >Test Plan: >1) Apply this patch >2) Create a list of patrons with the new Patron Lists feature >3) Try using the batch edit link form the lists table >4) Try using the batch delete link from the lists table > >Signed-off-by: Nicole <nicole@bywatersolutions.com> > >Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org> >--- > .../prog/en/modules/patron_lists/lists.tt | 20 +++++++ > .../prog/en/modules/tools/cleanborrowers.tt | 30 +++++++--- > tools/cleanborrowers.pl | 68 +++++++++++++++------- > 3 files changed, 89 insertions(+), 29 deletions(-) > >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/patron_lists/lists.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/patron_lists/lists.tt >index dc1160a..a0d0f81 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/patron_lists/lists.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/patron_lists/lists.tt >@@ -45,6 +45,12 @@ > <th> </th> > <th> </th> > <th> </th> >+ [% IF CAN_user_tools_edit_patrons %] >+ <th> </th> >+ [% END %] >+ [% IF CAN_user_tools_delete_anonymize_patrons %] >+ <th> </th> >+ [% END %] > </tr> > </thead> > >@@ -68,6 +74,20 @@ > <i class="icon-trash"></i> Delete > </a> > </td> >+ [% IF CAN_user_tools_edit_patrons %] >+ <td> >+ <a class="btn btn-mini" href="/cgi-bin/koha/tools/modborrowers.pl?patron_list_id=[% l.patron_list_id %]&op=show"> >+ <i class="icon-edit"></i> Edit patrons <i class="icon-user"></i> >+ </a> >+ </td> >+ [% END %] >+ [% IF CAN_user_tools_delete_anonymize_patrons %] >+ <td> >+ <a class="btn btn-mini" href="/cgi-bin/koha/tools/cleanborrowers.pl?step=2&patron_list_id=[% l.patron_list_id %]"> >+ <i class="icon-trash"></i> Delete patrons <i class="icon-user"></i> >+ </a> >+ </td> >+ [% END %] > </tr> > [% END %] > </tbody> >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/cleanborrowers.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/tools/cleanborrowers.tt >index bd505fb..97d5953 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/cleanborrowers.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/tools/cleanborrowers.tt >@@ -11,7 +11,7 @@ > */ > function checkForm(form) { > if((form.checkbox[0].checked)){ >- if ( (!form.date1.value) && (!form.borrower_dateexpiry.value) && (!form.borrower_categorycode.value) ){ >+ if ( (!form.date1.value) && (!form.borrower_dateexpiry.value) && (!form.borrower_categorycode.value) && (!form.patron_list_id.value)){ > alert(_("Please enter at least one criterion for deletion!")); > return false; > } >@@ -87,8 +87,21 @@ > [% END %] > </select> > </li> >+ [% IF patron_lists %] >+ <li> >+ <label for="patron_list_id"><strong>Or</strong> use a patron list: </label> >+ <select id="patron_list_id" name="patron_list_id"> >+ <option value=""></option> >+ [% FOREACH pl IN patron_lists %] >+ <option value="[% pl.patron_list_id %]">[% pl.name %]</option> >+ [% END %] >+ </select> >+ <span class="hint">If using a patron list, no other criteria will be used.</span> >+ </li> >+ [% END %] > </ul> > </fieldset> >+ > <fieldset> > <legend>Anonymize checkout history</legend> > <h3><input id="checkissue" type="checkbox" name="checkbox" value="issue" /><label for="checkissue"> Verify you want to anonymize patron checkout history</label></h3> >@@ -117,12 +130,12 @@ > <fieldset> > <legend>Warnings</legend> > <ul> >- <li>[% IF ( totalToDelete ) %][% totalToDelete %] [% ELSE %]0 [% END %] patrons will be deleted</li> >- <li>[% IF ( totalToAnonymize ) %][% totalToAnonymize %] [% ELSE %]0 [% END %] checkout history will be anonymized</li> >+ <li>[% memberstodelete_list.size || 0 %] patrons will be deleted</li> >+ <li>[% memberstoanonymize_list.size || 0 %] patron's checkout histories will be anonymized</li> > </ul> > > <br /> >- [% IF ( totalToDelete ) %] >+ [% IF memberstodelete_list.size %] > <fieldset><legend>What do you want to do for deleted patrons?</legend> > <input id="delete" type="radio" name="radio" value="delete" /> > <label for="delete">Permanently delete these patrons</label> >@@ -132,12 +145,12 @@ > > <br /><input id="testrun" type="radio" name="radio" value="testrun" checked="checked" /> > <label for="testrun">Do not remove any patrons (test run)</label> >- <input type="hidden" name="do_delete" value="[% totalToDelete %]" /></fieldset> >+ <input type="hidden" name="do_delete" value="[% memberstodelete_list.size %]" /></fieldset> > > [% END %] >- [% IF ( totalToAnonymize ) %] >- Checkout history for [% totalToAnonymize %] patrons will be anonymized >- <input type="hidden" name="do_anonym" value="[% totalToAnonymize %]" /> >+ [% IF memberstoanonymize_list.size %] >+ Checkout history for [% memberstoanonymize_list.size %] patrons will be anonymized >+ <input type="hidden" name="do_anonym" value="[% memberstoanonymize_list.size %]" /> > [% END %] > > <input type="hidden" name="step" value="3" /> >@@ -145,6 +158,7 @@ > <input type="hidden" name="last_issue_date" value="[% last_issue_date | $KohaDates %]" /> > <input type="hidden" name="borrower_dateexpiry" value="[% borrower_dateexpiry | $KohaDates %]" /> > <input type="hidden" name="borrower_categorycode" value="[% borrower_categorycode %]" /> >+ <input type="hidden" name="patron_list_id" value="[% patron_list_id %] /> > </fieldset> > <fieldset class="action"><input type="submit" value="Finish" /> <a class="cancel" href="/cgi-bin/koha/tools/cleanborrowers.pl">Cancel</a></fieldset> > </form> >diff --git a/tools/cleanborrowers.pl b/tools/cleanborrowers.pl >index d1fc01c..35bc9d9 100755 >--- a/tools/cleanborrowers.pl >+++ b/tools/cleanborrowers.pl >@@ -41,7 +41,9 @@ use C4::Members; # GetBorrowersWhoHavexxxBorrowed. > use C4::Circulation; # AnonymiseIssueHistory. > use C4::VirtualShelves (); #no import > use Koha::DateUtils qw( dt_from_string output_pref ); >+use Koha::Database; > use Date::Calc qw/Today Add_Delta_YM/; >+use Koha::List::Patron; > > my $cgi = new CGI; > >@@ -64,6 +66,7 @@ my $borrower_dateexpiry = > $params->{borrower_dateexpiry} > ? dt_from_string $params->{borrower_dateexpiry} > : undef; >+my $patron_list_id = $params->{patron_list_id}; > > my $borrower_categorycode = $params->{'borrower_categorycode'} || q{}; > >@@ -81,28 +84,35 @@ if ( $step == 2 ) { > > my %checkboxes = map { $_ => 1 } split /\0/, $params->{'checkbox'}; > >- my $totalDel; > my $membersToDelete; >- if ( $checkboxes{borrower} ) { >- $membersToDelete = GetBorrowersToExpunge( >- _get_selection_params($not_borrowered_since, $borrower_dateexpiry, $borrower_categorycode) >- ); >- _skip_borrowers_with_nonzero_balance( $membersToDelete ); >- $totalDel = scalar @$membersToDelete; >- >+ if ($patron_list_id) { >+ my @patron_list_patrons = >+ Koha::Database->new()->schema()->resultset('PatronListPatron') >+ ->search( { patron_list_id => $patron_list_id } ); >+ $membersToDelete = \@patron_list_patrons; > } >- my $totalAno; >+ else { >+ if ( $checkboxes{borrower} ) { >+ $membersToDelete = GetBorrowersToExpunge( >+ _get_selection_params( >+ $not_borrowered_since, >+ $borrower_dateexpiry, >+ $borrower_categorycode, >+ ) >+ ); >+ } >+ } >+ _skip_borrowers_with_nonzero_balance($membersToDelete); >+ > my $membersToAnonymize; > if ( $checkboxes{issue} ) { > $membersToAnonymize = GetBorrowersWithIssuesHistoryOlderThan($last_issue_date); >- $totalAno = scalar @$membersToAnonymize; > } > > $template->param( >- totalToDelete => $totalDel, >- totalToAnonymize => $totalAno, > memberstodelete_list => $membersToDelete, > memberstoanonymize_list => $membersToAnonymize, >+ patron_list_id => $patron_list_id, > ); > } > >@@ -114,18 +124,32 @@ elsif ( $step == 3 ) { > > # delete members > if ($do_delete) { >- my $membersToDelete = GetBorrowersToExpunge( >- _get_selection_params($not_borrowered_since, $borrower_dateexpiry, $borrower_categorycode) >- ); >- _skip_borrowers_with_nonzero_balance( $membersToDelete ); >+ my $membersToDelete; >+ if ($patron_list_id) { >+ my @patron_list_patrons = >+ Koha::Database->new()->schema()->resultset('PatronListPatron') >+ ->search( { patron_list_id => $patron_list_id } ); >+ $membersToDelete = \@patron_list_patrons; >+ } >+ else { >+ $membersToDelete = GetBorrowersToExpunge( >+ _get_selection_params( >+ $not_borrowered_since, $borrower_dateexpiry, >+ $borrower_categorycode >+ ) >+ ); >+ } >+ _skip_borrowers_with_nonzero_balance($membersToDelete); >+ > $totalDel = scalar(@$membersToDelete); > $radio = $params->{'radio'}; > for ( my $i = 0 ; $i < $totalDel ; $i++ ) { > $radio eq 'testrun' && last; >- my $borrowernumber = $membersToDelete->[$i]->{'borrowernumber'}; >- $radio eq 'trash' && MoveMemberToDeleted( $borrowernumber ); >- C4::VirtualShelves::HandleDelBorrower( $borrowernumber ); >- DelMember( $borrowernumber ); >+ my $borrowernumber = $membersToDelete->[$i]->{'borrowernumber'} >+ || $membersToDelete->[$i]->get_column('borrowernumber'); >+ $radio eq 'trash' && MoveMemberToDeleted($borrowernumber); >+ C4::VirtualShelves::HandleDelBorrower($borrowernumber); >+ DelMember($borrowernumber); > } > $template->param( > do_delete => '1', >@@ -146,6 +170,8 @@ elsif ( $step == 3 ) { > trash => ( $radio eq "trash" ) ? (1) : (0), > testrun => ( $radio eq "testrun" ) ? 1: 0, > ); >+} else { # $step == 1 >+ $template->param( patron_lists => [ GetPatronLists() ] ); > } > > $template->param( >@@ -164,7 +190,7 @@ sub _skip_borrowers_with_nonzero_balance { > my $borrowers = shift; > my $balance; > @$borrowers = map { >- (undef, undef, $balance) = GetMemberIssuesAndFines( $_->{borrowernumber} ); >+ (undef, undef, $balance) = GetMemberIssuesAndFines( $_->{borrowernumber} || $_->get_column('borrowernumber') ); > ($balance != 0) ? (): ($_); > } @$borrowers; > } >-- >2.1.0
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 10612
:
19766
|
19767
|
21081
|
21444
|
21445
|
21446
|
22837
|
22838
|
28779
|
28780
|
36311
|
36313
|
36314
|
36315
|
41289
|
41363
|
41364
|
41365
|
46239
|
46279
|
46280
|
46834
|
47153
|
47224
|
47225
|
47226
|
47255
|
47259
|
47393
|
47394
|
47395
|
47396
|
47478
|
48833
|
48881
|
48888
|
48890
|
48891
|
48892
|
49596
|
49597
|
49607
|
49694
|
49740
|
49741
|
49766
|
49767
|
49768
|
49769
|
49770