Bugzilla – Attachment 169248 Details for
Bug 36770
Add a reportID parameter to export_records.pl
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 36770: (QA follow-up) Tidy export_records.pl
Bug-36770-QA-follow-up-Tidy-exportrecordspl.patch (text/plain), 9.94 KB, created by
Kyle M Hall (khall)
on 2024-07-19 16:12:58 UTC
(
hide
)
Description:
Bug 36770: (QA follow-up) Tidy export_records.pl
Filename:
MIME Type:
Creator:
Kyle M Hall (khall)
Created:
2024-07-19 16:12:58 UTC
Size:
9.94 KB
patch
obsolete
>From 2e2b4ec07b1bd7be5de781e95568723893b95aa3 Mon Sep 17 00:00:00 2001 >From: Kyle M Hall <kyle@bywatersolutions.com> >Date: Fri, 19 Jul 2024 12:08:42 -0400 >Subject: [PATCH] Bug 36770: (QA follow-up) Tidy export_records.pl > >Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com> >--- > misc/export_records.pl | 138 +++++++++++++++++++++-------------------- > 1 file changed, 72 insertions(+), 66 deletions(-) > >diff --git a/misc/export_records.pl b/misc/export_records.pl >index 0066d858627..683cb1971be 100755 >--- a/misc/export_records.pl >+++ b/misc/export_records.pl >@@ -19,8 +19,8 @@ > use Modern::Perl; > use MARC::File::XML; > use List::MoreUtils qw( uniq ); >-use Getopt::Long qw( GetOptions ); >-use Pod::Usage qw( pod2usage ); >+use Getopt::Long qw( GetOptions ); >+use Pod::Usage qw( pod2usage ); > > use Koha::Script; > use C4::Auth; >@@ -96,9 +96,9 @@ if ($help) { > pod2usage(1); > } > >-$filename ||= 'koha.mrc'; >+$filename ||= 'koha.mrc'; > $output_format ||= 'iso2709'; >-$record_type ||= 'bibs'; >+$record_type ||= 'bibs'; > > # Retrocompatibility for the format parameter > $output_format = 'iso2709' if $output_format eq 'marc'; >@@ -119,11 +119,11 @@ if ( $deleted_barcodes and $record_type ne 'bibs' ) { > pod2usage(q|--deleted_barcodes can only be used with biblios|); > } > >-if ( $report_id ) { >+if ($report_id) { > > # Check report exists >- $report = Koha::Reports->find( $report_id ); >- unless ( $report ) { >+ $report = Koha::Reports->find($report_id); >+ unless ($report) { > pod2usage( sprintf( "No saved report (%s) found", $report_id ) ); > } > $sql = $report->savedsql; >@@ -137,23 +137,22 @@ if ( $report_id ) { > > # convert SQL parameters to placeholders > my $params_needed = ( $sql =~ s/(<<[^>]+>>)/\?/g ); >- die("You supplied ". scalar @report_params . " parameter(s) and $params_needed are required by the report") if scalar @report_params != $params_needed; >+ die( "You supplied " . scalar @report_params . " parameter(s) and $params_needed are required by the report" ) >+ if scalar @report_params != $params_needed; > } > >-$start_accession = dt_from_string( $start_accession ) if $start_accession; >-$end_accession = dt_from_string( $end_accession ) if $end_accession; >+$start_accession = dt_from_string($start_accession) if $start_accession; >+$end_accession = dt_from_string($end_accession) if $end_accession; > > # Parse marc conditions > my @marc_conditions; > if ($marc_conditions) { >- foreach my $condition (split(/,\s*/, $marc_conditions)) { >- if ($condition =~ /^(\d{3})([\w\d]?)(=|(?:!=)|>|<)([^,]+)$/) { >- push @marc_conditions, [$1, $2, $3, $4]; >- } >- elsif ($condition =~ /^(exists|not_exists)\((\d{3})([\w\d]?)\)$/) { >- push @marc_conditions, [$2, $3, $1 eq 'exists' ? '?' : '!?']; >- } >- else { >+ foreach my $condition ( split( /,\s*/, $marc_conditions ) ) { >+ if ( $condition =~ /^(\d{3})([\w\d]?)(=|(?:!=)|>|<)([^,]+)$/ ) { >+ push @marc_conditions, [ $1, $2, $3, $4 ]; >+ } elsif ( $condition =~ /^(exists|not_exists)\((\d{3})([\w\d]?)\)$/ ) { >+ push @marc_conditions, [ $2, $3, $1 eq 'exists' ? '?' : '!?' ]; >+ } else { > die("Invalid condititon: $condition"); > } > } >@@ -164,13 +163,14 @@ my $dbh = C4::Context->dbh; > # Redirect stdout > open STDOUT, '>', $filename if $filename; > >- > my @record_ids; > >-$timestamp = ($timestamp) ? output_pref({ dt => dt_from_string($timestamp), dateformat => 'iso', dateonly => 0, }): ''; >+$timestamp = >+ ($timestamp) ? output_pref( { dt => dt_from_string($timestamp), dateformat => 'iso', dateonly => 0, } ) : ''; > > if ( $record_type eq 'bibs' ) { >- if ( $report ) { >+ if ($report) { >+ > # Run the report and fetch biblionumbers > my ($sth) = execute_query( > { >@@ -186,10 +186,11 @@ if ( $record_type eq 'bibs' ) { > pod2usage(q|The --report_id you specified returned no biblionumbers|); > } > } >- } elsif ( $timestamp ) { >- if (!$dont_export_items) { >+ } elsif ($timestamp) { >+ if ( !$dont_export_items ) { > push @record_ids, $_->{biblionumber} for @{ >- $dbh->selectall_arrayref(q| ( >+ $dbh->selectall_arrayref( >+ q| ( > SELECT biblio_metadata.biblionumber > FROM biblio_metadata > LEFT JOIN items USING(biblionumber) >@@ -201,48 +202,51 @@ if ( $record_type eq 'bibs' ) { > LEFT JOIN deleteditems USING(biblionumber) > WHERE biblio_metadata.timestamp >= ? > OR deleteditems.timestamp >= ? >- ) |, { Slice => {} }, ( $timestamp ) x 4 ); >+ ) |, { Slice => {} }, ($timestamp) x 4 >+ ); > }; > } else { > push @record_ids, $_->{biblionumber} for @{ >- $dbh->selectall_arrayref(q| ( >+ $dbh->selectall_arrayref( >+ q| ( > SELECT biblio_metadata.biblionumber > FROM biblio_metadata > WHERE biblio_metadata.timestamp >= ? >- ) |, { Slice => {} }, $timestamp ); >+ ) |, { Slice => {} }, $timestamp >+ ); > }; > } > } else { > my $conditions = { > ( $starting_biblionumber or $ending_biblionumber ) >- ? ( >- "me.biblionumber" => { >- ( $starting_biblionumber ? ( '>=' => $starting_biblionumber ) : () ), >- ( $ending_biblionumber ? ( '<=' => $ending_biblionumber ) : () ), >- } >+ ? ( >+ "me.biblionumber" => { >+ ( $starting_biblionumber ? ( '>=' => $starting_biblionumber ) : () ), >+ ( $ending_biblionumber ? ( '<=' => $ending_biblionumber ) : () ), >+ } > ) >- : (), >+ : (), > ( $starting_callnumber or $ending_callnumber ) >- ? ( >- callnumber => { >- ( $starting_callnumber ? ( '>=' => $starting_callnumber ) : () ), >- ( $ending_callnumber ? ( '<=' => $ending_callnumber ) : () ), >- } >+ ? ( >+ callnumber => { >+ ( $starting_callnumber ? ( '>=' => $starting_callnumber ) : () ), >+ ( $ending_callnumber ? ( '<=' => $ending_callnumber ) : () ), >+ } > ) >- : (), >+ : (), > ( $start_accession or $end_accession ) >- ? ( >- dateaccessioned => { >- ( $start_accession ? ( '>=' => $start_accession ) : () ), >- ( $end_accession ? ( '<=' => $end_accession ) : () ), >- } >+ ? ( >+ dateaccessioned => { >+ ( $start_accession ? ( '>=' => $start_accession ) : () ), >+ ( $end_accession ? ( '<=' => $end_accession ) : () ), >+ } > ) >- : (), >- ( $itemtype >- ? >- C4::Context->preference('item-level_itypes') >- ? ( 'items.itype' => $itemtype ) >- : ( 'me.itemtype' => $itemtype ) >+ : (), >+ ( >+ $itemtype >+ ? C4::Context->preference('item-level_itypes') >+ ? ( 'items.itype' => $itemtype ) >+ : ( 'me.itemtype' => $itemtype ) > : () > ), > >@@ -252,9 +256,9 @@ if ( $record_type eq 'bibs' ) { > push @record_ids, $biblioitem->biblionumber; > } > } >-} >-elsif ( $record_type eq 'auths' ) { >- if ( $report ) { >+} elsif ( $record_type eq 'auths' ) { >+ if ($report) { >+ > # Run the report and fetch authids > my ($sth) = execute_query( > { >@@ -304,38 +308,40 @@ if ( @record_ids and $id_list_file ) { > open my $fh, '<', $id_list_file or die "Cannot open file $id_list_file ($!)"; > my @filter_record_ids = <$fh>; > @filter_record_ids = map { my $id = $_; $id =~ s/[\r\n]*$//; $id } @filter_record_ids; >+ > # intersection > my %record_ids = map { $_ => 1 } @record_ids; > @record_ids = grep $record_ids{$_}, @filter_record_ids; > } > > if ($deleted_barcodes) { >- for my $record_id ( @record_ids ) { >- my $barcode = $dbh->selectall_arrayref(q| >+ for my $record_id (@record_ids) { >+ my $barcode = $dbh->selectall_arrayref( >+ q| > SELECT DISTINCT barcode > FROM deleteditems > WHERE deleteditems.biblionumber = ? > AND barcode IS NOT NULL AND barcode != '' >- |, { Slice => {} }, $record_id ); >+ |, { Slice => {} }, $record_id >+ ); > say $_->{barcode} for @$barcode; > } >-} >-else { >+} else { > Koha::Exporter::Record::export( >- { record_type => $record_type, >- record_ids => \@record_ids, >- record_conditions => @marc_conditions ? \@marc_conditions : undef, >- format => $output_format, >- csv_profile_id => $csv_profile_id, >- export_items => (not $dont_export_items), >- clean => $clean || 0, >+ { >+ record_type => $record_type, >+ record_ids => \@record_ids, >+ record_conditions => @marc_conditions ? \@marc_conditions : undef, >+ format => $output_format, >+ csv_profile_id => $csv_profile_id, >+ export_items => ( not $dont_export_items ), >+ clean => $clean || 0, > embed_see_from_headings => $embed_see_from_headings || 0, > } > ); > } > exit; > >- > =head1 NAME > > export records - This script exports record (biblios or authorities) >-- >2.30.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 36770
:
166170
|
166347
|
166442
|
169247
| 169248