Bugzilla – Attachment 64744 Details for
Bug 18071
Add new script update_authorities.pl
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 18071: Add authorities maintenance script
Bug-18071-Add-authorities-maintenance-script.patch (text/plain), 5.77 KB, created by
Marcel de Rooy
on 2017-06-30 06:50:45 UTC
(
hide
)
Description:
Bug 18071: Add authorities maintenance script
Filename:
MIME Type:
Creator:
Marcel de Rooy
Created:
2017-06-30 06:50:45 UTC
Size:
5.77 KB
patch
obsolete
>From c4f0e84cacfd0e94e540b2f77d868deda3b25db9 Mon Sep 17 00:00:00 2001 >From: Marcel de Rooy <m.de.rooy@rijksmuseum.nl> >Date: Tue, 7 Feb 2017 13:59:33 +0100 >Subject: [PATCH] Bug 18071: Add authorities maintenance script >Content-Type: text/plain; charset=utf-8 > >With bug 9988 the manual merge option of merge_authorities was removed. >(Note that it did not work any more too.) This patch reintroduces this >functionality on the command line. > >This maintenance script now allows you to force renumbering field 001 for >selected authid's, to delete authid's including the removal of references >in biblio records, as well as merging several authid's into one reference >record. > >Test plan: >[1] Test the -renumber parameter. Field 001 and 005 should be updated. >[2] Test the -delete parameter. Check if a linked biblio does no longer > contain a reference to the deleted authority. >[3] Test the -merge parameter. > Create two PERSO_NAME records (say A,B) and attach biblios to them. > Pick a CORPO_NAME record as reference record C. > Now pass -merge -reference C -authid A,B > Verify that A and B are gone, and the records link to C now. > >Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl> >--- > misc/maintenance/update_authorities.pl | 138 +++++++++++++++++++++++++++++++++ > 1 file changed, 138 insertions(+) > create mode 100755 misc/maintenance/update_authorities.pl > >diff --git a/misc/maintenance/update_authorities.pl b/misc/maintenance/update_authorities.pl >new file mode 100755 >index 0000000..2f2ebe9 >--- /dev/null >+++ b/misc/maintenance/update_authorities.pl >@@ -0,0 +1,138 @@ >+#!/usr/bin/perl >+ >+# Copyright Rijksmuseum 2017 >+# >+# This file is part of Koha. >+# >+# Koha is free software; you can redistribute it and/or modify it under the >+# terms of the GNU General Public License as published by the Free Software >+# Foundation; either version 3 of the License, or (at your option) any later >+# version. >+# >+# Koha is distributed in the hope that it will be useful, but WITHOUT ANY >+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR >+# A PARTICULAR PURPOSE. See the GNU General Public License for more details. >+# >+# You should have received a copy of the GNU General Public License along >+# with Koha; if not, write to the Free Software Foundation, Inc., >+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. >+ >+use Modern::Perl; >+ >+use Getopt::Long; >+use List::MoreUtils qw/uniq/; >+use Pod::Usage; >+ >+use C4::AuthoritiesMarc qw/AddAuthority DelAuthority GetAuthority merge/; >+ >+my ( @authid, $delete, $help, $merge, $reference, $renumber, $verbose ); >+GetOptions( >+ 'authid:s' => \@authid, >+ 'delete' => \$delete, >+ 'help' => \$help, >+ 'merge' => \$merge, >+ 'reference:i' => \$reference, >+ 'renumber' => \$renumber, >+ 'verbose' => \$verbose, >+); >+ >+@authid = map { split /[,]/, $_; } @authid; >+if( $delete ) { >+ delete_auth( \@authid ); >+} elsif( $merge ) { >+ merge_auth( \@authid, $reference ); >+} elsif( $renumber ) { >+ renumber( \@authid ); >+} elsif( $help ) { >+ pod2usage(1); >+} else { >+ pod2usage(1); >+} >+ >+sub delete_auth { >+ my ( $auths ) = @_; >+ foreach my $authid ( uniq(@$auths) ) { >+ DelAuthority({ authid => $authid }); # triggers a merge (read: cleanup) >+ print "Removing $authid\n" if $verbose; >+ } >+} >+ >+sub merge_auth { >+ my ( $auths, $reference ) = @_; >+ if( !$reference ) { >+ print "Reference parameter is missing\n"; >+ return; >+ } >+ my $marc_ref = GetAuthority( $reference ) || return; >+ # First update all linked biblios of reference >+ merge({ mergefrom => $reference, MARCfrom => $marc_ref, mergeto => $reference, MARCto => $marc_ref, override_limit => 1 }); >+ >+ # Merge all authid's into reference >+ my $marc; >+ foreach my $authid ( uniq(@$auths) ) { >+ next if $authid == $reference; >+ $marc = GetAuthority($authid) || next; >+ merge({ mergefrom => $authid, MARCfrom => $marc, mergeto => $reference, MARCto => $marc_ref, override_limit => 1 }); >+ DelAuthority({ authid => $authid, skip_merge => 1 }); >+ print "Record $authid merged into reference.\n" if $verbose; >+ } >+} >+ >+sub renumber { >+ my ( $auths ) = @_; >+ foreach my $authid ( uniq(@$auths) ) { >+ if( my $obj = Koha::Authorities->find($authid) ) { >+ my $marc = GetAuthority( $authid ); >+ AddAuthority( $marc, $authid, $obj->authtypecode ); >+ # AddAuthority contains an update of 001, 005 etc. >+ print "Renumbered $authid\n" if $verbose; >+ } else { >+ print "Record $authid not found!\n" if $verbose; >+ } >+ } >+} >+ >+=head1 NAME >+ >+update_authorities.pl >+ >+=head1 DESCRIPTION >+ >+Script to perform various authority related maintenance tasks. >+This version supports deleting an authority record and updating all linked >+biblio records. >+Furthermore it supports merging authority records with one reference record, >+and updating all linked biblio records. >+It also allows you to force a renumber, i.e. save the authid into field 001. >+ >+=head1 SYNOPSIS >+ >+update_authorities.pl -authid 1,2,3 -delete >+ >+update_authorities.pl -authid 1 -authid 2 -authid 3 -delete >+ >+update_authorities.pl -authid 1,2 -merge -reference 3 >+ >+update_authorities.pl -merge -reference 4 >+ >+update_authorities.pl -authid 1,2,3 -renumber >+ >+=head1 OPTIONS >+ >+authid: List authority numbers separated by commas or repeat the >+parameter. >+ >+delete: Delete the listed authority numbers and remove its references from >+linked biblio records. >+ >+merge: Merge the passed authid's into reference and update all linked biblio >+records. If you do not pass authid's, the linked biblio records of reference >+will be updated only. >+ >+renumber: Save authid into field 001. >+ >+=head1 AUTHOR >+ >+Marcel de Rooy, Rijksmuseum Amsterdam, The Netherlands >+ >+=cut >-- >2.1.4
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 18071
:
60250
|
64743
|
64744
|
66854
|
69428
|
70310
|
70311
|
70312
|
70320
|
70388
|
70400