Bugzilla – Attachment 54691 Details for
Bug 14504
Add command-line script to batch delete items based on data in items table
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 14504: Add delete_items.pl: a command line batch deletion tool
Bug-14504-Add-deleteitemspl-a-command-line-batch-d.patch (text/plain), 4.52 KB, created by
Tomás Cohen Arazi (tcohen)
on 2016-08-22 13:38:37 UTC
(
hide
)
Description:
Bug 14504: Add delete_items.pl: a command line batch deletion tool
Filename:
MIME Type:
Creator:
Tomás Cohen Arazi (tcohen)
Created:
2016-08-22 13:38:37 UTC
Size:
4.52 KB
patch
obsolete
>From 6022d39ca7a0f8132f21c5eae54e6c78c8302cd5 Mon Sep 17 00:00:00 2001 >From: Barton Chittenden <barton@bywatersolutions.com> >Date: Tue, 7 Jul 2015 13:07:52 -0700 >Subject: [PATCH] Bug 14504: Add delete_items.pl: a command line batch deletion > tool > >http://bugs.koha-community.org/show_bug.cgi?id=14504 > >Signed-off-by: Heather Braum <hbraum@nekls.org> >Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io> >--- > misc/cronjobs/delete_items.pl | 158 ++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 158 insertions(+) > create mode 100755 misc/cronjobs/delete_items.pl > >diff --git a/misc/cronjobs/delete_items.pl b/misc/cronjobs/delete_items.pl >new file mode 100755 >index 0000000..c6683ff >--- /dev/null >+++ b/misc/cronjobs/delete_items.pl >@@ -0,0 +1,158 @@ >+#! /usr/bin/perl >+ >+use warnings; >+use strict; >+use Getopt::Long; >+use C4::Context; >+use C4::Items; >+use C4::Circulation; >+use Modern::Perl; >+use Pod::Usage; >+ >+my $VERSION='1.0'; >+ >+my $dbh = C4::Context->dbh(); >+ >+my $query = { >+ target_items => q|SELECT itemnumber from items| >+}; >+ >+my $GLOBAL = { >+ query => $query >+ , sth => {} >+}; >+ >+my $OPTIONS = { >+ criteria => [] >+ , flags => { >+ verbose => '' >+ , commit => '' >+ , help => '' >+ , manual => '' >+ , version => '' >+ } >+}; >+ >+GetOptions( >+ 'criteria=s' => $OPTIONS->{criteria} >+ , 'v|verbose' => sub { $OPTIONS->{flags}->{verbose} = 1 } >+ , 'V|version' => sub { $OPTIONS->{flags}->{version} = 1 } >+ , 'h|help' => sub { $OPTIONS->{flags}->{help} = 1 } >+ , 'm|manual' => sub { $OPTIONS->{flags}->{manual} = 1 } >+ , 'c|commit' => sub { $OPTIONS->{flags}->{commit} = 1 } # aka DO-EET! >+ , 'dry-run' => sub { $OPTIONS->{flags}->{commit} = 0; >+ $OPTIONS->{flags}->{verbose} = 1 } >+); >+ >+my @criteria = @{ $OPTIONS->{criteria} }; >+ >+if( $OPTIONS->{flags}->{version} ) { >+ say "$0 version $VERSION"; >+ exit; >+} >+ >+pod2usage( -verbose => 2 ) if $OPTIONS->{flags}->{manual}; >+pod2usage(1) if ( $OPTIONS->{flags}->{help} || scalar @criteria == 0 ); >+ >+ >+ >+ >+sub verbose { >+ say @_ if $OPTIONS->{flags}->{verbose}; >+} >+ >+ >+my $where_clause = ' where ' . join ( " and ", @criteria ); >+ >+verbose "Where statement: $where_clause"; >+ >+$GLOBAL->{sth}->{target_tiems} = $dbh->prepare( $query->{target_items} . $where_clause ); >+$GLOBAL->{sth}->{target_tiems}->execute(); >+ >+DELITEM: while ( my $item = $GLOBAL->{sth}->{target_tiems}->fetchrow_hashref() ) { >+ my $issue = GetOpenIssue( $item->{itemnumber} ); >+ if( defined $issue ) { >+ verbose "Cannot delete '$item->{itemnumber}' -- item is checked out." >+ } else { >+ verbose "Deleting '$item->{itemnumber}' "; >+ C4::Items::DelItem( { itemnumber => $item->{itemnumber} } ) if $OPTIONS->{flags}->{commit} ; >+ } >+} >+ >+=head1 NAME >+ >+ delete_items.pl - A batch item deletion tool, which generates a query against >+ the items database and deletes the items matching the >+ criteria specified in the command line arguments. >+ >+=head1 SYNOPSIS >+ >+delete_items.pl [--help|--manual|--version] >+ >+delete_items.pl [--verbose] [--dry-run] --criteria "I<SQL CONDITIONAL EXPRESSION>" ... [--commit] >+ >+=cut >+ >+=head1 OPTIONS >+ >+=over 8 >+ >+=item B<--help> >+ >+Show the brief help information. >+ >+=item B<--manual> >+ >+Read the manual, with examples. >+ >+=item B<--version> >+ >+Show the version number and exit. >+ >+=item B<--verbose> >+ >+Send the "WHERE" clause generated by the collected C<--criteria> >+arguments, as well as items affected to Standard Out. >+ >+=item B<--criteria> >+ >+The C<--criteria> option may called multiple times. The following argument >+must be a syntactically valid SQL statement which is part of the C<WHERE> >+clause querying the items table. These are joined by C<AND>. >+ >+=item B<--commit> >+ >+No items will be deleted unless the C<--commit> flag is present. >+ >+=item B<--dry-run> >+ >+Disables C<--commit> flag and enables C<--verbose> flag. >+ >+=back >+ >+=cut >+ >+ >+=head1 EXAMPLES >+ >+ The following is an example of this script: >+ >+ delete_items.pl --criteria "items.withdrawn ! 0" --criteria "items.withdrawn_on < $(date --date="13 month ago" --rfc-3339=date)" --commit >+ >+ delete_items.pl --criteria "itemlost >= '1'" --criteria "itemlost <='4'" --criteria "itemlost_on < '2014-04-28'" --commit >+ >+=cut >+ >+ >+=head1 DESCRIPTION >+ >+ This is a lightweight batch deletion tool for items, suitable for running in a cron job. >+ >+=cut >+ >+ >+=head1 AUTHOR >+ >+ Barton Chittenden <barton@bywatersolutions.com> >+ >+=cut >-- >2.9.2
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 14504
:
40830
|
42978
|
43445
|
43533
|
43788
|
43789
|
44013
|
44149
|
45789
|
49648
|
49649
|
49650
|
49651
|
49652
|
49653
|
52425
|
53224
|
53225
|
54514
|
54515
|
54516
|
54517
|
54518
|
54519
|
54520
|
54521
|
54522
|
54525
|
54530
|
54531
| 54691 |
54692
|
54693
|
54694
|
54695
|
54696
|
54697
|
54698
|
54699
|
54700
|
54701
|
54702
|
54703