From: Mike Rylander Date: Thu, 7 Jun 2012 18:54:24 +0000 (-0400) Subject: Basic fake-delete support for mono parts X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=c460a1a2792283169330afc69b72b5311f7a2608;p=working%2FEvergreen.git Basic fake-delete support for mono parts Signed-off-by: Mike Rylander Conflicts: Open-ILS/src/perlmods/lib/OpenILS/Application/SuperCat.pm Open-ILS/src/sql/Pg/800.fkeys.sql Open-ILS/src/templates/conify/global/biblio/monograph_part.tt2 --- diff --git a/Open-ILS/examples/fm_IDL.xml b/Open-ILS/examples/fm_IDL.xml index 37aab837d2..8cff802157 100644 --- a/Open-ILS/examples/fm_IDL.xml +++ b/Open-ILS/examples/fm_IDL.xml @@ -3056,6 +3056,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + diff --git a/Open-ILS/src/perlmods/lib/OpenILS/Application/AppUtils.pm b/Open-ILS/src/perlmods/lib/OpenILS/Application/AppUtils.pm index 44449f757c..e690a70e8c 100644 --- a/Open-ILS/src/perlmods/lib/OpenILS/Application/AppUtils.pm +++ b/Open-ILS/src/perlmods/lib/OpenILS/Application/AppUtils.pm @@ -2033,7 +2033,7 @@ sub basic_opac_copy_query { acpm => { type => 'left', join => { - bmp => { type => 'left' } + bmp => { type => 'left', filter => { deleted => 'f' } } } } } diff --git a/Open-ILS/src/perlmods/lib/OpenILS/Application/Search/Biblio.pm b/Open-ILS/src/perlmods/lib/OpenILS/Application/Search/Biblio.pm index 5c8449363e..8de593b840 100644 --- a/Open-ILS/src/perlmods/lib/OpenILS/Application/Search/Biblio.pm +++ b/Open-ILS/src/perlmods/lib/OpenILS/Application/Search/Biblio.pm @@ -2637,7 +2637,8 @@ sub rec_hold_parts { }, distinct => 1, } - } + }, + deleted => 'f' }, order_by =>[{class=>'bmp', field=>'label_sortkey'}] }; diff --git a/Open-ILS/src/perlmods/lib/OpenILS/Application/Storage/CDBI/biblio.pm b/Open-ILS/src/perlmods/lib/OpenILS/Application/Storage/CDBI/biblio.pm index 732dd9a1da..fde1a04126 100644 --- a/Open-ILS/src/perlmods/lib/OpenILS/Application/Storage/CDBI/biblio.pm +++ b/Open-ILS/src/perlmods/lib/OpenILS/Application/Storage/CDBI/biblio.pm @@ -43,7 +43,7 @@ package biblio::monograph_part; use base qw/biblio/; biblio::monograph_part->table( 'biblio_monograph_part' ); -biblio::monograph_part->columns( Essential => qw/id record label label_sortkey/ ); +biblio::monograph_part->columns( Essential => qw/id record label label_sortkey deleted/ ); #------------------------------------------------------------------------------- 1; diff --git a/Open-ILS/src/perlmods/lib/OpenILS/Application/SuperCat.pm b/Open-ILS/src/perlmods/lib/OpenILS/Application/SuperCat.pm index da7f806f27..1d94ef3372 100644 --- a/Open-ILS/src/perlmods/lib/OpenILS/Application/SuperCat.pm +++ b/Open-ILS/src/perlmods/lib/OpenILS/Application/SuperCat.pm @@ -3736,6 +3736,9 @@ sub as_xml { package OpenILS::Application::SuperCat::unAPI::acp; use base qw/OpenILS::Application::SuperCat::unAPI/; +use OpenILS::Application::AppUtils; +my $U = "OpenILS::Application::AppUtils"; + sub as_xml { my $self = shift; my $args = shift; @@ -3763,6 +3766,7 @@ sub as_xml { $xml .= " \n"; if (ref($self->obj->parts) && $self->obj->parts) { for my $part ( @{$self->obj->parts} ) { + next if $U->is_true($part->deleted); $xml .= sprintf(' %s',$part->record, $self->escape($part->label_sortkey), $self->escape($part->label)); $xml .= "\n"; } diff --git a/Open-ILS/src/sql/Pg/010.schema.biblio.sql b/Open-ILS/src/sql/Pg/010.schema.biblio.sql index 4ce54ae96b..ff0542d21d 100644 --- a/Open-ILS/src/sql/Pg/010.schema.biblio.sql +++ b/Open-ILS/src/sql/Pg/010.schema.biblio.sql @@ -98,6 +98,7 @@ CREATE TABLE biblio.monograph_part ( record BIGINT NOT NULL REFERENCES biblio.record_entry (id), label TEXT NOT NULL, label_sortkey TEXT NOT NULL, + deleted BOOL NOT NULL DEFAULT FALSE, CONSTRAINT record_label_unique UNIQUE (record,label) ); diff --git a/Open-ILS/src/sql/Pg/800.fkeys.sql b/Open-ILS/src/sql/Pg/800.fkeys.sql index da04275e78..457f1f3e8a 100644 --- a/Open-ILS/src/sql/Pg/800.fkeys.sql +++ b/Open-ILS/src/sql/Pg/800.fkeys.sql @@ -35,6 +35,8 @@ CREATE RULE protect_copy_location_delete AS DELETE FROM config.circ_limit_set_copy_loc_map WHERE copy_loc = OLD.id; ); +CREATE RULE protect_mono_part_delete AS ON DELETE TO biblio.monograph_part DO INSTEAD (UPDATE biblio.monograph_part SET deleted = TRUE WHERE OLD.id = biblio.monograph_part.id); + ALTER TABLE actor.usr ADD CONSTRAINT actor_usr_mailing_address_fkey FOREIGN KEY (mailing_address) REFERENCES actor.usr_address (id) DEFERRABLE INITIALLY DEFERRED; ALTER TABLE actor.usr ADD CONSTRAINT actor_usr_billing_address_fkey FOREIGN KEY (billing_address) REFERENCES actor.usr_address (id) DEFERRABLE INITIALLY DEFERRED; ALTER TABLE actor.usr ADD CONSTRAINT actor_usr_home_ou_fkey FOREIGN KEY (home_ou) REFERENCES actor.org_unit (id) DEFERRABLE INITIALLY DEFERRED; diff --git a/Open-ILS/src/sql/Pg/990.schema.unapi.sql b/Open-ILS/src/sql/Pg/990.schema.unapi.sql index effa2b9879..fcc96e4378 100644 --- a/Open-ILS/src/sql/Pg/990.schema.unapi.sql +++ b/Open-ILS/src/sql/Pg/990.schema.unapi.sql @@ -576,7 +576,7 @@ RETURNS XML AS $F$ (SELECT XMLAGG(bmp) FROM ( SELECT unapi.bmp( id, 'xml', 'monograph_part', evergreen.array_remove_item_by_value( evergreen.array_remove_item_by_value($5,'bre'), 'holdings_xml'), $3, $4, $6, $7, FALSE) FROM biblio.monograph_part - WHERE record = $1 + WHERE NOT deleted AND record = $1 )x) ) ELSE NULL @@ -957,7 +957,7 @@ CREATE OR REPLACE FUNCTION unapi.bmp ( obj_id BIGINT, format TEXT, ename TEXT, CASE WHEN ('bre' = ANY ($4)) THEN unapi.bre( record, 'marcxml', 'record', evergreen.array_remove_item_by_value($4,'bmp'), $5, $6, $7, $8, FALSE) ELSE NULL END ) FROM biblio.monograph_part - WHERE id = $1 + WHERE NOT deleted AND id = $1 GROUP BY id, label, label_sortkey, record; $F$ LANGUAGE SQL STABLE; diff --git a/Open-ILS/src/templates/conify/global/biblio/monograph_part.tt2 b/Open-ILS/src/templates/conify/global/biblio/monograph_part.tt2 index dfc89cccbd..c1f246a705 100644 --- a/Open-ILS/src/templates/conify/global/biblio/monograph_part.tt2 +++ b/Open-ILS/src/templates/conify/global/biblio/monograph_part.tt2 @@ -37,7 +37,7 @@ openils.Util.addOnLoad( function() { monoPartGrid.overrideEditWidgets.record = new dijit.form.TextBox({"disabled": true}); monoPartGrid.overrideEditWidgets.record.shove = { create : cgi.param('r') }; - monoPartGrid.loadAll({order_by : [{class : 'bmp', field : 'label_sortkey'}]}, {record : cgi.param('r')}); + monoPartGrid.loadAll({order_by : [{class : 'bmp', field : 'label_sortkey'}]}, {deleted : 'f', record : cgi.param('r')}); }); [% END %] diff --git a/Open-ILS/xul/staff_client/server/cat/volume_copy_creator.js b/Open-ILS/xul/staff_client/server/cat/volume_copy_creator.js index 0b16308cd7..950488ffd1 100644 --- a/Open-ILS/xul/staff_client/server/cat/volume_copy_creator.js +++ b/Open-ILS/xul/staff_client/server/cat/volume_copy_creator.js @@ -205,7 +205,7 @@ function my_init() { dojo.require('openils.PermaCrud'); g.pcrud = new openils.PermaCrud({'authtoken':ses()}); - g.parts = g.pcrud.search('bmp',{'record':g.doc_id},{'order_by': { 'bmp' : 'label_sortkey' } }); + g.parts = g.pcrud.search('bmp',{'deleted':'f', 'record':g.doc_id},{'order_by': { 'bmp' : 'label_sortkey' } }); g.parts_hash = util.functional.convert_object_list_to_hash( g.parts ); /***********************************************************************************************************/