in progress branch to support deleting prefixes and suffixes user/rogan/lp1713120_delete_acn_presufs
authorRogan Hamby <rogan.hamby@gmail.com>
Mon, 29 Jun 2020 15:25:10 +0000 (11:25 -0400)
committerRogan Hamby <rogan.hamby@gmail.com>
Mon, 29 Jun 2020 15:25:10 +0000 (11:25 -0400)
Open-ILS/examples/fm_IDL.xml
Open-ILS/src/extras/ils_events.xml
Open-ILS/src/sql/Pg/040.schema.asset.sql
Open-ILS/src/sql/Pg/upgrade/xxxx.schema.add_deleted_to_acn_prefix_suffix.sql [new file with mode: 0644]
Open-ILS/src/templates/conify/global/config/acn_prefix.tt2
Open-ILS/src/templates/conify/global/config/acn_suffix.tt2
Open-ILS/web/js/ui/default/conify/global/config/acn_prefix.js
Open-ILS/web/js/ui/default/staff/cat/volcopy/app.js

index 560d372..2122f64 100644 (file)
@@ -3064,6 +3064,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
                        <field reporter:label="Label" name="label" reporter:datatype="text"/>
                        <field reporter:label="Label Sort Key" name="label_sortkey" reporter:datatype="text"/>
                        <field reporter:label="Owning Library" name="owning_lib"  reporter:datatype="org_unit"/>
+                       <field reporter:label="Deleted" name="deleted" reporter:datatype="boolean"/>
                </fields>
                <links>
                        <link field="owning_lib" reltype="has_a" key="id" map="" class="aou"/>
@@ -3083,6 +3084,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
                        <field reporter:label="Label" name="label" reporter:datatype="text"/>
                        <field reporter:label="Label Sort Key" name="label_sortkey" reporter:datatype="text"/>
                        <field reporter:label="Owning Library" name="owning_lib"  reporter:datatype="org_unit"/>
+                       <field reporter:label="Deleted" name="deleted" reporter:datatype="boolean"/>
                </fields>
                <links>
                        <link field="owning_lib" reltype="has_a" key="id" map="" class="aou"/>
index cc0d3f8..2fdf502 100644 (file)
        <event code='1881' textcode='PERMISSION_GRP_PENALTY_THRESHOLD_NOT_FOUND'>
                <desc xml:lang='en-US'>The requested permission_grp_penalty_threshold was not found</desc>
        </event>
-    <event code='1882' textcode='RECORD_REFERENCED_BY_LINEITEM'>
-        <desc xml:lang="en-US">The selected bib record has an open lineitem order referencing it.</desc>
-    </event>
+        <event code='1882' textcode='RECORD_REFERENCED_BY_LINEITEM'>
+                <desc xml:lang="en-US">The selected bib record has an open lineitem order referencing it.</desc>
+        </event>
+        <event code='1883' textcode='ACN_PREFIX_STILL_IN_USE'>
+                <desc xml:lang="en-US">One or more call number prefixes selected for deletion are still in use by non-deleted call numbers.</desc>
+       </event>
+       <event code='1884' textcode='ACN_SUFFIX_STILL_IN_USE'>
+                <desc xml:lang="en-US">One or more call number suffixes selected for deletion are still in use by non-deleted call numers.</desc>
+        </event>
 
        <event code='1700' textcode='NON_CAT_TYPE_EXISTS'>
                <desc xml:lang="en-US"> The non-cataloged type object already exists </desc>
index 198632a..5ef9bb6 100644 (file)
@@ -438,9 +438,11 @@ CREATE TABLE asset.call_number_prefix (
        id                      SERIAL   PRIMARY KEY,
        owning_lib          INT                 NOT NULL REFERENCES actor.org_unit (id),
        label               TEXT                NOT NULL, -- i18n
-       label_sortkey   TEXT
+       label_sortkey   TEXT,
+       deleted         BOOLEAN DEFAULT FALSE 
 );
 CREATE TRIGGER prefix_normalize_tgr BEFORE INSERT OR UPDATE ON asset.call_number_prefix FOR EACH ROW EXECUTE PROCEDURE asset.normalize_affix_sortkey();
+CREATE RULE protect_acn_prefix_delete AS ON DELETE TO asset.call_number_prefix DO INSTEAD UPDATE asset.call_number_prefix SET deleted = TRUE WHERE OLD.id = asset.call_number_prefix.id;
 CREATE UNIQUE INDEX asset_call_number_prefix_once_per_lib ON asset.call_number_prefix (label, owning_lib);
 CREATE INDEX asset_call_number_prefix_sortkey_idx ON asset.call_number_prefix (label_sortkey);
 
@@ -448,9 +450,11 @@ CREATE TABLE asset.call_number_suffix (
        id                      SERIAL   PRIMARY KEY,
        owning_lib          INT                 NOT NULL REFERENCES actor.org_unit (id),
        label               TEXT                NOT NULL, -- i18n
-       label_sortkey   TEXT
+       label_sortkey   TEXT,
+       deleted         BOOLEAN DEFAULT FALSE 
 );
 CREATE TRIGGER suffix_normalize_tgr BEFORE INSERT OR UPDATE ON asset.call_number_suffix FOR EACH ROW EXECUTE PROCEDURE asset.normalize_affix_sortkey();
+CREATE RULE protect_acn_suffix_delete AS ON DELETE TO asset.call_number_suffix DO INSTEAD UPDATE asset.call_number_suffix SET deleted = TRUE WHERE OLD.id = asset.call_number_suffix.id;
 CREATE UNIQUE INDEX asset_call_number_suffix_once_per_lib ON asset.call_number_suffix (label, owning_lib);
 CREATE INDEX asset_call_number_suffix_sortkey_idx ON asset.call_number_suffix (label_sortkey);
 
diff --git a/Open-ILS/src/sql/Pg/upgrade/xxxx.schema.add_deleted_to_acn_prefix_suffix.sql b/Open-ILS/src/sql/Pg/upgrade/xxxx.schema.add_deleted_to_acn_prefix_suffix.sql
new file mode 100644 (file)
index 0000000..3edeedc
--- /dev/null
@@ -0,0 +1,11 @@
+BEGIN;
+
+SELECT evergreen.upgrade_deps_block_check('xxxx', :eg_version);
+
+ALTER TABLE asset.call_number_suffix ADD COLUMN deleted BOOLEAN DEFAULT FALSE;
+ALTER TABLE asset.call_number_prefix ADD COLUMN deleted BOOLEAN DEFAULT FALSE;
+
+CREATE RULE protect_acn_suffix_delete AS ON DELETE TO asset.call_number_suffix DO INSTEAD UPDATE asset.call_number_suffix SET deleted = TRUE WHERE OLD.id = asset.call_number_suffix.id;
+CREATE RULE protect_acn_prefix_delete AS ON DELETE TO asset.call_number_prefix DO INSTEAD UPDATE asset.call_number_prefix SET deleted = TRUE WHERE OLD.id = asset.call_number_prefix.id;
+
+COMMIT;
index 2e51fbe..621f8d7 100644 (file)
@@ -19,7 +19,7 @@
         </div>
         <table  jsId="thingGrid"
                 dojoType="openils.widget.AutoGrid"
-                fieldOrder="['id', 'label', 'owning_lib']"
+                fieldOrder="['id', 'label', 'owning_lib', 'deleted']"
                 suppressFields="['label_sortkey']"
                 suppressEditFields="['label_sortkey']"
                 query="{id: '*'}"
index 88453cf..6564e94 100644 (file)
@@ -19,7 +19,7 @@
         </div>
         <table  jsId="thingGrid"
                 dojoType="openils.widget.AutoGrid"
-                fieldOrder="['id', 'label', 'owning_lib']"
+                fieldOrder="['id', 'label', 'owning_lib', 'deleted']"
                 suppressFields="['label_sortkey']"
                 suppressEditFields="['label_sortkey']"
                 query="{id: '*'}"
index 2d307a8..94b7207 100644 (file)
@@ -50,7 +50,10 @@ function buildGrid() {
         {   async: true,
             params: [
                 openils.User.authtoken,
-                {"owning_lib":fieldmapper.aou.descendantNodeList(thingContextOrg,true)},
+                {"owning_lib":fieldmapper.aou.descendantNodeList(thingContextOrg,true),
+                   deleted: 'f',
+                   id != -1
+               },
                 {"order_by":{"acnp":"label_sortkey"}}
             ],
             oncomplete: function(r) {
index 29bd7f0..f29a73f 100644 (file)
@@ -118,7 +118,9 @@ function(egCore , $q) {
 
     service.get_prefixes = function(org) {
         return egCore.pcrud.search('acnp',
-            {owning_lib : egCore.org.fullPath(org, true)},
+            {owning_lib : egCore.org.fullPath(org, true),
+               deleted : 'f'
+           },
             {order_by : { acnp : 'label_sortkey' }}, {atomic : true}
         );
 
@@ -182,7 +184,9 @@ function(egCore , $q) {
 
     service.get_suffixes = function(org) {
         return egCore.pcrud.search('acns',
-            {owning_lib : egCore.org.fullPath(org, true)},
+            {owning_lib : egCore.org.fullPath(org, true),
+               deleted : 'f' 
+           },
             {order_by : { acns : 'label_sortkey' }}, {atomic : true}
         );