Bugzilla – Attachment 109395 Details for
Bug 22417
Add a task queue
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 22417: Add Koha::BackgroundJob::BatchUpdateBiblio
Bug-22417-Add-KohaBackgroundJobBatchUpdateBiblio.patch (text/plain), 3.75 KB, created by
Jonathan Druart
on 2020-09-01 09:36:34 UTC
(
hide
)
Description:
Bug 22417: Add Koha::BackgroundJob::BatchUpdateBiblio
Filename:
MIME Type:
Creator:
Jonathan Druart
Created:
2020-09-01 09:36:34 UTC
Size:
3.75 KB
patch
obsolete
>From a9118cb768677c41f33ac6009c1baf86c1abf0ba Mon Sep 17 00:00:00 2001 >From: Jonathan Druart <jonathan.druart@bugs.koha-community.org> >Date: Mon, 25 Feb 2019 21:43:45 -0300 >Subject: [PATCH] Bug 22417: Add Koha::BackgroundJob::BatchUpdateBiblio > >Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io> > >Signed-off-by: David Cook <dcook@prosentient.com.au> > >Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl> >--- > Koha/BackgroundJob/BatchUpdateBiblio.pm | 97 +++++++++++++++++++++++++ > 1 file changed, 97 insertions(+) > create mode 100644 Koha/BackgroundJob/BatchUpdateBiblio.pm > >diff --git a/Koha/BackgroundJob/BatchUpdateBiblio.pm b/Koha/BackgroundJob/BatchUpdateBiblio.pm >new file mode 100644 >index 0000000000..4e205bd187 >--- /dev/null >+++ b/Koha/BackgroundJob/BatchUpdateBiblio.pm >@@ -0,0 +1,97 @@ >+package Koha::BackgroundJob::BatchUpdateBiblio; >+ >+use Modern::Perl; >+use Koha::BackgroundJobs; >+use Koha::DateUtils qw( dt_from_string ); >+use JSON qw( encode_json decode_json ); >+use Net::RabbitFoot; >+ >+use base 'Koha::BackgroundJob'; >+ >+our $channel; >+sub process { >+ my ( $self, $args, $channel ) = @_; >+ >+ my $job_type = $args->{job_type}; >+ >+ return unless exists $args->{job_id}; >+ >+ my $job = Koha::BackgroundJobs->find( $args->{job_id} ); >+ >+ my $job_progress = 0; >+ $job->started_on(dt_from_string) >+ ->progress($job_progress) >+ ->status('started') >+ ->store; >+ >+ my $mmtid = $args->{mmtid}; >+ my $record_type = $args->{record_type}; >+ my @record_ids = @{ $args->{record_ids} }; >+ >+ my $report = { >+ total_records => 0, >+ total_success => 0, >+ }; >+ my @messages; >+ my $dbh = C4::Context->dbh; >+ $dbh->{RaiseError} = 1; >+ RECORD_IDS: for my $biblionumber ( sort { $a <=> $b } @record_ids ) { >+ $report->{total_records}++; >+ next unless $biblionumber; >+ >+ # Modify the biblio >+ my $error = eval { >+ my $record = C4::Biblio::GetMarcBiblio({ biblionumber => $biblionumber }); >+ C4::MarcModificationTemplates::ModifyRecordWithTemplate( $mmtid, $record ); >+ my $frameworkcode = C4::Biblio::GetFrameworkCode( $biblionumber ); >+ C4::Biblio::ModBiblio( $record, $biblionumber, $frameworkcode ); >+ }; >+ if ( $error and $error != 1 or $@ ) { # ModBiblio returns 1 if everything as gone well >+ push @messages, { >+ type => 'error', >+ code => 'biblio_not_modified', >+ biblionumber => $biblionumber, >+ error => ($@ ? $@ : $error), >+ }; >+ } else { >+ push @messages, { >+ type => 'success', >+ code => 'biblio_modified', >+ biblionumber => $biblionumber, >+ }; >+ $report->{total_success}++; >+ } >+ $job->progress( ++$job_progress )->store; >+ } >+ >+ my $job_data = decode_json $job->data; >+ $job_data->{messages} = \@messages; >+ $job_data->{report} = $report; >+ >+ $job->ended_on(dt_from_string) >+ ->status('finished') >+ ->data(encode_json $job_data) >+ ->store; >+ $channel->ack(); # FIXME Is that ok even on failure? >+} >+ >+sub enqueue { >+ my ( $self, $args) = @_; >+ >+ # TODO Raise exception instead >+ return unless exists $args->{mmtid}; >+ return unless exists $args->{record_type}; #FIXME RMME >+ return unless exists $args->{record_ids}; >+ >+ my $mmtid = $args->{mmtid}; >+ my $record_type = $args->{record_type}; >+ my @record_ids = @{ $args->{record_ids} }; >+ >+ $self->SUPER::enqueue({ >+ job_type => 'batch_biblio_record_modification', # FIXME Must be a global const >+ job_size => scalar @record_ids, >+ job_args => {mmtid => $mmtid, record_type => $record_type, record_ids => \@record_ids,} >+ }); >+} >+ >+1; >-- >2.20.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 22417
:
105542
|
105543
|
107385
|
107386
|
107387
|
107388
|
107389
|
107390
|
107391
|
107392
|
107393
|
107394
|
107395
|
107396
|
107397
|
107398
|
107399
|
107400
|
107401
|
107402
|
107403
|
107404
|
107405
|
107406
|
107481
|
107482
|
107682
|
108023
|
108024
|
108025
|
108026
|
108027
|
108028
|
108029
|
108030
|
108031
|
108032
|
108033
|
108034
|
108035
|
108036
|
108037
|
108038
|
108039
|
108040
|
108041
|
108042
|
108043
|
108044
|
108045
|
108046
|
108047
|
109270
|
109271
|
109319
|
109320
|
109321
|
109322
|
109323
|
109324
|
109325
|
109326
|
109327
|
109328
|
109329
|
109330
|
109331
|
109332
|
109333
|
109334
|
109335
|
109336
|
109337
|
109338
|
109339
|
109340
|
109341
|
109342
|
109343
|
109344
|
109345
|
109350
|
109351
|
109355
|
109390
|
109391
|
109392
|
109393
|
109394
|
109395
|
109396
|
109397
|
109398
|
109399
|
109400
|
109401
|
109402
|
109403
|
109404
|
109405
|
109406
|
109407
|
109408
|
109409
|
109410
|
109411
|
109412
|
109413
|
109414
|
109415
|
109416
|
109417
|
109418
|
109474
|
109475
|
109476
|
109477
|
110150
|
111091
|
111092
|
111093
|
111094
|
111095
|
111096
|
111097
|
111098
|
111099
|
111100
|
111101
|
111102
|
111103
|
111104
|
111105
|
111106
|
111107
|
111108
|
111109
|
111110
|
111111
|
111112
|
111113
|
111114
|
111115
|
111116
|
111117
|
111118
|
111119
|
111120
|
111121
|
111238
|
111239
|
111245