[open-ils-commits] r9595 - in trunk/Open-ILS/src/perlmods/OpenILS:
Application WWW
svn at svn.open-ils.org
svn at svn.open-ils.org
Tue May 13 22:37:54 EDT 2008
Author: miker
Date: 2008-05-13 22:37:52 -0400 (Tue, 13 May 2008)
New Revision: 9595
Modified:
trunk/Open-ILS/src/perlmods/OpenILS/Application/Vandelay.pm
trunk/Open-ILS/src/perlmods/OpenILS/WWW/Vandelay.pm
Log:
spool processing
Modified: trunk/Open-ILS/src/perlmods/OpenILS/Application/Vandelay.pm
===================================================================
--- trunk/Open-ILS/src/perlmods/OpenILS/Application/Vandelay.pm 2008-05-13 21:42:43 UTC (rev 9594)
+++ trunk/Open-ILS/src/perlmods/OpenILS/Application/Vandelay.pm 2008-05-14 02:37:52 UTC (rev 9595)
@@ -7,10 +7,12 @@
use OpenSRF::AppSession;
use OpenSRF::Utils::SettingsClient;
+use OpenSRF::Utils::Cache;
use OpenILS::Utils::Fieldmapper;
use OpenILS::Utils::CStoreEditor qw/:funcs/;
+use MARC::Batch;
use MARC::Record;
use MARC::File::XML;
@@ -64,6 +66,7 @@
my $new_id = $e->create_vandelay_bib_queue( $queue );
$e->die_event unless ($new_id);
+ $e->commit;
$queue->id($new_id);
return $queue;
@@ -98,6 +101,7 @@
my $new_id = $e->create_vandelay_authority_queue( $queue );
$e->die_event unless ($new_id);
+ $e->commit;
$queue->id($new_id);
return $queue;
@@ -118,19 +122,17 @@
my $e = new_editor(authtoken => $auth, xact => 1);
- $queue = $e->retrieve_vandelay_bib_queue($queue)
+ $queue = $e->retrieve_vandelay_bib_queue($queue);
return $e->die_event unless $e->checkauth;
return $e->die_event unless
($e->allowed('CREATE_BIB_IMPORT_QUEUE', undef, $queue) ||
$e->allowed('CREATE_BIB_IMPORT_QUEUE', $queue->owner));
- my $rec = new Fieldmapper::vandelay::queued_bib_record();
- $rec->marc( $marc );
- $rec->queue( $queue->id );
+ my $new_id = _add_auth_rec($e, $marc, $queue->id);
- my $new_id = $e->create_vandelay_queued_bib_record( $rec );
$e->die_event unless ($new_id);
+ $e->commit;
$rec->id($new_id);
return $rec;
@@ -142,6 +144,18 @@
argc => 3,
);
+sub _add_bib_rec {
+ my $e = shift;
+ my $marc = shift;
+ my $queue = shift;
+
+ my $rec = new Fieldmapper::vandelay::queued_bib_record();
+ $rec->marc( $marc );
+ $rec->queue( $queue );
+
+ return $e->create_vandelay_queued_bib_record( $rec );
+}
+
sub add_record_to_authority_queue {
my $self = shift;
my $client = shift;
@@ -151,53 +165,117 @@
my $e = new_editor(authtoken => $auth, xact => 1);
- $queue = $e->retrieve_vandelay_authority_queue($queue)
+ $queue = $e->retrieve_vandelay_authority_queue($queue);
return $e->die_event unless $e->checkauth;
return $e->die_event unless
($e->allowed('CREATE_AUTHORITY_IMPORT_QUEUE', undef, $queue) ||
$e->allowed('CREATE_AUTHORITY_IMPORT_QUEUE', $queue->owner));
- my $rec = new Fieldmapper::vandelay::queued_authority_record();
- $rec->marc( $marc );
- $rec->queue( $queue->id );
+ my $new_id = _add_auth_rec($e, $marc, $queue->id);
- my $new_id = $e->create_vandelay_queued_authority_record( $rec );
$e->die_event unless ($new_id);
+ $e->commit;
$rec->id($new_id);
return $rec;
}
-__PACKAGE__->register_method(
+__PACKAGE__->register_method(
api_name => "open-ils.vandelay.queued_authority_record.create",
method => "add_record_to_authority_queue",
api_level => 1,
argc => 3,
-);
+);
-sub process_marc {
- my $r = shift;
- my $cgi = new CGI;
+sub _add_auth_rec {
+ my $e = shift;
+ my $marc = shift;
+ my $queue = shift;
- my $auth = $cgi->param('ses') || $cgi->cookie('ses');
+ my $rec = new Fieldmapper::vandelay::queued_authority_record();
+ $rec->marc( $marc );
+ $rec->queue( $queue );
- return Apache2::Const::FORBIDDEN unless verify_login($auth);
+ return $e->create_vandelay_queued_authority_record( $rec );
+}
- my $fingerprint = $cgi->param('fingerprint')
- my $type = $cgi->param('type')
- my $queue = $cgi->param('queue')
+sub process_spool {
+ my $self = shift;
+ my $client = shift;
+ my $auth = shift;
+ my $fingerprint = shift;
+ my $queue = shift;
+ my $e = new_editor(authtoken => $auth, xact => 1);
+
+ if ($self->{record_type} eq 'bib') {
+ return $e->die_event unless $e->checkauth;
+ return $e->die_event unless
+ ($e->allowed('CREATE_BIB_IMPORT_QUEUE', undef, $queue) ||
+ $e->allowed('CREATE_BIB_IMPORT_QUEUE', $queue->owner));
+ } else {
+ return $e->die_event unless $e->checkauth;
+ return $e->die_event unless
+ ($e->allowed('CREATE_AUTHORITY_IMPORT_QUEUE', undef, $queue) ||
+ $e->allowed('CREATE_AUTHORITY_IMPORT_QUEUE', $queue->owner));
+ }
+
+ my $method = 'open-ils.vandelay.queued_'.$self->{record_type}.'_record.create';
+ $method = $self->method_lookup( $method );
+
my $cache = new OpenSRF::Utils::Cache();
my $data = $cache->get_cache('vandelay_import_spool_' . $fingerprint);
$data = decode_base64($data);
- print "Content-type: text/plain; charset=utf-8\n\n$data_fingerprint";
+ my $fh = new IO::Scalar \$data;
- return Apache2::Const::OK;
+ my $batch = new MARC::Batch ( $type, $fh );
+ $batch->strict_off;
+ my $count = 0;
+ while (my $r = $batch->next) {
+ try {
+ (my $xml = $rec->as_xml_record()) =~ s/\n//sog;
+ $xml =~ s/^<\?xml.+\?\s*>//go;
+ $xml =~ s/>\s+</></go;
+ $xml =~ s/\p{Cc}//go;
+ $xml = $self->entityize($xml);
+ $xml =~ s/[\x00-\x1f]//go;
+
+ if ($self->{record_type} eq 'bib') {
+ _add_bib_rec( $e, $xml, $queue );
+ } else {
+ _add_auth_rec( $e, $xml, $queue );
+ }
+ $count++;
+
+ $client->respond( $count );
+ } catch Error with {
+ my $error = shift;
+ $log->warn("Encountered a bad record at Vandelay ingest: ".$error);
+ }
+ }
+
+ $e->commit;
+ return undef;
}
+__PACKAGE__->register_method(
+ api_name => "open-ils.vandelay.bib.process_spool",
+ method => "process_spool",
+ api_level => 1,
+ argc => 3,
+ record_type => 'bib'
+);
+__PACKAGE__->register_method(
+ api_name => "open-ils.vandelay.auth.process_spool",
+ method => "process_spool",
+ api_level => 1,
+ argc => 3,
+ record_type => 'auth'
+);
+
1;
Modified: trunk/Open-ILS/src/perlmods/OpenILS/WWW/Vandelay.pm
===================================================================
--- trunk/Open-ILS/src/perlmods/OpenILS/WWW/Vandelay.pm 2008-05-13 21:42:43 UTC (rev 9594)
+++ trunk/Open-ILS/src/perlmods/OpenILS/WWW/Vandelay.pm 2008-05-14 02:37:52 UTC (rev 9595)
@@ -16,15 +16,11 @@
use Text::CSV;
use OpenSRF::EX qw(:try);
-use OpenSRF::Utils qw/:datetime/;
use OpenSRF::Utils::Cache;
use OpenSRF::System;
use OpenSRF::AppSession;
use XML::LibXML;
-use XML::LibXSLT;
-use Encode;
-use Unicode::Normalize;
use OpenILS::Utils::Fieldmapper;
use OpenSRF::Utils::Logger qw/$logger/;
More information about the open-ils-commits
mailing list