From 8ec6f9d16cb46e593477e50e2788b8e7686187b5 Mon Sep 17 00:00:00 2001 From: miker <miker@dcc99617-32d9-48b4-a31d-7c20da2025e4> Date: Fri, 13 Nov 2009 17:50:16 +0000 Subject: [PATCH] add support for typed user settings as a prereq for opt-in on selected trigger definitions git-svn-id: svn://svn.open-ils.org/ILS/trunk@14905 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- Open-ILS/src/sql/Pg/002.schema.config.sql | 26 +++++++- Open-ILS/src/sql/Pg/005.schema.actors.sql | 2 +- Open-ILS/src/sql/Pg/950.data.seed-values.sql | 27 ++++++++ .../Pg/upgrade/0082.schema.user_setting_types.sql | 77 ++++++++++++++++++++++ 4 files changed, 130 insertions(+), 2 deletions(-) create mode 100644 Open-ILS/src/sql/Pg/upgrade/0082.schema.user_setting_types.sql diff --git a/Open-ILS/src/sql/Pg/002.schema.config.sql b/Open-ILS/src/sql/Pg/002.schema.config.sql index 87f0e24dee..870131ab01 100644 --- a/Open-ILS/src/sql/Pg/002.schema.config.sql +++ b/Open-ILS/src/sql/Pg/002.schema.config.sql @@ -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 ('0081'); -- berick +INSERT INTO config.upgrade_log (version) VALUES ('0082'); -- miker CREATE TABLE config.bib_source ( id SERIAL PRIMARY KEY, @@ -564,6 +564,30 @@ CREATE TABLE config.org_unit_setting_type ( ( datatype <> 'link' AND fm_class IS NULL ) ) ); +CREATE TABLE config.usr_setting_type ( + + name TEXT PRIMARY KEY, + opac_visible BOOL NOT NULL DEFAULT FALSE, + label TEXT UNIQUE NOT NULL, + description TEXT, + datatype TEXT NOT NULL DEFAULT 'string', + fm_class TEXT, + + -- + -- define valid datatypes + -- + CONSTRAINT coust_valid_datatype CHECK ( datatype IN + ( 'bool', 'integer', 'float', 'currency', 'interval', + 'date', 'string', 'object', 'array', 'link' ) ), + + -- + -- fm_class is meaningful only for 'link' datatype + -- + CONSTRAINT coust_no_empty_link CHECK + ( ( datatype = 'link' AND fm_class IS NOT NULL ) OR + ( datatype <> 'link' AND fm_class IS NULL ) ) + +); -- Some handy functions, based on existing ones, to provide optional ingest normalization diff --git a/Open-ILS/src/sql/Pg/005.schema.actors.sql b/Open-ILS/src/sql/Pg/005.schema.actors.sql index 5f1bb3f300..81eb7a7b92 100644 --- a/Open-ILS/src/sql/Pg/005.schema.actors.sql +++ b/Open-ILS/src/sql/Pg/005.schema.actors.sql @@ -150,7 +150,7 @@ CREATE INDEX actor_usr_note_creator_idx ON actor.usr_note ( creator ); CREATE TABLE actor.usr_setting ( id BIGSERIAL PRIMARY KEY, usr INT NOT NULL REFERENCES actor.usr ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED, - name TEXT NOT NULL, + name TEXT NOT NULL REFERENCES config.usr_setting_type (name) ON DELETE CASCADE ON UPDATE CASCADE DEFERRABLE INITIALLY DEFERRED, value TEXT NOT NULL, CONSTRAINT usr_once_per_key UNIQUE (usr,name) ); 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 a43cdb3741..d4ec9cfae4 100644 --- a/Open-ILS/src/sql/Pg/950.data.seed-values.sql +++ b/Open-ILS/src/sql/Pg/950.data.seed-values.sql @@ -1458,6 +1458,33 @@ INSERT INTO config.circ_matrix_matchpoint (org_unit,grp,duration_rule,recurring_ -- hold matrix - 110.hold_matrix.sql: INSERT INTO config.hold_matrix_matchpoint (requestor_grp) VALUES (1); + +-- User setting types +INSERT INTO config.usr_setting_type (name,opac_visible,label,description,datatype) + VALUES ('opac.default_font', TRUE, 'OPAC Font Size', 'OPAC Font Size', 'string'); + +INSERT INTO config.usr_setting_type (name,opac_visible,label,description,datatype) + VALUES ('opac.default_search_depth', TRUE, 'OPAC Search Depth', 'OPAC Search Depth', 'integer'); + +INSERT INTO config.usr_setting_type (name,opac_visible,label,description,datatype) + VALUES ('opac.default_search_location', TRUE, 'OPAC Search Location', 'OPAC Search Location', 'integer'); + +INSERT INTO config.usr_setting_type (name,opac_visible,label,description,datatype) + VALUES ('opac.hits_per_page', TRUE, 'Hits per Page', 'Hits per Page', 'string'); + +INSERT INTO config.usr_setting_type (name,opac_visible,label,description,datatype) + VALUES ('opac.hold_notify', TRUE, 'Hold Notification Format', 'Hold Notification Format', 'string'); + +INSERT INTO config.usr_setting_type (name,opac_visible,label,description,datatype) + VALUES ('staff_client.catalog.record_view.default', TRUE, 'Default Record View', 'Default Record View', 'string'); + +INSERT INTO config.usr_setting_type (name,opac_visible,label,description,datatype) + VALUES ('staff_client.copy_editor.templates', TRUE, 'Copy Editor Template', 'Copy Editor Template', 'object'); + +INSERT INTO config.usr_setting_type (name,opac_visible,label,description,datatype) + VALUES ('circ.holds_behind_desk', FALSE, 'Hold is behind Circ Desk', 'Hold is behind Circ Desk', 'bool'); + + -- org_unit setting types INSERT into config.org_unit_setting_type ( name, label, description, datatype ) VALUES diff --git a/Open-ILS/src/sql/Pg/upgrade/0082.schema.user_setting_types.sql b/Open-ILS/src/sql/Pg/upgrade/0082.schema.user_setting_types.sql new file mode 100644 index 0000000000..b6ebeec064 --- /dev/null +++ b/Open-ILS/src/sql/Pg/upgrade/0082.schema.user_setting_types.sql @@ -0,0 +1,77 @@ +BEGIN; + +INSERT INTO config.upgrade_log (version) VALUES ('0082'); -- miker + +CREATE TABLE config.usr_setting_type ( + + name TEXT PRIMARY KEY, + opac_visible BOOL NOT NULL DEFAULT FALSE, + label TEXT UNIQUE NOT NULL, + description TEXT, + datatype TEXT NOT NULL DEFAULT 'string', + fm_class TEXT, + + -- + -- define valid datatypes + -- + CONSTRAINT coust_valid_datatype CHECK ( datatype IN + ( 'bool', 'integer', 'float', 'currency', 'interval', + 'date', 'string', 'object', 'array', 'link' ) ), + + -- + -- fm_class is meaningful only for 'link' datatype + -- + CONSTRAINT coust_no_empty_link CHECK + ( ( datatype = 'link' AND fm_class IS NOT NULL ) OR + ( datatype <> 'link' AND fm_class IS NULL ) ) + +); + +-- Yeah, this is data, but I need it for the schema bit at the end +INSERT INTO config.usr_setting_type (name,opac_visible,label,description,datatype) + VALUES ('opac.default_font', TRUE, 'OPAC Font Size', 'OPAC Font Size', 'string'); + +INSERT INTO config.usr_setting_type (name,opac_visible,label,description,datatype) + VALUES ('opac.default_search_depth', TRUE, 'OPAC Search Depth', 'OPAC Search Depth', 'integer'); + +INSERT INTO config.usr_setting_type (name,opac_visible,label,description,datatype) + VALUES ('opac.default_search_location', TRUE, 'OPAC Search Location', 'OPAC Search Location', 'integer'); + +INSERT INTO config.usr_setting_type (name,opac_visible,label,description,datatype) + VALUES ('opac.hits_per_page', TRUE, 'Hits per Page', 'Hits per Page', 'string'); + +INSERT INTO config.usr_setting_type (name,opac_visible,label,description,datatype) + VALUES ('opac.hold_notify', TRUE, 'Hold Notification Format', 'Hold Notification Format', 'string'); + +INSERT INTO config.usr_setting_type (name,opac_visible,label,description,datatype) + VALUES ('staff_client.catalog.record_view.default', TRUE, 'Default Record View', 'Default Record View', 'string'); + +INSERT INTO config.usr_setting_type (name,opac_visible,label,description,datatype) + VALUES ('staff_client.copy_editor.templates', TRUE, 'Copy Editor Template', 'Copy Editor Template', 'object'); + +INSERT INTO config.usr_setting_type (name,opac_visible,label,description,datatype) + VALUES ('circ.holds_behind_desk', FALSE, 'Hold is behind Circ Desk', 'Hold is behind Circ Desk', 'bool'); + +INSERT INTO config.usr_setting_type (name,opac_visible,label,description,datatype) + SELECT DISTINCT name, FALSE, name, name, 'string' + FROM actor.usr_setting + WHERE name NOT IN ( + 'circ.holds_behind_desk', + 'opac.default_font', + 'opac.default_search_depth', + 'opac.default_search_location', + 'opac.hits_per_page', + 'opac.hold_notify', + 'staff_client.catalog.record_view.default', + 'staff_client.copy_editor.templates' + ); + + +ATLER TABLE actor.usr_setting + ADD CONSTRAINT user_setting_type_fkey + FOREIGN KEY (name) REFERENCES config.usr_setting_type (name) + ON DELETE CASCADE ON UPDATE CASCADE + DEFERRABLE INITIALLY DEFERRED; + +COMMIT; + -- 2.11.0