lp1616170 Magic Status Field user/khuckins/lp1616170-custom-copy-status-maintainability
authorKyle Huckins <khuckins@catalyte.io>
Wed, 22 May 2019 15:44:12 +0000 (15:44 +0000)
committerKyle Huckins <khuckins@catalyte.io>
Thu, 6 Jun 2019 18:53:08 +0000 (18:53 +0000)
- Add a text field for config.copy_status to input strings
corresponsing to magical statuses.
- Refactor volcopy status field to disable when magical status exists
in a status, removing previous hardcoded check for magical status.

Signed-off-by: Kyle Huckins <khuckins@catalyte.io>
 Changes to be committed:
modified:   Open-ILS/examples/fm_IDL.xml
modified:   Open-ILS/src/sql/Pg/002.schema.config.sql
modified:   Open-ILS/src/sql/Pg/950.data.seed-values.sql
modified:   Open-ILS/src/sql/Pg/upgrade/XXXX.schema.lp1616170-custom-copy-status-maintainability.sql
modified:   Open-ILS/src/templates/staff/cat/volcopy/t_attr_edit.tt2
modified:   Open-ILS/web/js/ui/default/staff/cat/volcopy/app.js

Open-ILS/examples/fm_IDL.xml
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.schema.lp1616170-custom-copy-status-maintainability.sql
Open-ILS/src/templates/staff/cat/volcopy/t_attr_edit.tt2
Open-ILS/web/js/ui/default/staff/cat/volcopy/app.js

index b32dd02..1d5fe4d 100644 (file)
@@ -4376,6 +4376,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
             <field name="checkin_ok" reporter:datatype="bool"/>
             <field name="reshelve_on_checkin" reporter:datatype="bool"/>
             <field name="copy_status_event" reporter:datatype="text"/>
+            <field name="magic_status" reporter:datatype="text"/>
                </fields>
                <links/>
         <permacrud xmlns="http://open-ils.org/spec/opensrf/IDL/permacrud/v1">
index 0f02363..1f17a3a 100644 (file)
@@ -445,7 +445,8 @@ CREATE TABLE config.copy_status (
     is_available  BOOL    NOT NULL DEFAULT FALSE,
     checkin_ok    BOOL    NOT NULL DEFAULT FALSE,
     reshelve_on_checkin    BOOL    NOT NULL DEFAULT FALSE,
-    copy_status_event    TEXT
+    copy_status_event    TEXT,
+    magic_status    TEXT
 );
 COMMENT ON TABLE config.copy_status IS $$
 Copy Statuses
index 84867ae..5d091ee 100644 (file)
@@ -524,14 +524,14 @@ INSERT INTO config.rule_age_hold_protect VALUES
 SELECT SETVAL('config.rule_age_hold_protect_id_seq'::TEXT, 100);
 
 INSERT INTO config.copy_status (id,name,holdable,opac_visible,copy_active,is_available,checkin_ok,reshelve_on_checkin) VALUES (0,oils_i18n_gettext(0, 'Available', 'ccs', 'name'),'t','t','t','t','t','t');
-INSERT INTO config.copy_status (id,name,holdable,opac_visible,copy_active,restrict_copy_delete,checkin_ok,reshelve_on_checkin) VALUES (1,oils_i18n_gettext(1, 'Checked out', 'ccs', 'name'),'t','t','t','t','t','t',);
+INSERT INTO config.copy_status (id,name,holdable,opac_visible,copy_active,restrict_copy_delete,checkin_ok,reshelve_on_checkin,magic_status) VALUES (1,oils_i18n_gettext(1, 'Checked out', 'ccs', 'name'),'t','t','t','t','t','t','copy_editor_disable,block_mark_action');
 INSERT INTO config.copy_status (id,name) VALUES (2,oils_i18n_gettext(2, 'Bindery', 'ccs', 'name'));
-INSERT INTO config.copy_status (id,name,restrict_copy_delete,copy_status_event) VALUES (3,oils_i18n_gettext(3, 'Lost', 'ccs', 'name'),'t','COPY_STATUS_LOST');
+INSERT INTO config.copy_status (id,name,restrict_copy_delete,copy_status_event,magic_status) VALUES (3,oils_i18n_gettext(3, 'Lost', 'ccs', 'name'),'t','COPY_STATUS_LOST','copy_editor_disable,block_mark_action');
 INSERT INTO config.copy_status (id,name,copy_status_event) VALUES (4,oils_i18n_gettext(4, 'Missing', 'ccs', 'name'),'t');
 INSERT INTO config.copy_status (id,name,holdable,opac_visible,checkin_ok,reshelve_on_checkin) VALUES (5,oils_i18n_gettext(5, 'In process', 'ccs', 'name'),'t','t','t','t');
-INSERT INTO config.copy_status (id,name,holdable,opac_visible,restrict_copy_delete,checkin_ok,reshelve_on_checkin) VALUES (6,oils_i18n_gettext(6, 'In transit', 'ccs', 'name'),'t','t','t','t','t');
+INSERT INTO config.copy_status (id,name,holdable,opac_visible,restrict_copy_delete,checkin_ok,reshelve_on_checkin,magic_status) VALUES (6,oils_i18n_gettext(6, 'In transit', 'ccs', 'name'),'t','t','t','t','t','copy_editor_disable,block_mark_action');
 INSERT INTO config.copy_status (id,name,holdable,opac_visible,copy_active,is_available,checkin_ok,reshelve_on_checkin) VALUES (7,oils_i18n_gettext(7, 'Reshelving', 'ccs', 'name'),'t','t','t','t','t','t');
-INSERT INTO config.copy_status (id,name,holdable,opac_visible,copy_active,restrict_copy_delete,checkin_ok,reshelve_on_checkin) VALUES (8,oils_i18n_gettext(8, 'On holds shelf', 'ccs', 'name'),'t','t','t','t','t','t');
+INSERT INTO config.copy_status (id,name,holdable,opac_visible,copy_active,restrict_copy_delete,checkin_ok,reshelve_on_checkin,magic_status) VALUES (8,oils_i18n_gettext(8, 'On holds shelf', 'ccs', 'name'),'t','t','t','t','t','t','copy_editor_disable');
 INSERT INTO config.copy_status (id,name,holdable,opac_visible) VALUES (9,oils_i18n_gettext(9, 'On order', 'ccs', 'name'),'t','t');
 INSERT INTO config.copy_status (id,name,copy_active) VALUES (10,oils_i18n_gettext(10, 'ILL', 'ccs', 'name'),'t');
 INSERT INTO config.copy_status (id,name,checkin_ok,reshelve_on_checkin) VALUES (11,oils_i18n_gettext(11, 'Cataloging', 'ccs', 'name'),'t','t');
@@ -540,12 +540,12 @@ INSERT INTO config.copy_status (id,name) VALUES (13,oils_i18n_gettext(13, 'Disca
 INSERT INTO config.copy_status (id,name) VALUES (14,oils_i18n_gettext(14, 'Damaged', 'ccs', 'name'));
 INSERT INTO config.copy_status (id,name,copy_active,checkin_ok,reshelve_on_checkin) VALUES (15,oils_i18n_gettext(15, 'On reservation shelf', 'ccs', 'name'),'t','t','t');
 INSERT INTO config.copy_status
-    (id, name, holdable, opac_visible, copy_active, restrict_copy_delete, copy_status_event)
-    VALUES (16, oils_i18n_gettext(16, 'Long Overdue', 'ccs', 'name'), 'f', 'f', 'f', 't', 'COPY_STATUS_LONG_OVERDUE');
+    (id, name, holdable, opac_visible, copy_active, restrict_copy_delete, copy_status_event,magic_status)
+    VALUES (16, oils_i18n_gettext(16, 'Long Overdue', 'ccs', 'name'), 'f', 'f', 'f', 't', 'COPY_STATUS_LONG_OVERDUE','copy_editor_disable,block_mark_action');
 INSERT INTO config.copy_status
 (id, name, holdable, opac_visible, copy_active, restrict_copy_delete, copy_status_event)
 VALUES (17, oils_i18n_gettext(17, 'Lost and Paid', 'ccs', 'name'), 'f', 'f', 'f', 't', 'COPY_STATUS_LOST_AND_PAID');
-INSERT INTO config.copy_status(id,name,holdable,opac_visible,checkin_ok) VALUES (18,oils_i18n_gettext(18, 'Canceled Transit', 'ccs', 'name'),'t','t','t');
+INSERT INTO config.copy_status(id,name,holdable,opac_visible,checkin_ok,magic_status) VALUES (18,oils_i18n_gettext(18, 'Canceled Transit', 'ccs', 'name'),'t','t','t','copy_editor_disable');
 
 
 SELECT SETVAL('config.copy_status_id_seq'::TEXT, 100);
index 6fa449a..2a4fcca 100644 (file)
@@ -5,7 +5,8 @@ SELECT evergreen.upgrade_deps_block_check('XXXX', :eg_version);
 ALTER TABLE config.copy_status
     ADD COLUMN checkin_ok BOOL NOT NULL DEFAULT FALSE,
     ADD COLUMN reshelve_on_checkin BOOL NOT NULL DEFAULT FALSE,
-    ADD COLUMN copy_status_event TEXT;
+    ADD COLUMN copy_status_event TEXT,
+    ADD COLUMN magic_status TEXT;
 
     -- Update checkin_ok
     UPDATE config.copy_status SET checkin_ok = true WHERE id = 0;
@@ -33,5 +34,13 @@ ALTER TABLE config.copy_status
     UPDATE config.copy_status SET reshelve_on_checkin = true WHERE id = 8;
     UPDATE config.copy_status SET reshelve_on_checkin = true WHERE id = 11;
     UPDATE config.copy_status SET reshelve_on_checkin = true WHERE id = 15;
+    
+    -- UPDATE magic_status
+    UPDATE config.copy_status SET magic_status = 'copy_editor_disable,block_mark_action' WHERE id = 1;
+    UPDATE config.copy_status SET magic_status = 'copy_editor_disable,block_mark_action' WHERE id = 3;
+    UPDATE config.copy_status SET magic_status = 'copy_editor_disable,block_mark_action' WHERE id = 6;
+    UPDATE config.copy_status SET magic_status = 'copy_editor_disable' WHERE id = 8;
+    UPDATE config.copy_status SET magic_status = 'copy_editor_disable,block_mark_action' WHERE id = 16;
+    UPDATE config.copy_status SET magic_status = 'copy_editor_disable' WHERE id = 18;
 
 COMMIT;
index 580ec61..d927f2b 100644 (file)
       <div class="bg-info"><label>[% l('Status') %]</label></div>
       <div ng-class="{'bg-success': working.status !== undefined}">
         <select class="form-control" ng-model="working.status"
-          ng-options="s.id() as s.name() disable when magic_status_list.indexOf(s.id(),0) > -1 for s in status_list">
+          ng-options="s.id() as s.name() disable when s.magic_status() for s in status_list">
         </select>
       </div>
       <div ng-if="hasMulti()">
index c27170a..8d90a8e 100644 (file)
@@ -188,18 +188,6 @@ function(egCore , $q) {
 
     };
 
-    service.get_magic_statuses = function() {
-        /* TODO: make these more configurable per lp1616170 */
-        return $q.when([
-             1  /* Checked out */
-            ,3  /* Lost */
-            ,6  /* In transit */
-            ,8  /* On holds shelf */
-            ,16 /* Long overdue */
-            ,18 /* Canceled Transit */
-        ]);
-    }
-
     service.get_statuses = function() {
         if (egCore.env.ccs)
             return $q.when(egCore.env.ccs.list);
@@ -1921,10 +1909,6 @@ function($scope , $q , $window , $routeParams , $location , $timeout , egCore ,
         createSimpleUpdateWatcher('location');
 
         $scope.status_list = [];
-        itemSvc.get_magic_statuses().then(function(list){
-            $scope.magic_status_list = list;
-            createSimpleUpdateWatcher('status',$scope.magic_status_list);
-        });
         itemSvc.get_statuses().then(function(list){
             $scope.status_list = list;
         });
@@ -2746,9 +2730,6 @@ function($scope , $q , $window , $routeParams , $location , $timeout , egCore ,
                 }
 
                 $scope.status_list = [];
-                itemSvc.get_magic_statuses().then(function(list){
-                    $scope.magic_status_list = list;
-                });
                 itemSvc.get_statuses().then(function(list){
                     $scope.status_list = list;
                 });