Bugzilla – Attachment 140822 Details for
Bug 29440
Refactor/clean up bulkmarcimport.pl
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 29440: defer biblio autolinking until records are indexed
Bug-29440-defer-biblio-autolinking-until-records-a.patch (text/plain), 5.48 KB, created by
David Gustafsson
on 2022-09-21 15:44:12 UTC
(
hide
)
Description:
Bug 29440: defer biblio autolinking until records are indexed
Filename:
MIME Type:
Creator:
David Gustafsson
Created:
2022-09-21 15:44:12 UTC
Size:
5.48 KB
patch
obsolete
>From 8efcf174056900a515240d1c6f024079328a2be4 Mon Sep 17 00:00:00 2001 >From: David Gustafsson <david.gustafsson@ub.gu.se> >Date: Wed, 21 Sep 2022 17:43:32 +0200 >Subject: [PATCH] Bug 29440: defer biblio autolinking until records are indexed > >--- > C4/Biblio.pm | 44 +++++++++++++++----------- > misc/migration_tools/bulkmarcimport.pl | 9 +++++- > 2 files changed, 33 insertions(+), 20 deletions(-) > >diff --git a/C4/Biblio.pm b/C4/Biblio.pm >index 9f9dd02726..c03d2393a0 100644 >--- a/C4/Biblio.pm >+++ b/C4/Biblio.pm >@@ -186,31 +186,36 @@ The first argument is a C<MARC::Record> object containing the > bib to add, while the second argument is the desired MARC > framework code. > >-This function also accepts a third, optional argument: a hashref >-to additional options. The only defined option is C<defer_marc_save>, >-which if present and mapped to a true value, causes C<AddBiblio> >-to omit the call to save the MARC in C<biblio_metadata.metadata> >-This option is provided B<only> >-for the use of scripts such as C<bulkmarcimport.pl> that may need >-to do some manipulation of the MARC record for item parsing before >-saving it and which cannot afford the performance hit of saving >-the MARC record twice. Consequently, do not use that option >-unless you can guarantee that C<ModBiblioMarc> will be called. >+The C<$options> argument is a hashref with additional parameters: >+ >+=over 4 >+ >+=item C<defer_marc_save> >+ >+Causes C<AddBiblio> to omit the call to save the MARC in C<biblio_metadata.metadata> >+This option is provided B<only> for the use of scripts such as C<bulkmarcimport.pl> >+that may need to do some manipulation of the MARC record for item parsing before >+saving it and which cannot afford the performance hit of saving the MARC record twice. >+Consequently, do not use that option unless you can guarantee that C<ModBiblioMarc> >+will be called. >+ >+=item C<disable_autolink> >+ >+Unless C<disable_autolink> is passed AddBiblio will link record headings >+to authorities based on settings in the system preferences. This flag allows >+us to not link records when the authority linker is saving modifications. >+ >+=back > > =cut > > sub AddBiblio { >- my $record = shift; >- my $frameworkcode = shift; >- my $options = @_ ? shift : undef; >- my $defer_marc_save = 0; >+ my ($record, $frameworkcode, $options) = @_; >+ $options //= {}; > if (!$record) { > carp('AddBiblio called with undefined record'); > return; > } >- if ( defined $options and exists $options->{'defer_marc_save'} and $options->{'defer_marc_save'} ) { >- $defer_marc_save = 1; >- } > > my $schema = Koha::Database->schema; > my ( $biblionumber, $biblioitemnumber ); >@@ -286,12 +291,12 @@ sub AddBiblio { > # update MARC subfield that stores biblioitems.cn_sort > _koha_marc_update_biblioitem_cn_sort( $record, $olddata, $frameworkcode ); > >- if (C4::Context->preference('BiblioAddsAuthorities')) { >+ if ($options->{'disable_autolink'} && C4::Context->preference('BiblioAddsAuthorities')) { > BiblioAutoLink( $record, $frameworkcode ); > } > > # now add the record >- ModBiblioMarc( $record, $biblionumber ) unless $defer_marc_save; >+ ModBiblioMarc( $record, $biblionumber ) unless $options->{'defer_marc_save'}; > > # update OAI-PMH sets > if(C4::Context->preference("OAI-PMH:AutoUpdateSets")) { >@@ -545,6 +550,7 @@ sub BiblioAutoLink { > my $record = shift; > my $frameworkcode = shift; > my $verbose = shift; >+ > if (!$record) { > carp('Undefined record passed to BiblioAutoLink'); > return 0; >diff --git a/misc/migration_tools/bulkmarcimport.pl b/misc/migration_tools/bulkmarcimport.pl >index b9e961c911..1c115bb3cb 100755 >--- a/misc/migration_tools/bulkmarcimport.pl >+++ b/misc/migration_tools/bulkmarcimport.pl >@@ -19,6 +19,7 @@ use C4::Biblio qw( > ModBiblioMarc > GetFrameworkCode > GetMarcBiblio >+ BiblioAutoLink > ); > use C4::Koha; > use C4::Charset qw( MarcToUTF8Record SetUTF8Flag ); >@@ -125,6 +126,7 @@ if ($all) { > > my $using_elastic_search = (C4::Context->preference('SearchEngine') eq 'Elasticsearch'); > my $modify_biblio_marc_options = { >+ disable_autolink => 1, > defer_search_engine_indexing => $using_elastic_search, > overlay_context => { source => 'bulkmarcimport' } > }; >@@ -541,7 +543,7 @@ RECORD: foreach my $record (@{$marc_records}) { > } > } > elsif ($insert) { >- eval { ($record_id, $biblioitemnumber) = AddBiblio($record, $framework, { defer_marc_save => 1 }) }; >+ eval { ($record_id, $biblioitemnumber) = AddBiblio($record, $framework, { disable_autolink => 1, defer_marc_save => 1 }) }; > if ($@) { > warn "ERROR: Insert biblio $originalid failed: $@\n"; > printlog( { id => $originalid, op => "insert", status => "ERROR" } ) if ($logfile); >@@ -645,6 +647,11 @@ RECORD: foreach my $record (@{$marc_records}) { > $schema->txn_begin; > if ($indexer) { > $indexer->update_index(\@search_engine_record_ids, \@search_engine_records); >+ if (C4::Context->preference('BiblioAddsAuthorities')) { >+ foreach my $record (@search_engine_records) { >+ BiblioAutoLink($record, $framework); >+ } >+ } > @search_engine_record_ids = (); > @search_engine_records = (); > } >-- >2.35.1
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 29440
:
127479
|
127480
|
127481
|
127485
|
127486
|
127508
|
127509
|
127651
|
127652
|
127791
|
127792
|
127795
|
127796
|
127959
|
127960
|
127961
|
127963
|
128086
|
128087
|
128362
|
128890
|
128891
|
131176
|
131177
|
131180
|
131181
|
132942
|
140822
|
140823
|
140903
|
140904
|
140905
|
140906
|
140924
|
140925
|
140926
|
140927
|
140928
|
140987
|
140988
|
140989
|
143375
|
151293
|
151294
|
151295
|
151296
|
151297
|
151298
|
151299
|
151300
|
151301
|
157798
|
160148
|
160149
|
160150
|
160151
|
160152
|
160153
|
160154
|
160155
|
160156
|
160157
|
160477
|
160478
|
160479
|
160480
|
160481
|
160482
|
160483
|
160484
|
160485
|
160486
|
160487