From: Thomas Berezansky Date: Mon, 18 Jun 2012 17:29:58 +0000 (-0400) Subject: Purge Circulations: Allow global age as forced min X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=305234a58c8e5622580f63cc0b0d26c70d8c1752;p=working%2FEvergreen.git 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 --- diff --git a/Open-ILS/src/sql/Pg/090.schema.action.sql b/Open-ILS/src/sql/Pg/090.schema.action.sql index 30282b1cc1..0f21762c69 100644 --- a/Open-ILS/src/sql/Pg/090.schema.action.sql +++ b/Open-ILS/src/sql/Pg/090.schema.action.sql @@ -770,6 +770,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; @@ -794,6 +795,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 @@ -843,7 +845,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 a76dd74755..050df6d5c1 100644 --- a/Open-ILS/src/sql/Pg/950.data.seed-values.sql +++ b/Open-ILS/src/sql/Pg/950.data.seed-values.sql @@ -8991,6 +8991,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)