From 6ae718ec5e6541857d62c8e5f02e11817ebbc36a Mon Sep 17 00:00:00 2001 From: Thomas Berezansky Date: Mon, 18 Jun 2012 13:29:58 -0400 Subject: [PATCH] Purge Circulations: Allow global age as forced min This allows a library to keep all circs in the last Y interval, regardless of user settings that may otherwise cause an earlier purging. Another global flag that defaults to off controls this behavior. Signed-off-by: Thomas Berezansky Signed-off-by: Jason Stephenson --- Open-ILS/src/sql/Pg/090.schema.action.sql | 8 +++++++- Open-ILS/src/sql/Pg/950.data.seed-values.sql | 8 ++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/Open-ILS/src/sql/Pg/090.schema.action.sql b/Open-ILS/src/sql/Pg/090.schema.action.sql index 60d03744cd..51530e7936 100644 --- a/Open-ILS/src/sql/Pg/090.schema.action.sql +++ b/Open-ILS/src/sql/Pg/090.schema.action.sql @@ -978,6 +978,7 @@ DECLARE usr_keep_start actor.usr_setting%ROWTYPE; org_keep_age INTERVAL; org_use_last BOOL = false; + org_age_is_min BOOL = false; org_keep_count INT; keep_age INTERVAL; @@ -1002,6 +1003,7 @@ BEGIN END IF; SELECT enabled INTO org_use_last FROM config.global_flag WHERE name = 'history.circ.retention_uses_last_finished'; + SELECT enabled INTO org_age_is_min FROM config.global_flag WHERE name = 'history.circ.retention_age_is_min'; -- First, find copies with more than keep_count non-renewal circs FOR target_acp IN @@ -1051,7 +1053,11 @@ BEGIN ELSIF usr_keep_start.value IS NOT NULL THEN keep_age := AGE(NOW(), oils_json_to_text(usr_keep_start.value)::TIMESTAMPTZ); ELSE - keep_age := COALESCE( org_keep_age::INTERVAL, '2000 years'::INTERVAL ); + keep_age := COALESCE( org_keep_age, '2000 years'::INTERVAL ); + END IF; + + IF org_age_is_min THEN + keep_age := GREATEST( keep_age, org_keep_age ); END IF; CONTINUE WHEN AGE(NOW(), last_finished) < keep_age; diff --git a/Open-ILS/src/sql/Pg/950.data.seed-values.sql b/Open-ILS/src/sql/Pg/950.data.seed-values.sql index 6fc8f20c85..9b63dfbb50 100644 --- a/Open-ILS/src/sql/Pg/950.data.seed-values.sql +++ b/Open-ILS/src/sql/Pg/950.data.seed-values.sql @@ -9089,6 +9089,14 @@ INSERT INTO config.global_flag (name, label) 'cgf', 'label' ) + ),( + 'history.circ.retention_age_is_min', + oils_i18n_gettext( + 'history.circ.retention_age_is_min', + 'Historical Circulations are kept for global retention age at a minimum, regardless of user preferences.', + 'cgf', + 'label' + ) ); INSERT INTO config.usr_setting_type (name,opac_visible,label,description,datatype) -- 2.43.2