From: Galen Charlton Date: Mon, 14 Sep 2020 13:46:43 +0000 (-0400) Subject: LP#1749475: stamp schema update X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=5782901a4b33cf51a84e38d26e73ab584eae79d7;p=evergreen%2Fequinox.git LP#1749475: stamp schema update Signed-off-by: Galen Charlton --- diff --git a/Open-ILS/src/sql/Pg/002.schema.config.sql b/Open-ILS/src/sql/Pg/002.schema.config.sql index 5ee86b63aa..483c5faeab 100644 --- a/Open-ILS/src/sql/Pg/002.schema.config.sql +++ b/Open-ILS/src/sql/Pg/002.schema.config.sql @@ -92,7 +92,7 @@ CREATE TRIGGER no_overlapping_deps BEFORE INSERT OR UPDATE ON config.db_patch_dependencies FOR EACH ROW EXECUTE PROCEDURE evergreen.array_overlap_check ('deprecates'); -INSERT INTO config.upgrade_log (version, applied_to) VALUES ('1230', :eg_version); -- dbs/sandbergja/jboyer +INSERT INTO config.upgrade_log (version, applied_to) VALUES ('1231', :eg_version); -- miker/mmorgan/gmcharlt CREATE TABLE config.bib_source ( id SERIAL PRIMARY KEY, diff --git a/Open-ILS/src/sql/Pg/upgrade/1231.schema.AT-def-groups.sql b/Open-ILS/src/sql/Pg/upgrade/1231.schema.AT-def-groups.sql new file mode 100644 index 0000000000..37d268ac4d --- /dev/null +++ b/Open-ILS/src/sql/Pg/upgrade/1231.schema.AT-def-groups.sql @@ -0,0 +1,414 @@ +BEGIN; + +SELECT evergreen.upgrade_deps_block_check('1231', :eg_version); + +INSERT into config.org_unit_setting_type +( name, grp, label, description, datatype, fm_class ) VALUES +( 'opac.email_record.allow_without_login', 'opac', + oils_i18n_gettext('opac.email_record.allow_without_login', + 'Allow record emailing without login', + 'coust', 'label'), + oils_i18n_gettext('opac.email_record.allow_without_login', + 'Instead of forcing a patron to log in in order to email the details of a record, just challenge them with a simple catpcha.', + 'coust', 'description'), + 'bool', null) +; + +CREATE TABLE action_trigger.event_def_group ( + id SERIAL PRIMARY KEY, + owner INT NOT NULL REFERENCES actor.org_unit (id) + ON DELETE RESTRICT ON UPDATE CASCADE + DEFERRABLE INITIALLY DEFERRED, + hook TEXT NOT NULL REFERENCES action_trigger.hook (key) + ON DELETE RESTRICT ON UPDATE CASCADE + DEFERRABLE INITIALLY DEFERRED, + active BOOL NOT NULL DEFAULT TRUE, + name TEXT NOT NULL +); +SELECT SETVAL('action_trigger.event_def_group_id_seq'::TEXT, 100, TRUE); + +CREATE TABLE action_trigger.event_def_group_member ( + id SERIAL PRIMARY KEY, + grp INT NOT NULL REFERENCES action_trigger.event_def_group (id) + ON DELETE CASCADE ON UPDATE CASCADE + DEFERRABLE INITIALLY DEFERRED, + event_def INT NOT NULL REFERENCES action_trigger.event_definition (id) + ON DELETE RESTRICT ON UPDATE CASCADE + DEFERRABLE INITIALLY DEFERRED, + sortable BOOL NOT NULL DEFAULT TRUE, + holdings BOOL NOT NULL DEFAULT FALSE, + external BOOL NOT NULL DEFAULT FALSE, + name TEXT NOT NULL +); + +INSERT INTO action_trigger.event_def_group (id, owner, hook, name) + VALUES (1, 1, 'biblio.format.record_entry.print','Print Record(s)'); + +INSERT INTO action_trigger.event_def_group (id, owner, hook, name) + VALUES (2,1,'biblio.format.record_entry.email','Email Record(s)'); + +DO $block$ +BEGIN + PERFORM * FROM action_trigger.event_definition WHERE hook = 'biblio.format.record_entry.email' AND owner = 1 AND active AND template = +$$ +[%- USE date -%] +[%- SET user = target.0.owner -%] +To: [%- params.recipient_email || user.email %] +From: [%- params.sender_email || default_sender %] +Date: [%- date.format(date.now, '%a, %d %b %Y %T -0000', gmt => 1) %] +Subject: Bibliographic Records +Auto-Submitted: auto-generated + +[% FOR cbreb IN target %] +[% FOR item IN cbreb.items; + bre_id = item.target_biblio_record_entry; + + bibxml = helpers.unapi_bre(bre_id, {flesh => '{mra}'}); + title = ''; + FOR part IN bibxml.findnodes('//*[@tag="245"]/*[@code="a" or @code="b"]'); + title = title _ part.textContent; + END; + + author = bibxml.findnodes('//*[@tag="100"]/*[@code="a"]').textContent; + item_type = bibxml.findnodes('//*[local-name()="attributes"]/*[local-name()="field"][@name="item_type"]').getAttribute('coded-value'); + publisher = bibxml.findnodes('//*[@tag="260"]/*[@code="b"]').textContent; + pubdate = bibxml.findnodes('//*[@tag="260"]/*[@code="c"]').textContent; + isbn = bibxml.findnodes('//*[@tag="020"]/*[@code="a"]').textContent; + issn = bibxml.findnodes('//*[@tag="022"]/*[@code="a"]').textContent; + upc = bibxml.findnodes('//*[@tag="024"]/*[@code="a"]').textContent; +%] + +[% loop.count %]/[% loop.size %]. Bib ID# [% bre_id %] +[% IF isbn %]ISBN: [% isbn _ "\n" %][% END -%] +[% IF issn %]ISSN: [% issn _ "\n" %][% END -%] +[% IF upc %]UPC: [% upc _ "\n" %] [% END -%] +Title: [% title %] +Author: [% author %] +Publication Info: [% publisher %] [% pubdate %] +Item Type: [% item_type %] + +[% END %] +[% END %] +$$; + + IF FOUND THEN -- update + + INSERT INTO action_trigger.event_def_group_member (grp, name, event_def) + SELECT 2, 'Brief', id FROM action_trigger.event_definition WHERE hook = 'biblio.format.record_entry.email'; + + INSERT INTO action_trigger.event_def_group_member (grp, name, holdings, event_def) + SELECT 2, 'Full', TRUE, id FROM action_trigger.event_definition WHERE hook = 'biblio.format.record_entry.email'; + + UPDATE action_trigger.event_definition SET template = $$ +[%- USE date -%] +[%- SET user = target.0.owner -%] +To: [%- params.recipient_email || user_data.0.email || user.email %] +From: [%- params.sender_email || default_sender %] +Date: [%- date.format(date.now, '%a, %d %b %Y %T -0000', gmt => 1) %] +Subject: [%- user_data.0.subject || 'Bibliographic Records' %] +Auto-Submitted: auto-generated + +[%- FOR cbreb IN target; + + flesh_list = '{mra'; + IF user_data.0.type == 'full'; + flesh_list = flesh_list _ ',holdings_xml,acp'; + IF params.holdings_limit; + flimit = 'acn=>' _ params.holdings_limit _ ',acp=>' _ params.holdings_limit; + END; + END; + flesh_list = flesh_list _ '}'; + + item_list = helpers.sort_bucket_unapi_bre(cbreb.items,{flesh => flesh_list, site => user_data.0.context_org, flesh_limit => flimit}, user_data.0.sort_by, user_data.0.sort_dir); + +FOR item IN item_list -%] + +[% loop.count %]/[% loop.size %]. Bib ID# [% item.id %] +[% IF item.isbn %]ISBN: [% item.isbn _ "\n" %][% END -%] +[% IF item.issn %]ISSN: [% item.issn _ "\n" %][% END -%] +[% IF item.upc %]UPC: [% item.upc _ "\n" %][% END -%] +Title: [% item.title %] +[% IF item.author %]Author: [% item.author _ "\n" %][% END -%] +Publication Info: [% item.publisher %] [% item.pubdate %] +Item Type: [% item.item_type %] +[% IF user_data.0.type == 'full' && item.holdings.size == 0 %] + * No items for this record at the selected location +[%- END %] +[% FOR cp IN item.holdings -%] + * Library: [% cp.circ_lib %] + Location: [% cp.location %] + Call Number: [% cp.prefix _ ' ' _ cp.callnumber _ ' ' _ cp.suffix %] +[% IF cp.parts %] Parts: [% cp.parts _ "\n" %][% END -%] + Status: [% cp.status_label %] + Barcode: [% cp.barcode %] + +[% END -%] +[%- END -%] +[%- END -%] +$$ WHERE hook = 'biblio.format.record_entry.email' AND owner = 1 AND active; + + ELSE -- insert full and add existing brief + + INSERT INTO action_trigger.event_def_group_member (grp, name, event_def) + SELECT 2, 'Brief', id FROM action_trigger.event_definition WHERE hook = 'biblio.format.record_entry.email' AND active; + + INSERT INTO action_trigger.event_definition ( + active, + owner, + name, + hook, + validator, + reactor, + cleanup_success, + cleanup_failure, + group_field, + granularity, + delay, + template + ) SELECT + TRUE, + owner, + 'biblio.record_entry.email.full', + 'biblio.format.record_entry.email', + 'NOOP_True', + 'SendEmail', + 'DeleteTempBiblioBucket', + 'DeleteTempBiblioBucket', + 'owner', + NULL, + '00:00:00', + $$ +[%- USE date -%] +[%- SET user = target.0.owner -%] +To: [%- params.recipient_email || user_data.0.email || user.email %] +From: [%- params.sender_email || default_sender %] +Date: [%- date.format(date.now, '%a, %d %b %Y %T -0000', gmt => 1) %] +Subject: [%- user_data.0.subject || 'Bibliographic Records' %] +Auto-Submitted: auto-generated + +[%- FOR cbreb IN target; + + flesh_list = '{mra'; + IF user_data.0.type == 'full'; + flesh_list = flesh_list _ ',holdings_xml,acp'; + IF params.holdings_limit; + flimit = 'acn=>' _ params.holdings_limit _ ',acp=>' _ params.holdings_limit; + END; + END; + flesh_list = flesh_list _ '}'; + + item_list = helpers.sort_bucket_unapi_bre(cbreb.items,{flesh => flesh_list, site => user_data.0.context_org, flesh_limit => flimit}, user_data.0.sort_by, user_data.0.sort_dir); + +FOR item IN item_list -%] + +[% loop.count %]/[% loop.size %]. Bib ID# [% item.id %] +[% IF item.isbn %]ISBN: [% item.isbn _ "\n" %][% END -%] +[% IF item.issn %]ISSN: [% item.issn _ "\n" %][% END -%] +[% IF item.upc %]UPC: [% item.upc _ "\n" %][% END -%] +Title: [% item.title %] +[% IF item.author %]Author: [% item.author _ "\n" %][% END -%] +Publication Info: [% item.publisher %] [% item.pubdate %] +Item Type: [% item.item_type %] +[% IF user_data.0.type == 'full' && item.holdings.size == 0 %] + * No items for this record at the selected location +[%- END %] +[% FOR cp IN item.holdings -%] + * Library: [% cp.circ_lib %] + Location: [% cp.location %] + Call Number: [% cp.prefix _ ' ' _ cp.callnumber _ ' ' _ cp.suffix %] +[% IF cp.parts %] Parts: [% cp.parts _ "\n" %][% END -%] + Status: [% cp.status_label %] + Barcode: [% cp.barcode %] + +[% END -%] +[%- END -%] +[%- END -%] +$$ FROM action_trigger.event_definition WHERE hook = 'biblio.format.record_entry.email' AND active; + + INSERT INTO action_trigger.event_def_group_member (grp, name, holdings, event_def) + SELECT 2, 'Full', TRUE, id FROM action_trigger.event_definition WHERE name = 'biblio.record_entry.email.full' and active; + + END IF; +END +$block$; + +DO $block$ +BEGIN + PERFORM * FROM action_trigger.event_definition WHERE hook = 'biblio.format.record_entry.print' AND owner = 1 AND active AND template = +$$ +
+ +
    + [% FOR cbreb IN target %] + [% FOR item IN cbreb.items; + bre_id = item.target_biblio_record_entry; + + bibxml = helpers.unapi_bre(bre_id, {flesh => '{mra}'}); + title = ''; + FOR part IN bibxml.findnodes('//*[@tag="245"]/*[@code="a" or @code="b"]'); + title = title _ part.textContent; + END; + + author = bibxml.findnodes('//*[@tag="100"]/*[@code="a"]').textContent; + item_type = bibxml.findnodes('//*[local-name()="attributes"]/*[local-name()="field"][@name="item_type"]').getAttribute('coded-value'); + publisher = bibxml.findnodes('//*[@tag="260"]/*[@code="b"]').textContent; + pubdate = bibxml.findnodes('//*[@tag="260"]/*[@code="c"]').textContent; + isbn = bibxml.findnodes('//*[@tag="020"]/*[@code="a"]').textContent; + %] + +
  1. + Bib ID# [% bre_id %] ISBN: [% isbn %]
    + Title: [% title %]
    + Author: [% author %]
    + Publication Info: [% publisher %] [% pubdate %]
    + Item Type: [% item_type %] +
  2. + [% END %] + [% END %] +
+
+$$; + + IF FOUND THEN -- update + + INSERT INTO action_trigger.event_def_group_member (grp, name, event_def) + SELECT 1, 'Brief', id FROM action_trigger.event_definition WHERE hook = 'biblio.format.record_entry.print'; + + INSERT INTO action_trigger.event_def_group_member (grp, name, holdings, event_def) + SELECT 1, 'Full', TRUE, id FROM action_trigger.event_definition WHERE hook = 'biblio.format.record_entry.print'; + + UPDATE action_trigger.event_definition SET template = $$ +
+ +
    + [% FOR cbreb IN target; + + flesh_list = '{mra'; + IF user_data.0.type == 'full'; + flesh_list = flesh_list _ ',holdings_xml,acp'; + IF params.holdings_limit; + flimit = 'acn=>' _ params.holdings_limit _ ',acp=>' _ params.holdings_limit; + END; + END; + flesh_list = flesh_list _ '}'; + + item_list = helpers.sort_bucket_unapi_bre(cbreb.items,{flesh => flesh_list, site => user_data.0.context_org, flesh_limit => flimit}, user_data.0.sort_by, user_data.0.sort_dir); + FOR item IN item_list %] +
  1. + Bib ID# [% item.id %]
    + [% IF item.isbn %]ISBN: [% item.isbn %]
    [% END %] + [% IF item.issn %]ISSN: [% item.issn %]
    [% END %] + [% IF item.upc %]UPC: [% item.upc %]
    [% END %] + Title: [% item.title %]
    +[% IF item.author %] Author: [% item.author %]
    [% END -%] + Publication Info: [% item.publisher %] [% item.pubdate %]
    + Item Type: [% item.item_type %] +
      + [% IF user_data.0.type == 'full' && item.holdings.size == 0 %] +
    • No items for this record at the selected location
    • + [% END %] + [% FOR cp IN item.holdings -%] +
    • + Library: [% cp.circ_lib %]
      + Location: [% cp.location %]
      + Call Number: [% cp.prefix _ ' ' _ cp.callnumber _ ' ' _ cp.suffix %]
      + [% IF cp.parts %]Parts: [% cp.parts %]
      [% END %] + Status: [% cp.status_label %]
      + Barcode: [% cp.barcode %] +
    • + [% END %] +
    +
  2. + [% END %] + [% END %] +
+
+$$ WHERE hook = 'biblio.format.record_entry.print' AND owner = 1 AND active; + + ELSE -- insert full and add brief + + INSERT INTO action_trigger.event_def_group_member (grp, name, event_def) + SELECT 1, 'Brief', id FROM action_trigger.event_definition WHERE hook = 'biblio.format.record_entry.print' AND active; + + INSERT INTO action_trigger.event_definition ( + active, + owner, + name, + hook, + validator, + reactor, + cleanup_success, + cleanup_failure, + group_field, + granularity, + delay, + template + ) SELECT + TRUE, + owner, + 'biblio.record_entry.print.full', + 'biblio.format.record_entry.print', + 'NOOP_True', + 'ProcessTemplate', + 'DeleteTempBiblioBucket', + 'DeleteTempBiblioBucket', + 'owner', + 'print-on-demand', + '00:00:00', + $$ +
+ +
    + [% FOR cbreb IN target; + + flesh_list = '{mra'; + IF user_data.0.type == 'full'; + flesh_list = flesh_list _ ',holdings_xml,acp'; + IF params.holdings_limit; + flimit = 'acn=>' _ params.holdings_limit _ ',acp=>' _ params.holdings_limit; + END; + END; + flesh_list = flesh_list _ '}'; + + item_list = helpers.sort_bucket_unapi_bre(cbreb.items,{flesh => flesh_list, site => user_data.0.context_org, flesh_limit => flimit}, user_data.0.sort_by, user_data.0.sort_dir); + FOR item IN item_list %] +
  1. + Bib ID# [% item.id %]
    + [% IF item.isbn %]ISBN: [% item.isbn %]
    [% END %] + [% IF item.issn %]ISSN: [% item.issn %]
    [% END %] + [% IF item.upc %]UPC: [% item.upc %]
    [% END %] + Title: [% item.title %]
    +[% IF item.author %] Author: [% item.author %]
    [% END -%] + Publication Info: [% item.publisher %] [% item.pubdate %]
    + Item Type: [% item.item_type %] +
      + [% IF user_data.0.type == 'full' && item.holdings.size == 0 %] +
    • No items for this record at the selected location
    • + [% END %] + [% FOR cp IN item.holdings -%] +
    • + Library: [% cp.circ_lib %]
      + Location: [% cp.location %]
      + Call Number: [% cp.prefix _ ' ' _ cp.callnumber _ ' ' _ cp.suffix %]
      + [% IF cp.parts %]Parts: [% cp.parts %]
      [% END %] + Status: [% cp.status_label %]
      + Barcode: [% cp.barcode %] +
    • + [% END %] +
    +
  2. + [% END %] + [% END %] +
+
+$$ FROM action_trigger.event_definition WHERE hook = 'biblio.format.record_entry.print' AND active; + + INSERT INTO action_trigger.event_def_group_member (grp, name, holdings, event_def) + SELECT 1, 'Full', TRUE, id FROM action_trigger.event_definition WHERE name = 'biblio.record_entry.print.full' and active; + + END IF; +END +$block$; + +COMMIT; + diff --git a/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.AT-def-groups.sql b/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.AT-def-groups.sql deleted file mode 100644 index 6f9cbd2191..0000000000 --- a/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.AT-def-groups.sql +++ /dev/null @@ -1,414 +0,0 @@ -BEGIN; - -SELECT evergreen.upgrade_deps_block_check('XXXX', :eg_version); - -INSERT into config.org_unit_setting_type -( name, grp, label, description, datatype, fm_class ) VALUES -( 'opac.email_record.allow_without_login', 'opac', - oils_i18n_gettext('opac.email_record.allow_without_login', - 'Allow record emailing without login', - 'coust', 'label'), - oils_i18n_gettext('opac.email_record.allow_without_login', - 'Instead of forcing a patron to log in in order to email the details of a record, just challenge them with a simple catpcha.', - 'coust', 'description'), - 'bool', null) -; - -CREATE TABLE action_trigger.event_def_group ( - id SERIAL PRIMARY KEY, - owner INT NOT NULL REFERENCES actor.org_unit (id) - ON DELETE RESTRICT ON UPDATE CASCADE - DEFERRABLE INITIALLY DEFERRED, - hook TEXT NOT NULL REFERENCES action_trigger.hook (key) - ON DELETE RESTRICT ON UPDATE CASCADE - DEFERRABLE INITIALLY DEFERRED, - active BOOL NOT NULL DEFAULT TRUE, - name TEXT NOT NULL -); -SELECT SETVAL('action_trigger.event_def_group_id_seq'::TEXT, 100, TRUE); - -CREATE TABLE action_trigger.event_def_group_member ( - id SERIAL PRIMARY KEY, - grp INT NOT NULL REFERENCES action_trigger.event_def_group (id) - ON DELETE CASCADE ON UPDATE CASCADE - DEFERRABLE INITIALLY DEFERRED, - event_def INT NOT NULL REFERENCES action_trigger.event_definition (id) - ON DELETE RESTRICT ON UPDATE CASCADE - DEFERRABLE INITIALLY DEFERRED, - sortable BOOL NOT NULL DEFAULT TRUE, - holdings BOOL NOT NULL DEFAULT FALSE, - external BOOL NOT NULL DEFAULT FALSE, - name TEXT NOT NULL -); - -INSERT INTO action_trigger.event_def_group (id, owner, hook, name) - VALUES (1, 1, 'biblio.format.record_entry.print','Print Record(s)'); - -INSERT INTO action_trigger.event_def_group (id, owner, hook, name) - VALUES (2,1,'biblio.format.record_entry.email','Email Record(s)'); - -DO $block$ -BEGIN - PERFORM * FROM action_trigger.event_definition WHERE hook = 'biblio.format.record_entry.email' AND owner = 1 AND active AND template = -$$ -[%- USE date -%] -[%- SET user = target.0.owner -%] -To: [%- params.recipient_email || user.email %] -From: [%- params.sender_email || default_sender %] -Date: [%- date.format(date.now, '%a, %d %b %Y %T -0000', gmt => 1) %] -Subject: Bibliographic Records -Auto-Submitted: auto-generated - -[% FOR cbreb IN target %] -[% FOR item IN cbreb.items; - bre_id = item.target_biblio_record_entry; - - bibxml = helpers.unapi_bre(bre_id, {flesh => '{mra}'}); - title = ''; - FOR part IN bibxml.findnodes('//*[@tag="245"]/*[@code="a" or @code="b"]'); - title = title _ part.textContent; - END; - - author = bibxml.findnodes('//*[@tag="100"]/*[@code="a"]').textContent; - item_type = bibxml.findnodes('//*[local-name()="attributes"]/*[local-name()="field"][@name="item_type"]').getAttribute('coded-value'); - publisher = bibxml.findnodes('//*[@tag="260"]/*[@code="b"]').textContent; - pubdate = bibxml.findnodes('//*[@tag="260"]/*[@code="c"]').textContent; - isbn = bibxml.findnodes('//*[@tag="020"]/*[@code="a"]').textContent; - issn = bibxml.findnodes('//*[@tag="022"]/*[@code="a"]').textContent; - upc = bibxml.findnodes('//*[@tag="024"]/*[@code="a"]').textContent; -%] - -[% loop.count %]/[% loop.size %]. Bib ID# [% bre_id %] -[% IF isbn %]ISBN: [% isbn _ "\n" %][% END -%] -[% IF issn %]ISSN: [% issn _ "\n" %][% END -%] -[% IF upc %]UPC: [% upc _ "\n" %] [% END -%] -Title: [% title %] -Author: [% author %] -Publication Info: [% publisher %] [% pubdate %] -Item Type: [% item_type %] - -[% END %] -[% END %] -$$; - - IF FOUND THEN -- update - - INSERT INTO action_trigger.event_def_group_member (grp, name, event_def) - SELECT 2, 'Brief', id FROM action_trigger.event_definition WHERE hook = 'biblio.format.record_entry.email'; - - INSERT INTO action_trigger.event_def_group_member (grp, name, holdings, event_def) - SELECT 2, 'Full', TRUE, id FROM action_trigger.event_definition WHERE hook = 'biblio.format.record_entry.email'; - - UPDATE action_trigger.event_definition SET template = $$ -[%- USE date -%] -[%- SET user = target.0.owner -%] -To: [%- params.recipient_email || user_data.0.email || user.email %] -From: [%- params.sender_email || default_sender %] -Date: [%- date.format(date.now, '%a, %d %b %Y %T -0000', gmt => 1) %] -Subject: [%- user_data.0.subject || 'Bibliographic Records' %] -Auto-Submitted: auto-generated - -[%- FOR cbreb IN target; - - flesh_list = '{mra'; - IF user_data.0.type == 'full'; - flesh_list = flesh_list _ ',holdings_xml,acp'; - IF params.holdings_limit; - flimit = 'acn=>' _ params.holdings_limit _ ',acp=>' _ params.holdings_limit; - END; - END; - flesh_list = flesh_list _ '}'; - - item_list = helpers.sort_bucket_unapi_bre(cbreb.items,{flesh => flesh_list, site => user_data.0.context_org, flesh_limit => flimit}, user_data.0.sort_by, user_data.0.sort_dir); - -FOR item IN item_list -%] - -[% loop.count %]/[% loop.size %]. Bib ID# [% item.id %] -[% IF item.isbn %]ISBN: [% item.isbn _ "\n" %][% END -%] -[% IF item.issn %]ISSN: [% item.issn _ "\n" %][% END -%] -[% IF item.upc %]UPC: [% item.upc _ "\n" %][% END -%] -Title: [% item.title %] -[% IF item.author %]Author: [% item.author _ "\n" %][% END -%] -Publication Info: [% item.publisher %] [% item.pubdate %] -Item Type: [% item.item_type %] -[% IF user_data.0.type == 'full' && item.holdings.size == 0 %] - * No items for this record at the selected location -[%- END %] -[% FOR cp IN item.holdings -%] - * Library: [% cp.circ_lib %] - Location: [% cp.location %] - Call Number: [% cp.prefix _ ' ' _ cp.callnumber _ ' ' _ cp.suffix %] -[% IF cp.parts %] Parts: [% cp.parts _ "\n" %][% END -%] - Status: [% cp.status_label %] - Barcode: [% cp.barcode %] - -[% END -%] -[%- END -%] -[%- END -%] -$$ WHERE hook = 'biblio.format.record_entry.email' AND owner = 1 AND active; - - ELSE -- insert full and add existing brief - - INSERT INTO action_trigger.event_def_group_member (grp, name, event_def) - SELECT 2, 'Brief', id FROM action_trigger.event_definition WHERE hook = 'biblio.format.record_entry.email' AND active; - - INSERT INTO action_trigger.event_definition ( - active, - owner, - name, - hook, - validator, - reactor, - cleanup_success, - cleanup_failure, - group_field, - granularity, - delay, - template - ) SELECT - TRUE, - owner, - 'biblio.record_entry.email.full', - 'biblio.format.record_entry.email', - 'NOOP_True', - 'SendEmail', - 'DeleteTempBiblioBucket', - 'DeleteTempBiblioBucket', - 'owner', - NULL, - '00:00:00', - $$ -[%- USE date -%] -[%- SET user = target.0.owner -%] -To: [%- params.recipient_email || user_data.0.email || user.email %] -From: [%- params.sender_email || default_sender %] -Date: [%- date.format(date.now, '%a, %d %b %Y %T -0000', gmt => 1) %] -Subject: [%- user_data.0.subject || 'Bibliographic Records' %] -Auto-Submitted: auto-generated - -[%- FOR cbreb IN target; - - flesh_list = '{mra'; - IF user_data.0.type == 'full'; - flesh_list = flesh_list _ ',holdings_xml,acp'; - IF params.holdings_limit; - flimit = 'acn=>' _ params.holdings_limit _ ',acp=>' _ params.holdings_limit; - END; - END; - flesh_list = flesh_list _ '}'; - - item_list = helpers.sort_bucket_unapi_bre(cbreb.items,{flesh => flesh_list, site => user_data.0.context_org, flesh_limit => flimit}, user_data.0.sort_by, user_data.0.sort_dir); - -FOR item IN item_list -%] - -[% loop.count %]/[% loop.size %]. Bib ID# [% item.id %] -[% IF item.isbn %]ISBN: [% item.isbn _ "\n" %][% END -%] -[% IF item.issn %]ISSN: [% item.issn _ "\n" %][% END -%] -[% IF item.upc %]UPC: [% item.upc _ "\n" %][% END -%] -Title: [% item.title %] -[% IF item.author %]Author: [% item.author _ "\n" %][% END -%] -Publication Info: [% item.publisher %] [% item.pubdate %] -Item Type: [% item.item_type %] -[% IF user_data.0.type == 'full' && item.holdings.size == 0 %] - * No items for this record at the selected location -[%- END %] -[% FOR cp IN item.holdings -%] - * Library: [% cp.circ_lib %] - Location: [% cp.location %] - Call Number: [% cp.prefix _ ' ' _ cp.callnumber _ ' ' _ cp.suffix %] -[% IF cp.parts %] Parts: [% cp.parts _ "\n" %][% END -%] - Status: [% cp.status_label %] - Barcode: [% cp.barcode %] - -[% END -%] -[%- END -%] -[%- END -%] -$$ FROM action_trigger.event_definition WHERE hook = 'biblio.format.record_entry.email' AND active; - - INSERT INTO action_trigger.event_def_group_member (grp, name, holdings, event_def) - SELECT 2, 'Full', TRUE, id FROM action_trigger.event_definition WHERE name = 'biblio.record_entry.email.full' and active; - - END IF; -END -$block$; - -DO $block$ -BEGIN - PERFORM * FROM action_trigger.event_definition WHERE hook = 'biblio.format.record_entry.print' AND owner = 1 AND active AND template = -$$ -
- -
    - [% FOR cbreb IN target %] - [% FOR item IN cbreb.items; - bre_id = item.target_biblio_record_entry; - - bibxml = helpers.unapi_bre(bre_id, {flesh => '{mra}'}); - title = ''; - FOR part IN bibxml.findnodes('//*[@tag="245"]/*[@code="a" or @code="b"]'); - title = title _ part.textContent; - END; - - author = bibxml.findnodes('//*[@tag="100"]/*[@code="a"]').textContent; - item_type = bibxml.findnodes('//*[local-name()="attributes"]/*[local-name()="field"][@name="item_type"]').getAttribute('coded-value'); - publisher = bibxml.findnodes('//*[@tag="260"]/*[@code="b"]').textContent; - pubdate = bibxml.findnodes('//*[@tag="260"]/*[@code="c"]').textContent; - isbn = bibxml.findnodes('//*[@tag="020"]/*[@code="a"]').textContent; - %] - -
  1. - Bib ID# [% bre_id %] ISBN: [% isbn %]
    - Title: [% title %]
    - Author: [% author %]
    - Publication Info: [% publisher %] [% pubdate %]
    - Item Type: [% item_type %] -
  2. - [% END %] - [% END %] -
-
-$$; - - IF FOUND THEN -- update - - INSERT INTO action_trigger.event_def_group_member (grp, name, event_def) - SELECT 1, 'Brief', id FROM action_trigger.event_definition WHERE hook = 'biblio.format.record_entry.print'; - - INSERT INTO action_trigger.event_def_group_member (grp, name, holdings, event_def) - SELECT 1, 'Full', TRUE, id FROM action_trigger.event_definition WHERE hook = 'biblio.format.record_entry.print'; - - UPDATE action_trigger.event_definition SET template = $$ -
- -
    - [% FOR cbreb IN target; - - flesh_list = '{mra'; - IF user_data.0.type == 'full'; - flesh_list = flesh_list _ ',holdings_xml,acp'; - IF params.holdings_limit; - flimit = 'acn=>' _ params.holdings_limit _ ',acp=>' _ params.holdings_limit; - END; - END; - flesh_list = flesh_list _ '}'; - - item_list = helpers.sort_bucket_unapi_bre(cbreb.items,{flesh => flesh_list, site => user_data.0.context_org, flesh_limit => flimit}, user_data.0.sort_by, user_data.0.sort_dir); - FOR item IN item_list %] -
  1. - Bib ID# [% item.id %]
    - [% IF item.isbn %]ISBN: [% item.isbn %]
    [% END %] - [% IF item.issn %]ISSN: [% item.issn %]
    [% END %] - [% IF item.upc %]UPC: [% item.upc %]
    [% END %] - Title: [% item.title %]
    -[% IF item.author %] Author: [% item.author %]
    [% END -%] - Publication Info: [% item.publisher %] [% item.pubdate %]
    - Item Type: [% item.item_type %] -
      - [% IF user_data.0.type == 'full' && item.holdings.size == 0 %] -
    • No items for this record at the selected location
    • - [% END %] - [% FOR cp IN item.holdings -%] -
    • - Library: [% cp.circ_lib %]
      - Location: [% cp.location %]
      - Call Number: [% cp.prefix _ ' ' _ cp.callnumber _ ' ' _ cp.suffix %]
      - [% IF cp.parts %]Parts: [% cp.parts %]
      [% END %] - Status: [% cp.status_label %]
      - Barcode: [% cp.barcode %] -
    • - [% END %] -
    -
  2. - [% END %] - [% END %] -
-
-$$ WHERE hook = 'biblio.format.record_entry.print' AND owner = 1 AND active; - - ELSE -- insert full and add brief - - INSERT INTO action_trigger.event_def_group_member (grp, name, event_def) - SELECT 1, 'Brief', id FROM action_trigger.event_definition WHERE hook = 'biblio.format.record_entry.print' AND active; - - INSERT INTO action_trigger.event_definition ( - active, - owner, - name, - hook, - validator, - reactor, - cleanup_success, - cleanup_failure, - group_field, - granularity, - delay, - template - ) SELECT - TRUE, - owner, - 'biblio.record_entry.print.full', - 'biblio.format.record_entry.print', - 'NOOP_True', - 'ProcessTemplate', - 'DeleteTempBiblioBucket', - 'DeleteTempBiblioBucket', - 'owner', - 'print-on-demand', - '00:00:00', - $$ -
- -
    - [% FOR cbreb IN target; - - flesh_list = '{mra'; - IF user_data.0.type == 'full'; - flesh_list = flesh_list _ ',holdings_xml,acp'; - IF params.holdings_limit; - flimit = 'acn=>' _ params.holdings_limit _ ',acp=>' _ params.holdings_limit; - END; - END; - flesh_list = flesh_list _ '}'; - - item_list = helpers.sort_bucket_unapi_bre(cbreb.items,{flesh => flesh_list, site => user_data.0.context_org, flesh_limit => flimit}, user_data.0.sort_by, user_data.0.sort_dir); - FOR item IN item_list %] -
  1. - Bib ID# [% item.id %]
    - [% IF item.isbn %]ISBN: [% item.isbn %]
    [% END %] - [% IF item.issn %]ISSN: [% item.issn %]
    [% END %] - [% IF item.upc %]UPC: [% item.upc %]
    [% END %] - Title: [% item.title %]
    -[% IF item.author %] Author: [% item.author %]
    [% END -%] - Publication Info: [% item.publisher %] [% item.pubdate %]
    - Item Type: [% item.item_type %] -
      - [% IF user_data.0.type == 'full' && item.holdings.size == 0 %] -
    • No items for this record at the selected location
    • - [% END %] - [% FOR cp IN item.holdings -%] -
    • - Library: [% cp.circ_lib %]
      - Location: [% cp.location %]
      - Call Number: [% cp.prefix _ ' ' _ cp.callnumber _ ' ' _ cp.suffix %]
      - [% IF cp.parts %]Parts: [% cp.parts %]
      [% END %] - Status: [% cp.status_label %]
      - Barcode: [% cp.barcode %] -
    • - [% END %] -
    -
  2. - [% END %] - [% END %] -
-
-$$ FROM action_trigger.event_definition WHERE hook = 'biblio.format.record_entry.print' AND active; - - INSERT INTO action_trigger.event_def_group_member (grp, name, holdings, event_def) - SELECT 1, 'Full', TRUE, id FROM action_trigger.event_definition WHERE name = 'biblio.record_entry.print.full' and active; - - END IF; -END -$block$; - -COMMIT; -