add passive event validator to stop events that are too far past the delay_field...
authormiker <miker@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Sat, 24 Oct 2009 01:05:50 +0000 (01:05 +0000)
committermiker <miker@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Sat, 24 Oct 2009 01:05:50 +0000 (01:05 +0000)
git-svn-id: svn://svn.open-ils.org/ILS/trunk@14588 dcc99617-32d9-48b4-a31d-7c20da2025e4

Open-ILS/src/perlmods/OpenILS/Application/Trigger/Validator.pm
Open-ILS/src/sql/Pg/002.schema.config.sql
Open-ILS/src/sql/Pg/400.schema.action_trigger.sql
Open-ILS/src/sql/Pg/upgrade/0052.schema.asset_copy_location_order.sql
Open-ILS/src/sql/Pg/upgrade/0053.data.max-passive-delay-validator.sql [new file with mode: 0644]

index b3f2389..f73cbff 100644 (file)
@@ -16,6 +16,19 @@ sub CircIsOpen {
     return defined($env->{target}->checkin_time) ? 0 : 1;
 }
 
+sub MaxPassiveDelayAge {
+    my $self = shift;
+    my $env = shift;
+    my $target = $env->{target};
+    my $delay_field = $env->{event}->event_def->delay_field;
+
+    my $delay_field_ts = DateTime::Format::ISO8601->new->parse_datetime(clense_ISO8601($target->$delay_field()));
+    $delay_field_ts->add( seconds => interval_to_seconds( $env->{params}->{max_delay_age} ) );
+
+    return 0 if $delay_field_ts > DateTime->now;
+    return 1;
+}
+
 sub CircIsOverdue {
     my $self = shift;
     my $env = shift;
index 9f938ba..643a70b 100644 (file)
@@ -51,7 +51,7 @@ CREATE TABLE config.upgrade_log (
     install_date    TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW()
 );
 
-INSERT INTO config.upgrade_log (version) VALUES ('0052'); -- Scott McKellar
+INSERT INTO config.upgrade_log (version) VALUES ('0053'); -- miker
 
 
 CREATE TABLE config.bib_source (
index df7fddc..b5f71a9 100644 (file)
@@ -76,6 +76,7 @@ INSERT INTO action_trigger.validator (module,description) VALUES ('NOOP_False','
 INSERT INTO action_trigger.validator (module,description) VALUES ('CircIsOpen','Check that the circulation is still open');
 INSERT INTO action_trigger.validator (module,description) VALUES ('HoldIsAvailable','Check that an item is on the hold shelf');
 INSERT INTO action_trigger.validator (module,description) VALUES ('CircIsOverdue','Check that the circulation is overdue');
+INSERT INTO action_trigger.validator (module,description) VALUES ('MaxPassiveDelayAge','Check that the event is not too far past the delay_field time -- requires a max_delay_age interval parameter');
 
 -- After an event passes validation (action_trigger.validator), the reactor processes it.
 CREATE TABLE action_trigger.reactor (
diff --git a/Open-ILS/src/sql/Pg/upgrade/0053.data.max-passive-delay-validator.sql b/Open-ILS/src/sql/Pg/upgrade/0053.data.max-passive-delay-validator.sql
new file mode 100644 (file)
index 0000000..36aaf77
--- /dev/null
@@ -0,0 +1,8 @@
+BEGIN;
+
+INSERT INTO config.upgrade_log (version) VALUES ('0053');
+
+INSERT INTO action_trigger.validator (module,description) VALUES ('MaxPassiveDelayAge','Check that the event is not too far past the delay_field time -- requires a max_delay_age interval parameter');
+
+COMMIT;
+