From 2076647ce42c417a4d6b5efcce75c2edbc2885b0 Mon Sep 17 00:00:00 2001 From: Bill Erickson Date: Tue, 11 Dec 2012 11:59:50 -0500 Subject: [PATCH] Seed data for CSV notification export Full set of seed data for CSV action/trigger notification batch exports. The seed data is added to its own file and not automatically loaded into new installs (or via upgrade script) since it adds a significant number of new event definitions, probably more than most installs need by default. Review the event defs. and their parameters prior to loading this seed data, as it only represents one possible set of CSV notification options. For example, it assumes one type of "notify media" for all created notices. It may necessary to add additional event defs to cover additional media, etc. Signed-off-by: Bill Erickson Signed-off-by: Mike Rylander --- .../src/sql/Pg/notify-csv-action-trigger.sql | 342 ++++++++++++++++++ 1 file changed, 342 insertions(+) create mode 100644 Open-ILS/src/sql/Pg/notify-csv-action-trigger.sql diff --git a/Open-ILS/src/sql/Pg/notify-csv-action-trigger.sql b/Open-ILS/src/sql/Pg/notify-csv-action-trigger.sql new file mode 100644 index 0000000000..a656ad054a --- /dev/null +++ b/Open-ILS/src/sql/Pg/notify-csv-action-trigger.sql @@ -0,0 +1,342 @@ +BEGIN; + +-- Build the event defintions, environment, and params, then apply the same +-- template to all CSV definitions. + +-- All definitions assume a notify media of "V" (voice). + +--------------------------------------------------- +-- 1st overdue +INSERT INTO action_trigger.event_definition (active, name, owner, hook, + validator, reactor, delay, delay_field, group_field, template, granularity) +VALUES ( + 'f', '1st Overdue CSV', 1, 'checkout.due','CircIsOverdue', + 'ProcessTemplate', '7 days', 'due_date', 'usr', '', 'notify-csv' +); + +INSERT INTO action_trigger.environment (event_def, path) VALUES +(currval('action_trigger.event_definition_id_seq'), 'circ_lib'), +(currval('action_trigger.event_definition_id_seq'), 'target_copy'), +(currval('action_trigger.event_definition_id_seq'), 'usr.card') +; + +INSERT INTO action_trigger.event_params (event_def, param, value) VALUES +(currval('action_trigger.event_definition_id_seq'), 'notify_media', '''V'''), +(currval('action_trigger.event_definition_id_seq'), 'notify_level', '1'), +(currval('action_trigger.event_definition_id_seq'), 'notify_type', '''OVERDUE''') +; + +--------------------------------------------------- +-- 2nd overdue +INSERT INTO action_trigger.event_definition (active, name, owner, hook, + validator, reactor, delay, delay_field, group_field, template, granularity) +VALUES ( + 'f', '2nd Overdue CSV', 1, 'checkout.due','CircIsOverdue', + 'ProcessTemplate', '14 days', 'due_date', 'usr', '', 'notify-csv' +); + +INSERT INTO action_trigger.environment (event_def, path) VALUES +(currval('action_trigger.event_definition_id_seq'), 'circ_lib'), +(currval('action_trigger.event_definition_id_seq'), 'target_copy'), +(currval('action_trigger.event_definition_id_seq'), 'usr.card') +; + +INSERT INTO action_trigger.event_params (event_def, param, value) VALUES +(currval('action_trigger.event_definition_id_seq'), 'notify_media', '''V'''), +(currval('action_trigger.event_definition_id_seq'), 'notify_level', '2'), +(currval('action_trigger.event_definition_id_seq'), 'notify_type', '''OVERDUE''') +; + +--------------------------------------------------- +-- 3rd overdue +INSERT INTO action_trigger.event_definition (active, name, owner, hook, + validator, reactor, delay, delay_field, group_field, template, granularity) +VALUES ( + 'f', '3rd Overdue CSV', 1, 'checkout.due','CircIsOverdue', + 'ProcessTemplate', '28 days', 'due_date', 'usr', '', 'notify-csv' +); + +INSERT INTO action_trigger.environment (event_def, path) VALUES +(currval('action_trigger.event_definition_id_seq'), 'circ_lib'), +(currval('action_trigger.event_definition_id_seq'), 'target_copy'), +(currval('action_trigger.event_definition_id_seq'), 'usr.card') +; + +INSERT INTO action_trigger.event_params (event_def, param, value) VALUES +(currval('action_trigger.event_definition_id_seq'), 'notify_media', '''V'''), +(currval('action_trigger.event_definition_id_seq'), 'notify_level', '3'), +(currval('action_trigger.event_definition_id_seq'), 'notify_type', '''OVERDUE''') +; + +--------------------------------------------------- +-- predue +INSERT INTO action_trigger.event_definition (active, name, owner, hook, + validator, reactor, delay, delay_field, group_field, template, granularity) +VALUES ( + 'f', '3-Day Predue CSV', 1, 'checkout.due','CircIsOpen', + 'ProcessTemplate', '-3 days', 'due_date', 'usr', '', 'notify-csv' +); + +INSERT INTO action_trigger.environment (event_def, path) VALUES +(currval('action_trigger.event_definition_id_seq'), 'circ_lib'), +(currval('action_trigger.event_definition_id_seq'), 'target_copy'), +(currval('action_trigger.event_definition_id_seq'), 'usr.card') +; + +INSERT INTO action_trigger.event_params (event_def, param, value) VALUES +(currval('action_trigger.event_definition_id_seq'), 'notify_media', '''V'''), +(currval('action_trigger.event_definition_id_seq'), 'notify_level', '1'), +(currval('action_trigger.event_definition_id_seq'), 'notify_type', '''PREOVERDUE''') +; + +--------------------------------------------------- +-- hold ready for pickup +INSERT INTO action_trigger.event_definition (active, name, owner, hook, + validator, reactor, delay, delay_field, group_field, template, granularity) +VALUES ( + 'f', 'Hold Ready CSV', 1, 'hold.available','HoldIsAvailable', + 'ProcessTemplate', '30 minutes', 'shelf_time', 'usr', '', 'notify-csv' +); + +INSERT INTO action_trigger.environment (event_def, path) VALUES +(currval('action_trigger.event_definition_id_seq'), 'pickup_lib'), +(currval('action_trigger.event_definition_id_seq'), 'current_copy'), +(currval('action_trigger.event_definition_id_seq'), 'usr.card') +; + +INSERT INTO action_trigger.event_params (event_def, param, value) VALUES +(currval('action_trigger.event_definition_id_seq'), 'notify_media', '''V'''), +(currval('action_trigger.event_definition_id_seq'), 'notify_level', '1'), +(currval('action_trigger.event_definition_id_seq'), 'notify_type', '''RESERVE''') +; + +--------------------------------------------------- +-- hold expires on shelf soon +INSERT INTO action_trigger.event_definition (active, name, owner, hook, + validator, reactor, delay, delay_field, group_field, template, granularity) +VALUES ( + 'f', 'Hold Expires On Shelf Soon CSV', 1, + 'hold_request.shelf_expires_soon', + 'HoldIsAvailable', 'ProcessTemplate', '-1 days', + 'shelf_expire_time', 'usr', '', 'notify-csv' +); + +INSERT INTO action_trigger.environment (event_def, path) VALUES +(currval('action_trigger.event_definition_id_seq'), 'pickup_lib'), +(currval('action_trigger.event_definition_id_seq'), 'current_copy'), +(currval('action_trigger.event_definition_id_seq'), 'usr.card') +; + +INSERT INTO action_trigger.event_params (event_def, param, value) VALUES +(currval('action_trigger.event_definition_id_seq'), 'notify_media', '''V'''), +(currval('action_trigger.event_definition_id_seq'), 'notify_level', '2'), +(currval('action_trigger.event_definition_id_seq'), 'notify_type', '''PRERESERVE''') +; + +--------------------------------------------------- +-- hold expired on shelf +INSERT INTO action_trigger.event_definition (active, name, owner, hook, + validator, reactor, delay, delay_field, group_field, template, granularity) +VALUES ( + 'f', 'Hold Expired On Shelf CSV', 1, + 'hold_request.cancel.expire_holds_shelf', + 'HoldIsCancelled', 'ProcessTemplate', '30 minutes', + 'cancel_time', 'usr', '', 'notify-csv' +); + +INSERT INTO action_trigger.environment (event_def, path) VALUES +(currval('action_trigger.event_definition_id_seq'), 'pickup_lib'), +(currval('action_trigger.event_definition_id_seq'), 'current_copy'), +(currval('action_trigger.event_definition_id_seq'), 'usr.card') +; + +INSERT INTO action_trigger.event_params (event_def, param, value) VALUES +(currval('action_trigger.event_definition_id_seq'), 'notify_media', '''V'''), +(currval('action_trigger.event_definition_id_seq'), 'notify_level', '1'), +(currval('action_trigger.event_definition_id_seq'), 'notify_type', '''RESERVEEXPIRE''') +; + +--------------------------------------------------- +-- hold cancelled +-- see also hooks hold_request.cancel.staff and +-- hold_request.cancel.patron +INSERT INTO action_trigger.event_definition (active, name, owner, hook, + validator, reactor, delay, delay_field, group_field, template, granularity) +VALUES ( + 'f', 'Hold Cancelled (no target) CSV', 1, + 'hold_request.cancel.expire_no_target', + 'HoldIsCancelled', 'ProcessTemplate', '30 minutes', + 'cancel_time', 'usr', '', 'notify-csv' +); + +INSERT INTO action_trigger.environment (event_def, path) VALUES +(currval('action_trigger.event_definition_id_seq'), 'pickup_lib'), +(currval('action_trigger.event_definition_id_seq'), 'current_copy'), +(currval('action_trigger.event_definition_id_seq'), 'usr.card') +; + +INSERT INTO action_trigger.event_params (event_def, param, value) VALUES +(currval('action_trigger.event_definition_id_seq'), 'notify_media', '''V'''), +(currval('action_trigger.event_definition_id_seq'), 'notify_level', '1'), +(currval('action_trigger.event_definition_id_seq'), 'notify_type', '''RESERVECANCEL''') +; + +--------------------------------------------------- +-- recall +INSERT INTO action_trigger.event_definition (active, name, owner, hook, + validator, reactor, delay, delay_field, group_field, template, granularity) +VALUES ( + 'f', 'Copy Recall CSV', 1, + 'circ.recall.target', + 'NOOP_True', 'ProcessTemplate', DEFAULT, + NULL, 'usr', '', 'notify-csv' +); + +INSERT INTO action_trigger.environment (event_def, path) VALUES +(currval('action_trigger.event_definition_id_seq'), 'circ_lib'), +(currval('action_trigger.event_definition_id_seq'), 'target_copy'), +(currval('action_trigger.event_definition_id_seq'), 'usr.card') +; + +INSERT INTO action_trigger.event_params (event_def, param, value) VALUES +(currval('action_trigger.event_definition_id_seq'), 'notify_media', '''V'''), +(currval('action_trigger.event_definition_id_seq'), 'notify_level', '1'), +(currval('action_trigger.event_definition_id_seq'), 'notify_type', '''RECALL''') +; + +--------------------------------------------------- +-- patron exceeds fines threshold +INSERT INTO action_trigger.event_definition (active, name, owner, hook, + validator, reactor, delay, delay_field, group_field, template, granularity) +VALUES ( + 'f', 'Patron Exceeds Fines CSV', 1, + 'penalty.PATRON_EXCEEDS_FINES', + 'NOOP_True', 'ProcessTemplate', DEFAULT, + NULL, 'usr', '', 'notify-csv' +); + +INSERT INTO action_trigger.environment (event_def, path) VALUES +(currval('action_trigger.event_definition_id_seq'), 'org_unit'), +(currval('action_trigger.event_definition_id_seq'), 'usr.card') +; + +INSERT INTO action_trigger.event_params (event_def, param, value) VALUES +(currval('action_trigger.event_definition_id_seq'), 'notify_media', '''V'''), +(currval('action_trigger.event_definition_id_seq'), 'notify_level', '1'), +(currval('action_trigger.event_definition_id_seq'), 'notify_type', '''FINES''') +; + +--------------------------------------------------- +-- patron barred +INSERT INTO action_trigger.event_definition (active, name, owner, hook, + validator, reactor, delay, delay_field, group_field, template, granularity) +VALUES ( + 'f', 'Patron Barred CSV', 1, + 'au.barred', + 'PatronBarred', 'ProcessTemplate', DEFAULT, + NULL, NULL, '', 'notify-csv' +); + +INSERT INTO action_trigger.environment (event_def, path) VALUES +(currval('action_trigger.event_definition_id_seq'), 'home_ou'), +(currval('action_trigger.event_definition_id_seq'), 'card') +; + +INSERT INTO action_trigger.event_params (event_def, param, value) VALUES +(currval('action_trigger.event_definition_id_seq'), 'notify_media', '''V'''), +(currval('action_trigger.event_definition_id_seq'), 'notify_level', '1'), +(currval('action_trigger.event_definition_id_seq'), 'notify_type', '''SUSPEND''') +; + + + +--------------------------------------------------- +-- apply the generic CVS template to all event defs +UPDATE action_trigger.event_definition SET template = $$ +[%- + USE date; + + # accommodate grouped events + SET event = event.0 UNLESS event.id; + SET target = [target] UNLESS event.event_def.group_field; + + core_type = event.event_def.hook.core_type; + notice_org_unit = helpers.get_org_unit(event.event_def.owner); + + FOR target_obj IN target; + + # Mangle the data into a consistent shape + circ = ''; + hold = ''; + copy = ''; + user = ''; + title = ''; + org_unit = ''; + date_info = ''; + + IF core_type == 'circ'; + # e.g. overdue circ + circ = target_obj; + user = circ.usr; + copy = circ.target_copy; + org_unit = circ.circ_lib; + date_info = circ.due_date; + + ELSIF core_type == 'ahr'; + # e.g. hold ready for pickup + hold = target_obj; + user = hold.usr; + copy = hold.current_copy; + org_unit = hold.pickup_lib; + date_info = hold.shelf_expire_time; + + ELSIF core_type == 'ausp'; + # e.g. max fines + user = target_obj.usr; + org_unit = target_obj.org_unit; + + ELSIF core_type == 'au'; + # e.g. barred + user = target_obj; + org_unit = user.home_ou; + END; + + user_locale = helpers.get_user_locale(user.id); + user_lang = user_locale | replace('-.*', ''); # ISO 639-1 language + user_phone = helpers.get_user_setting( + user.id, 'opac.default_phone') || user.day_phone; + + IF copy; + bib_data = helpers.get_copy_bib_basics(copy.id); + title = bib_data.title; + END; + + IF date_info; + date_info = date.format( + helpers.format_date(date_info), '%d/%m/%Y'); + END; + + # Print the data for each target object as CSV +-%] +[%- '"' _ helpers.escape_csv(params.notify_media) _ '",' -%] +[%- '"' _ helpers.escape_csv(user_lang) _ '",' -%] +[%- '"' _ helpers.escape_csv(params.notify_type) _ '",' -%] +[%- '"' _ helpers.escape_csv(params.notify_level) _ '",' -%] +[%- '"' _ helpers.escape_csv(user.card.barcode) _ '",' -%] +[%- '"' _ helpers.escape_csv(user.prefix) _ '",' -%] +[%- '"' _ helpers.escape_csv(user.first_given_name) _ '",' -%] +[%- '"' _ helpers.escape_csv(user.family_name) _ '",' -%] +[%- '"' _ helpers.escape_csv(user_phone) _ '",' -%] +[%- '"' _ helpers.escape_csv(user.email) _ '",' -%] +[%- '"' _ helpers.escape_csv(notice_org_unit.shortname) _ '",' -%] +[%- '"' _ helpers.escape_csv(org_unit.shortname) _ '",' -%] +[%- '"' _ helpers.escape_csv(org_unit.name) _ '",' -%] +[%- '"' _ helpers.escape_csv(copy.barcode) _ '",' -%] +[%- '"' _ helpers.escape_csv(date_info) _ '",' -%] +[%- '"' _ helpers.escape_csv(title) _ '",' -%] +[%- '"' _ helpers.escape_csv(event.id) _ '"' %] +[% END -%] +$$ +WHERE granularity = 'notify-csv'; + +COMMIT; -- 2.43.2