LP1204273 - Repair org unit settings for making state not required
authorBen Shum <bshum@biblio.org>
Mon, 22 Jul 2013 19:10:37 +0000 (15:10 -0400)
committerJason Stephenson <jstephenson@mvlc.org>
Thu, 1 Aug 2013 19:22:07 +0000 (15:22 -0400)
As noted by tsbere in IRC, the org unit settings were using "au" instead of "aua"
which led to issues applying the settings and making the addresses require the
state field.

Also, change the constraint for field_name on actor.org_unit_setting_type_log to
be "DEFERRABLE INITIALLY DEFERRED" to be more flexible and consistent with other
parts of the database relating to org unit setting names.

And, the table auditor.actor_usr_address_history needs to be updated so that
state can be NULL there as well.

Signed-off-by: Ben Shum <bshum@biblio.org>
Signed-off-by: Jason Stephenson <jstephenson@mvlc.org>
Open-ILS/src/sql/Pg/002.schema.config.sql
Open-ILS/src/sql/Pg/950.data.seed-values.sql
Open-ILS/src/sql/Pg/upgrade/XXXX.data.state-field-settings-fix.sql [new file with mode: 0644]
Open-ILS/web/js/ui/default/actor/user/register.js

index 5d938ab..8e8968f 100644 (file)
@@ -939,7 +939,7 @@ CREATE TABLE config.org_unit_setting_type_log (
     org             INT,   --REFERENCES actor.org_unit (id),
     original_value  TEXT,
     new_value       TEXT,
-    field_name      TEXT      REFERENCES config.org_unit_setting_type (name)
+    field_name      TEXT      REFERENCES config.org_unit_setting_type (name) DEFERRABLE INITIALLY DEFERRED
 );
 
 COMMENT ON TABLE config.org_unit_setting_type_log IS $$
index fb3b637..89fb7c3 100644 (file)
@@ -4593,29 +4593,29 @@ INSERT into config.org_unit_setting_type
         'coust', 'description'),
     'bool', null)
 
-,( 'ui.patron.edit.au.state.require', 'gui',
-    oils_i18n_gettext('ui.patron.edit.au.state.require',
+,( 'ui.patron.edit.aua.state.require', 'gui',
+    oils_i18n_gettext('ui.patron.edit.aua.state.require',
         'Require State field on patron registration',
         'coust', 'label'),
-    oils_i18n_gettext('ui.patron.edit.au.state.require',
+    oils_i18n_gettext('ui.patron.edit.aua.state.require',
         'The State field will be required on the patron registration screen.',
         'coust', 'description'),
     'bool', null)
 
-,( 'ui.patron.edit.au.state.show', 'gui',
-    oils_i18n_gettext('ui.patron.edit.au.state.show',
+,( 'ui.patron.edit.aua.state.show', 'gui',
+    oils_i18n_gettext('ui.patron.edit.aua.state.show',
         'Show State field on patron registration',
         'coust', 'label'),
-    oils_i18n_gettext('ui.patron.edit.au.state.show',
+    oils_i18n_gettext('ui.patron.edit.aua.state.show',
         'The State field will be shown on the patron registration screen. Showing a field makes it appear with required fields even when not required. If the field is required this setting is ignored.',
         'coust', 'description'),
     'bool', null)
 
-,( 'ui.patron.edit.au.state.suggest', 'gui',
-    oils_i18n_gettext('ui.patron.edit.au.state.suggest',
+,( 'ui.patron.edit.aua.state.suggest', 'gui',
+    oils_i18n_gettext('ui.patron.edit.aua.state.suggest',
         'Suggest State field on patron registration',
         'coust', 'label'),
-    oils_i18n_gettext('ui.patron.edit.au.state.suggest',
+    oils_i18n_gettext('ui.patron.edit.aua.state.suggest',
         'The State field will be suggested on the patron registration screen. Suggesting a field makes it appear when suggested fields are shown. If the field is shown or required this setting is ignored.',
         'coust', 'description'),
     'bool', null)
diff --git a/Open-ILS/src/sql/Pg/upgrade/XXXX.data.state-field-settings-fix.sql b/Open-ILS/src/sql/Pg/upgrade/XXXX.data.state-field-settings-fix.sql
new file mode 100644 (file)
index 0000000..f4fd4f6
--- /dev/null
@@ -0,0 +1,29 @@
+BEGIN;
+
+-- SELECT evergreen.upgrade_deps_block_check('XXXX', :eg_version);
+
+-- Don't require state in the auditor tracking for user addresses
+
+ALTER TABLE auditor.actor_usr_address_history ALTER COLUMN state DROP NOT NULL;
+
+-- Change constraint on actor.org_unit_setting_log to be deferrable initially
+
+ALTER TABLE config.org_unit_setting_type_log
+  DROP CONSTRAINT org_unit_setting_type_log_field_name_fkey,
+  ADD CONSTRAINT org_unit_setting_type_log_field_name_fkey FOREIGN KEY (field_name)
+    REFERENCES config.org_unit_setting_type (name) MATCH SIMPLE
+    ON UPDATE NO ACTION ON DELETE NO ACTION DEFERRABLE INITIALLY DEFERRED;
+
+-- Fix names in the org unit setting configuration
+
+UPDATE config.org_unit_setting_type SET name = overlay(name placing 'aua' from 16 for 2) where name like 'ui.patron.edit.au.state.%';
+
+-- Fix names if they have already been set in the editor
+
+UPDATE actor.org_unit_setting SET name = overlay(name placing 'aua' from 16 for 2) where name like 'ui.patron.edit.au.state.%';
+
+-- and the logs too
+
+UPDATE config.org_unit_setting_type_log SET field_name = overlay(field_name placing 'aua' from 16 for 2) where field_name like 'ui.patron.edit.au.state.%';
+
+COMMIT;
index e70d867..32330a3 100644 (file)
@@ -191,9 +191,9 @@ function load() {
         'opac.barcode_regex',
         'opac.username_regex',
         'sms.enable',
-        'ui.patron.edit.au.state.require',
-        'ui.patron.edit.au.state.suggest',
-        'ui.patron.edit.au.state.show'
+        'ui.patron.edit.aua.state.require',
+        'ui.patron.edit.aua.state.suggest',
+        'ui.patron.edit.aua.state.show'
     ]);
 
     for(k in orgSettings)