[open-ils-commits] r17722 - in branches/rel_2_0/Open-ILS: examples src/extras/import src/perlmods/OpenILS/Application/Cat src/perlmods/OpenILS/Application/Storage/CDBI src/perlmods/OpenILS/WWW src/sql/Pg src/sql/Pg/upgrade xul/staff_client/server/cat (dbs)
svn at svn.open-ils.org
svn at svn.open-ils.org
Thu Sep 16 01:25:55 EDT 2010
Author: dbs
Date: 2010-09-16 01:25:51 -0400 (Thu, 16 Sep 2010)
New Revision: 17722
Added:
branches/rel_2_0/Open-ILS/src/sql/Pg/upgrade/0400.schema.unique_authority_index.sql
branches/rel_2_0/Open-ILS/src/sql/Pg/upgrade/0401.schema.authority_record_entry_drop_arn.sql
branches/rel_2_0/Open-ILS/src/sql/Pg/upgrade/0402.schema.unique_authority_index_revisited.sql
Modified:
branches/rel_2_0/Open-ILS/examples/fm_IDL.xml
branches/rel_2_0/Open-ILS/src/extras/import/marc2are.pl
branches/rel_2_0/Open-ILS/src/perlmods/OpenILS/Application/Cat/AuthCommon.pm
branches/rel_2_0/Open-ILS/src/perlmods/OpenILS/Application/Storage/CDBI/authority.pm
branches/rel_2_0/Open-ILS/src/perlmods/OpenILS/WWW/Exporter.pm
branches/rel_2_0/Open-ILS/src/sql/Pg/002.functions.config.sql
branches/rel_2_0/Open-ILS/src/sql/Pg/011.schema.authority.sql
branches/rel_2_0/Open-ILS/src/sql/Pg/020.schema.functions.sql
branches/rel_2_0/Open-ILS/src/sql/Pg/800.fkeys.sql
branches/rel_2_0/Open-ILS/xul/staff_client/server/cat/marcedit.js
Log:
Drop the arn_value / arn_source columns on authority.record_entry and create an index instead
The authority record number (ARN) was problematic when trying to generate
local authorities because the number had no correlation to the content of
the authority heading. By creating an index on authority records based on
their heading, thesaurus, and heading text, we can do a better job of
controlling the actual content of the authority records.
In a future release, we may convert this index to a unique index. 2.0
will give sites an opportunity to begin cleaning up their authorities
by identifying duplicate and problematic records through the
authority.normalize_heading(TEXT) database function.
Modified: branches/rel_2_0/Open-ILS/examples/fm_IDL.xml
===================================================================
--- branches/rel_2_0/Open-ILS/examples/fm_IDL.xml 2010-09-16 02:39:56 UTC (rev 17721)
+++ branches/rel_2_0/Open-ILS/examples/fm_IDL.xml 2010-09-16 05:25:51 UTC (rev 17722)
@@ -1401,8 +1401,6 @@
<class id="are" controller="open-ils.cstore open-ils.pcrud" oils_obj:fieldmapper="authority::record_entry" oils_persist:tablename="authority.record_entry" reporter:label="Authority Record Entry">
<fields oils_persist:primary="id" oils_persist:sequence="authority.record_entry_id_seq">
<field name="active" reporter:datatype="bool"/>
- <field name="arn_source" />
- <field name="arn_value" />
<field name="create_date" reporter:datatype="timestamp"/>
<field name="creator" />
<field name="deleted" reporter:datatype="bool"/>
Modified: branches/rel_2_0/Open-ILS/src/extras/import/marc2are.pl
===================================================================
--- branches/rel_2_0/Open-ILS/src/extras/import/marc2are.pl 2010-09-16 02:39:56 UTC (rev 17721)
+++ branches/rel_2_0/Open-ILS/src/extras/import/marc2are.pl 2010-09-16 05:25:51 UTC (rev 17722)
@@ -61,9 +61,6 @@
while ( try { $rec = $batch->next } otherwise { $rec = -1 } ) {
next if ($rec == -1);
my $id = $count;
- my $_001 = $rec->field('001');
- my $arn = $count;
- $arn = $_001->data if ($_001);
(my $xml = $rec->as_xml_record()) =~ s/\n//sog;
$xml =~ s/^<\?xml.+\?\s*>//go;
@@ -81,8 +78,6 @@
$bib->create_date('now');
$bib->editor($user);
$bib->edit_date('now');
- $bib->arn_source('LEGACY');
- $bib->arn_value($arn);
$bib->last_xact_id('IMPORT-'.$starttime);
print OpenSRF::Utils::JSON->perl2JSON($bib)."\n";
Modified: branches/rel_2_0/Open-ILS/src/perlmods/OpenILS/Application/Cat/AuthCommon.pm
===================================================================
--- branches/rel_2_0/Open-ILS/src/perlmods/OpenILS/Application/Cat/AuthCommon.pm 2010-09-16 02:39:56 UTC (rev 17721)
+++ branches/rel_2_0/Open-ILS/src/perlmods/OpenILS/Application/Cat/AuthCommon.pm 2010-09-16 05:25:51 UTC (rev 17722)
@@ -36,10 +36,6 @@
$rec->edit_date('now');
$rec->marc($U->entityize($marc_doc->documentElement->toString));
- my ($arn, $evt) = find_arn($e, $marc_doc);
- return $evt if $evt;
- $rec->arn_value($arn);
-
$rec = $e->create_authority_record_entry($rec) or return $e->die_event;
# we don't care about the result, just fire off the request
@@ -68,24 +64,4 @@
return $rec;
}
-sub find_arn {
- my($e, $marc_doc) = @_;
-
- my $xpath = '//marc:controlfield[@tag="001"]';
- my ($arn) = $marc_doc->documentElement->findvalue($xpath);
-
- if(my $existing_rec = $e->search_authority_record_entry({arn_value => $arn, deleted => 'f'})->[0]) {
- # this arn is taken
- return (
- undef,
- OpenILS::Event->new(
- 'AUTHORITY_RECORD_NUMBER_EXISTS',
- payload => {existing_record => $existing_rec, arn => $arn}
- )
- );
- }
-
- return ($arn);
-}
-
1;
Modified: branches/rel_2_0/Open-ILS/src/perlmods/OpenILS/Application/Storage/CDBI/authority.pm
===================================================================
--- branches/rel_2_0/Open-ILS/src/perlmods/OpenILS/Application/Storage/CDBI/authority.pm 2010-09-16 02:39:56 UTC (rev 17721)
+++ branches/rel_2_0/Open-ILS/src/perlmods/OpenILS/Application/Storage/CDBI/authority.pm 2010-09-16 05:25:51 UTC (rev 17722)
@@ -10,7 +10,7 @@
authority::record_entry->table( 'authority_record_entry' );
authority::record_entry->columns( Primary => qw/id/ );
-authority::record_entry->columns( Essential => qw/arn_source arn_value creator editor
+authority::record_entry->columns( Essential => qw/creator editor
create_date edit_date source active
deleted marc last_xact_id/ );
Modified: branches/rel_2_0/Open-ILS/src/perlmods/OpenILS/WWW/Exporter.pm
===================================================================
--- branches/rel_2_0/Open-ILS/src/perlmods/OpenILS/WWW/Exporter.pm 2010-09-16 02:39:56 UTC (rev 17721)
+++ branches/rel_2_0/Open-ILS/src/perlmods/OpenILS/WWW/Exporter.pm 2010-09-16 05:25:51 UTC (rev 17722)
@@ -114,11 +114,6 @@
my $tcn_v = 'tcn_value';
my $tcn_s = 'tcn_source';
- if ($type eq 'authority') {
- $tcn_v = 'arn_value';
- $tcn_s = 'arn_source';
- }
-
my $holdings = $cgi->param('holdings') if ($type eq 'biblio');
my $location = $cgi->param('location') || 'gaaagpl'; # just because...
Modified: branches/rel_2_0/Open-ILS/src/sql/Pg/002.functions.config.sql
===================================================================
--- branches/rel_2_0/Open-ILS/src/sql/Pg/002.functions.config.sql 2010-09-16 02:39:56 UTC (rev 17721)
+++ branches/rel_2_0/Open-ILS/src/sql/Pg/002.functions.config.sql 2010-09-16 05:25:51 UTC (rev 17722)
@@ -437,8 +437,6 @@
NEW.marc,
E'(</(?:[^:]*?:)?record>)',
E'<datafield tag="901" ind1=" " ind2=" ">' ||
- '<subfield code="a">' || NEW.arn_value || E'</subfield>' ||
- '<subfield code="b">' || NEW.arn_source || E'</subfield>' ||
'<subfield code="c">' || NEW.id || E'</subfield>' ||
'<subfield code="t">' || TG_TABLE_SCHEMA || E'</subfield>' ||
E'</datafield>\\1'
Modified: branches/rel_2_0/Open-ILS/src/sql/Pg/011.schema.authority.sql
===================================================================
--- branches/rel_2_0/Open-ILS/src/sql/Pg/011.schema.authority.sql 2010-09-16 02:39:56 UTC (rev 17721)
+++ branches/rel_2_0/Open-ILS/src/sql/Pg/011.schema.authority.sql 2010-09-16 05:25:51 UTC (rev 17722)
@@ -24,8 +24,6 @@
CREATE TABLE authority.record_entry (
id BIGSERIAL PRIMARY KEY,
- arn_source TEXT NOT NULL DEFAULT 'AUTOGEN',
- arn_value TEXT NOT NULL,
creator INT NOT NULL DEFAULT 1,
editor INT NOT NULL DEFAULT 1,
create_date TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(),
@@ -39,7 +37,6 @@
);
CREATE INDEX authority_record_entry_creator_idx ON authority.record_entry ( creator );
CREATE INDEX authority_record_entry_editor_idx ON authority.record_entry ( editor );
-CREATE UNIQUE INDEX authority_record_unique_tcn ON authority.record_entry (arn_source,arn_value) WHERE deleted = FALSE OR deleted IS FALSE;
CREATE TRIGGER a_marcxml_is_well_formed BEFORE INSERT OR UPDATE ON authority.record_entry FOR EACH ROW EXECUTE PROCEDURE biblio.check_marcxml_well_formed();
CREATE TRIGGER b_maintain_901 BEFORE INSERT OR UPDATE ON authority.record_entry FOR EACH ROW EXECUTE PROCEDURE maintain_901();
CREATE TRIGGER c_maintain_control_numbers BEFORE INSERT OR UPDATE ON authority.record_entry FOR EACH ROW EXECUTE PROCEDURE maintain_control_numbers();
Modified: branches/rel_2_0/Open-ILS/src/sql/Pg/020.schema.functions.sql
===================================================================
--- branches/rel_2_0/Open-ILS/src/sql/Pg/020.schema.functions.sql 2010-09-16 02:39:56 UTC (rev 17721)
+++ branches/rel_2_0/Open-ILS/src/sql/Pg/020.schema.functions.sql 2010-09-16 05:25:51 UTC (rev 17722)
@@ -257,3 +257,91 @@
*/
$$;
+-- Intended to be used in a unique index on authority.record_entry like so:
+-- CREATE UNIQUE INDEX unique_by_heading_and_thesaurus
+-- ON authority.record_entry (authority.normalize_heading(marc))
+-- WHERE deleted IS FALSE or deleted = FALSE;
+CREATE OR REPLACE FUNCTION authority.normalize_heading( TEXT ) RETURNS TEXT AS $func$
+ use strict;
+ use warnings;
+
+ use utf8;
+ use MARC::Record;
+ use MARC::File::XML (BinaryEncoding => 'UTF8');
+ use UUID::Tiny ':std';
+
+ my $xml = shift() or return undef;
+
+ my $r;
+
+ # Prevent errors in XML parsing from blowing out ungracefully
+ eval {
+ $r = MARC::Record->new_from_xml( $xml );
+ 1;
+ } or do {
+ return 'BAD_MARCXML_' . create_uuid_as_string(UUID_MD5, $xml);
+ };
+
+ if (!$r) {
+ return 'BAD_MARCXML_' . create_uuid_as_string(UUID_MD5, $xml);
+ }
+
+ # From http://www.loc.gov/standards/sourcelist/subject.html
+ my $thes_code_map = {
+ a => 'lcsh',
+ b => 'lcshac',
+ c => 'mesh',
+ d => 'nal',
+ k => 'cash',
+ n => 'notapplicable',
+ r => 'aat',
+ s => 'sears',
+ v => 'rvm',
+ };
+
+ # Default to "No attempt to code" if the leader is horribly broken
+ my $fixed_field = $r->field('008');
+ my $thes_char = '|';
+ if ($fixed_field) {
+ $thes_char = substr($fixed_field->data(), 11, 1) || '|';
+ }
+
+ my $thes_code = 'UNDEFINED';
+
+ if ($thes_char eq 'z') {
+ # Grab the 040 $f per http://www.loc.gov/marc/authority/ad040.html
+ $thes_code = $r->subfield('040', 'f') || 'UNDEFINED';
+ } elsif ($thes_code_map->{$thes_char}) {
+ $thes_code = $thes_code_map->{$thes_char};
+ }
+
+ my $auth_txt = '';
+ my $head = $r->field('1..');
+ if ($head) {
+ # Concatenate all of these subfields together, prefixed by their code
+ # to prevent collisions along the lines of "Fiction, North Carolina"
+ foreach my $sf ($head->subfields()) {
+ $auth_txt .= '‡' . $sf->[0] . ' ' . $sf->[1];
+ }
+ }
+
+ # Perhaps better to parameterize the spi and pass as a parameter
+ $auth_txt =~ s/'//go;
+
+ if ($auth_txt) {
+ my $result = spi_exec_query("SELECT public.naco_normalize('$auth_txt') AS norm_text");
+ my $norm_txt = $result->{rows}[0]->{norm_text};
+ return $head->tag() . "_" . $thes_code . " " . $norm_txt;
+ }
+
+ return 'NOHEADING_' . $thes_code . ' ' . create_uuid_as_string(UUID_MD5, $xml);
+$func$ LANGUAGE 'plperlu' IMMUTABLE;
+
+COMMENT ON FUNCTION authority.normalize_heading( TEXT ) IS $$
+/**
+* Extract the authority heading, thesaurus, and NACO-normalized values
+* from an authority record. The primary purpose is to build a unique
+* index to defend against duplicated authority records from the same
+* thesaurus.
+*/
+$$;
Modified: branches/rel_2_0/Open-ILS/src/sql/Pg/800.fkeys.sql
===================================================================
--- branches/rel_2_0/Open-ILS/src/sql/Pg/800.fkeys.sql 2010-09-16 02:39:56 UTC (rev 17721)
+++ branches/rel_2_0/Open-ILS/src/sql/Pg/800.fkeys.sql 2010-09-16 05:25:51 UTC (rev 17722)
@@ -117,4 +117,6 @@
ALTER TABLE config.org_unit_setting_type ADD CONSTRAINT view_perm_fkey FOREIGN KEY (view_perm) REFERENCES permission.perm_list (id) ON UPDATE CASCADE ON DELETE RESTRICT DEFERRABLE INITIALLY DEFERRED;
ALTER TABLE config.org_unit_setting_type ADD CONSTRAINT update_perm_fkey FOREIGN KEY (update_perm) REFERENCES permission.perm_list (id) ON UPDATE CASCADE DEFERRABLE INITIALLY DEFERRED;
+CREATE INDEX by_heading_and_thesaurus ON authority.record_entry (authority.normalize_heading(marc)) WHERE deleted IS FALSE or deleted = FALSE;
+
COMMIT;
Copied: branches/rel_2_0/Open-ILS/src/sql/Pg/upgrade/0400.schema.unique_authority_index.sql (from rev 17704, trunk/Open-ILS/src/sql/Pg/upgrade/0400.schema.unique_authority_index.sql)
===================================================================
--- branches/rel_2_0/Open-ILS/src/sql/Pg/upgrade/0400.schema.unique_authority_index.sql (rev 0)
+++ branches/rel_2_0/Open-ILS/src/sql/Pg/upgrade/0400.schema.unique_authority_index.sql 2010-09-16 05:25:51 UTC (rev 17722)
@@ -0,0 +1,96 @@
+BEGIN;
+
+INSERT INTO config.upgrade_log (version) VALUES ('0400'); -- dbs
+
+CREATE OR REPLACE FUNCTION authority.normalize_heading( TEXT ) RETURNS TEXT AS $func$
+ use strict;
+ use warnings;
+ use MARC::Record;
+ use MARC::File::XML (BinaryEncoding => 'UTF8');
+
+ my $xml = shift();
+ my $r = MARC::Record->new_from_xml( $xml );
+ return undef unless ($r);
+
+ # From http://www.loc.gov/standards/sourcelist/subject.html
+ my $thes_code_map = {
+ a => 'lcsh',
+ b => 'lcshac',
+ c => 'mesh',
+ d => 'nal',
+ k => 'cash',
+ n => 'notapplicable',
+ r => 'aat',
+ s => 'sears',
+ v => 'rvm',
+ };
+
+ # Default to "No attempt to code" if the leader is horribly broken
+ my $thes_char = substr($r->field('008')->data(), 11, 1) || '|';
+
+ my $thes_code = 'UNDEFINED';
+
+ if ($thes_char eq 'z') {
+ # Grab the 040 $f per http://www.loc.gov/marc/authority/ad040.html
+ $thes_code = $r->subfield('040', 'f') || 'UNDEFINED';
+ } elsif ($thes_code_map->{$thes_char}) {
+ $thes_code = $thes_code_map->{$thes_char};
+ }
+
+ my $head = $r->field('1..');
+ my $auth_txt = '';
+ foreach my $sf ($head->subfields()) {
+ $auth_txt .= $sf->[1];
+ }
+
+
+ # Perhaps better to parameterize the spi and pass as a parameter
+ $auth_txt =~ s/'//go;
+ my $result = spi_exec_query("SELECT public.naco_normalize('$auth_txt') AS norm_text");
+ my $norm_txt = $result->{rows}[0]->{norm_text};
+
+ return $head->tag() . "_" . $thes_code . " " . $norm_txt;
+$func$ LANGUAGE 'plperlu' IMMUTABLE;
+
+COMMENT ON FUNCTION authority.normalize_heading( TEXT ) IS $$
+/**
+* Extract the authority heading, thesaurus, and NACO-normalized values
+* from an authority record. The primary purpose is to build a unique
+* index to defend against duplicated authority records from the same
+* thesaurus.
+*/
+$$;
+
+COMMIT;
+
+-- Do this outside of a transaction to avoid failure if duplicate
+-- authority heading / thesaurus / heading text entries already
+-- exist in the database:
+CREATE UNIQUE INDEX unique_by_heading_and_thesaurus
+ ON authority.record_entry (authority.normalize_heading(marc))
+ WHERE deleted IS FALSE or deleted = FALSE
+;
+
+-- If the unique index fails, uncomment the following to create
+-- a regular index that will help find the duplicates in a hurry:
+--CREATE INDEX by_heading_and_thesaurus
+-- ON authority.record_entry (authority.normalize_heading(marc))
+-- WHERE deleted IS FALSE or deleted = FALSE
+--;
+
+-- Then find the duplicates like so to get an idea of how much
+-- pain you're looking at to clean things up:
+--SELECT id, authority.normalize_heading(marc)
+-- FROM authority.record_entry
+-- WHERE authority.normalize_heading(marc) IN (
+-- SELECT authority.normalize_heading(marc)
+-- FROM authority.record_entry
+-- GROUP BY authority.normalize_heading(marc)
+-- HAVING COUNT(*) > 1
+-- )
+--;
+
+-- Once you have removed the duplicates and the CREATE UNIQUE INDEX
+-- statement succeeds, drop the temporary index to avoid unnecessary
+-- duplication:
+-- DROP INDEX authority.by_heading_and_thesaurus;
Copied: branches/rel_2_0/Open-ILS/src/sql/Pg/upgrade/0401.schema.authority_record_entry_drop_arn.sql (from rev 17706, trunk/Open-ILS/src/sql/Pg/upgrade/0401.schema.authority_record_entry_drop_arn.sql)
===================================================================
--- branches/rel_2_0/Open-ILS/src/sql/Pg/upgrade/0401.schema.authority_record_entry_drop_arn.sql (rev 0)
+++ branches/rel_2_0/Open-ILS/src/sql/Pg/upgrade/0401.schema.authority_record_entry_drop_arn.sql 2010-09-16 05:25:51 UTC (rev 17722)
@@ -0,0 +1,9 @@
+BEGIN;
+
+INSERT INTO config.upgrade_log (version) VALUES ('0401'); -- dbs
+
+DROP INDEX authority.authority_record_unique_tcn;
+ALTER TABLE authority.record_entry DROP COLUMN arn_value;
+ALTER TABLE authority.record_entry DROP COLUMN arn_source;
+
+COMMIT;
Copied: branches/rel_2_0/Open-ILS/src/sql/Pg/upgrade/0402.schema.unique_authority_index_revisited.sql (from rev 17714, trunk/Open-ILS/src/sql/Pg/upgrade/0402.schema.unique_authority_index_revisited.sql)
===================================================================
--- branches/rel_2_0/Open-ILS/src/sql/Pg/upgrade/0402.schema.unique_authority_index_revisited.sql (rev 0)
+++ branches/rel_2_0/Open-ILS/src/sql/Pg/upgrade/0402.schema.unique_authority_index_revisited.sql 2010-09-16 05:25:51 UTC (rev 17722)
@@ -0,0 +1,91 @@
+BEGIN;
+
+-- Make the authority heading normalization routine more defensive
+-- Also drop back to a plain index for 2.0, we will get more restrictive over time
+
+INSERT INTO config.upgrade_log (version) VALUES ('0402'); -- dbs
+
+CREATE OR REPLACE FUNCTION authority.normalize_heading( TEXT ) RETURNS TEXT AS $func$
+ use strict;
+ use warnings;
+
+ use utf8;
+ use MARC::Record;
+ use MARC::File::XML (BinaryEncoding => 'UTF8');
+ use UUID::Tiny ':std';
+
+ my $xml = shift() or return undef;
+
+ my $r;
+
+ # Prevent errors in XML parsing from blowing out ungracefully
+ eval {
+ $r = MARC::Record->new_from_xml( $xml );
+ 1;
+ } or do {
+ return 'BAD_MARCXML_' . create_uuid_as_string(UUID_MD5, $xml);
+ };
+
+ if (!$r) {
+ return 'BAD_MARCXML_' . create_uuid_as_string(UUID_MD5, $xml);
+ }
+
+ # From http://www.loc.gov/standards/sourcelist/subject.html
+ my $thes_code_map = {
+ a => 'lcsh',
+ b => 'lcshac',
+ c => 'mesh',
+ d => 'nal',
+ k => 'cash',
+ n => 'notapplicable',
+ r => 'aat',
+ s => 'sears',
+ v => 'rvm',
+ };
+
+ # Default to "No attempt to code" if the leader is horribly broken
+ my $fixed_field = $r->field('008');
+ my $thes_char = '|';
+ if ($fixed_field) {
+ $thes_char = substr($fixed_field->data(), 11, 1) || '|';
+ }
+
+ my $thes_code = 'UNDEFINED';
+
+ if ($thes_char eq 'z') {
+ # Grab the 040 $f per http://www.loc.gov/marc/authority/ad040.html
+ $thes_code = $r->subfield('040', 'f') || 'UNDEFINED';
+ } elsif ($thes_code_map->{$thes_char}) {
+ $thes_code = $thes_code_map->{$thes_char};
+ }
+
+ my $auth_txt = '';
+ my $head = $r->field('1..');
+ if ($head) {
+ # Concatenate all of these subfields together, prefixed by their code
+ # to prevent collisions along the lines of "Fiction, North Carolina"
+ foreach my $sf ($head->subfields()) {
+ $auth_txt .= '‡' . $sf->[0] . ' ' . $sf->[1];
+ }
+ }
+
+ # Perhaps better to parameterize the spi and pass as a parameter
+ $auth_txt =~ s/'//go;
+
+ if ($auth_txt) {
+ my $result = spi_exec_query("SELECT public.naco_normalize('$auth_txt') AS norm_text");
+ my $norm_txt = $result->{rows}[0]->{norm_text};
+ return $head->tag() . "_" . $thes_code . " " . $norm_txt;
+ }
+
+ return 'NOHEADING_' . $thes_code . ' ' . create_uuid_as_string(UUID_MD5, $xml);
+$func$ LANGUAGE 'plperlu' IMMUTABLE;
+
+DROP INDEX authority.unique_by_heading_and_thesaurus;
+
+CREATE INDEX by_heading_and_thesaurus
+ ON authority.record_entry (authority.normalize_heading(marc))
+ WHERE deleted IS FALSE or deleted = FALSE
+;
+
+COMMIT;
Modified: branches/rel_2_0/Open-ILS/xul/staff_client/server/cat/marcedit.js
===================================================================
--- branches/rel_2_0/Open-ILS/xul/staff_client/server/cat/marcedit.js 2010-09-16 02:39:56 UTC (rev 17721)
+++ branches/rel_2_0/Open-ILS/xul/staff_client/server/cat/marcedit.js 2010-09-16 05:25:51 UTC (rev 17722)
@@ -2575,9 +2575,9 @@
netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
win = window.open('/xul/server/cat/marcedit.xul'); // XXX version?
- /* Ugly hack to satisfy arn_value and last_xact_id db schema reqs */
+ // Match marc2are.pl last_xact_id format, roughly
var now = new Date;
- var arn = 'AUTOGEN' + Date.parse(now);
+ var xact_id = 'IMPORT-' + Date.parse(now);
win.xulG = {
"record": {"marc": marcxml, "rtype": "are"},
@@ -2586,8 +2586,7 @@
"func": function(xmlString) {
var rec = new are();
rec.marc(xmlString);
- rec.arn_value(arn);
- rec.last_xact_id(arn);
+ rec.last_xact_id(xact_id);
rec.isnew(true);
pcrud.create(rec, {
"oncomplete": function () {
More information about the open-ils-commits
mailing list