upgrade script finished with all ou settings and flags and whatnot
authorLebbeous Fogle-Weekley <lebbeous@esilibrary.com>
Tue, 6 Mar 2012 17:42:05 +0000 (12:42 -0500)
committerLebbeous Fogle-Weekley <lebbeous@esilibrary.com>
Wed, 7 Mar 2012 21:57:11 +0000 (16:57 -0500)
Signed-off-by: Lebbeous Fogle-Weekley <lebbeous@esilibrary.com>
Open-ILS/src/sql/Pg/upgrade/XXXX.schema.serial-holding-groups.sql
Open-ILS/src/templates/serial/subscription.tt2

index 76d6ea6..5aaf1fe 100644 (file)
@@ -2,6 +2,20 @@ BEGIN;
 
 SELECT evergreen.upgrade_deps_block_check('XXXX', :eg_version);
 
+INSERT INTO config.internal_flag (name, value, enabled) VALUES (
+    'serial.rematerialize_on_same_holding_code', NULL, FALSE
+);
+
+INSERT INTO config.org_unit_setting_type (
+    name, label, grp, description, datatype
+) VALUES (
+    'serial.default_display_grouping',
+    'Default display grouping for serials distributions presented in the OPAC.',
+    'serial',
+    'Default display grouping for serials distributions presented in the OPAC. This can be "enum" or "chron".',
+    'string'
+);
+
 ALTER TABLE serial.distribution
     ADD COLUMN display_grouping TEXT NOT NULL DEFAULT 'chron'
         CHECK (display_grouping IN ('enum', 'chron'));
@@ -70,12 +84,19 @@ use strict;
 use MARC::Field;
 use JSON::XS;
 
-# Do nothing if holding_code has not changed.
-# XXX may need to add a global flag that acts like 'ingest.reingest.force_on_same_marc'
+# Do nothing if holding_code has not changed...
+
 if ($_TD->{new}{holding_code} eq $_TD->{old}{holding_code}) {
-    return;
+    # ... unless the following internal flag is set.
+
+    my $flag_rv = spi_exec_query(q{
+        SELECT * FROM config.internal_flag
+        WHERE name = 'serial.rematerialize_on_same_holding_code' AND enabled
+    }, 1);
+    return unless $flag_rv->{processed};
 }
 
+
 my $holding_code = (new JSON::XS)->decode($_TD->{new}{holding_code});
 
 my $field = new MARC::Field('999', @$holding_code); # tag doesnt matter
@@ -113,13 +134,22 @@ $func$ LANGUAGE 'plperlu';
 CREATE INDEX assist_holdings_display
     ON serial.materialized_holding_code (issuance, subfield);
 
--- XXX add more indices to assist with other joins new to Serial.pm
-
 CREATE TRIGGER materialize_holding_code
     AFTER INSERT OR UPDATE ON serial.issuance
     FOR EACH ROW EXECUTE PROCEDURE serial.materialize_holding_code() ;
 
--- XXX need to materialize_holding_code() for all existing rows in serial.issuance
--- at time of upgrde script execution as well.
+-- starting here, we materialize all existing holding codes.
+
+UPDATE config.internal_flag
+    SET enabled = TRUE
+    WHERE name = 'serial.rematerialize_on_same_holding_code';
+
+UPDATE serial.issuance SET holding_code = holding_code;
+
+UPDATE config.internal_flag
+    SET enabled = FALSE
+    WHERE name = 'serial.rematerialize_on_same_holding_code';
+
+-- finish holding code materialization process
 
 COMMIT;
index 8cb93b5..eb43253 100644 (file)
                     }
                 });
 
+                var settings = fieldmapper.aou.fetchOrgSettingBatch(
+                    openils.User.user.ws_ou(),
+                    ["serial.default_display_grouping"]
+                );
+                var default_display_grouping = "chron";
+
+                if (settings && settings["serial.default_display_grouping"]) {
+                    default_display_grouping =
+                        settings["serial.default_display_grouping"].value;
+                }
+
                 dist_grid.overrideEditWidgets.display_grouping =
                     new dijit.form.FilteringSelect({
                         "store": _display_grouping_store,
                         "name": "display_grouping"
                     });
                     dist_grid.overrideEditWidgets.display_grouping.shove = {
-                        "create": "chron"   /* XXX get default from OU setting?*/
+                        "create": default_display_grouping
                     };
             }
         </script>