Browse Source

Bug 20256: (QA follow-up) Make atomicupdate idempotent

Without this patch, running the atomicupdate twice crashes on patrons
with edit_items permissions:

C4::Installer::run_atomic_updates(): DBI Exception: DBD::mysql::db do failed: Duplicate entry '19-9-edit_any_item' for key 'PRIMARY' at /kohadevbox/koha/installer/data/mysql/updatedatabase.pl line 24303
DEV atomic update /kohadevbox/koha/installer/data/mysql/atomicupdate/bug_20256.perl  [14:26:41]
ERROR - C4::Installer::run_atomic_updates(): DBI Exception: DBD::mysql::db do failed: Duplicate entry '19-9-edit_any_item' for key 'PRIMARY' at /kohadevbox/koha/installer/data/mysql/updatedatabase.pl line 24303

It also aligns this 3yro script with the new structure we've been using.

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
23.05.x
Tomás Cohen Arazi 1 year ago
parent
commit
4315a61447
  1. 19
      installer/data/mysql/atomicupdate/bug_20256.perl
  2. 32
      installer/data/mysql/atomicupdate/bug_20256.pl

19
installer/data/mysql/atomicupdate/bug_20256.perl

@ -1,19 +0,0 @@
$DBversion = 'XXX'; # will be replaced by the RM
if( CheckVersion( $DBversion ) ) {
$dbh->do( "INSERT IGNORE INTO permissions (module_bit, code, description) VALUES ( 9, 'edit_any_item', 'Edit any item reguardless of home library');" );
$dbh->do(q{
INSERT INTO user_permissions ( borrowernumber, module_bit, code )
SELECT borrowernumber, '9', 'edit_any_item'
FROM user_permissions
WHERE module_bit = '9'
AND code = 'edit_items'
});
if ( !column_exists( 'library_groups', 'ft_limit_item_editing' ) ) {
$dbh->do( "ALTER TABLE library_groups ADD COLUMN ft_limit_item_editing tinyint(1) NOT NULL DEFAULT 0 AFTER ft_hide_patron_info" );
}
SetVersion( $DBversion );
print "Upgrade to $DBversion done (Bug 20256 - Add ability to limit editing of items to home library)\n";
}

32
installer/data/mysql/atomicupdate/bug_20256.pl

@ -0,0 +1,32 @@
use Modern::Perl;
return {
bug_number => "20256",
description => "Add ability to limit editing of items to home library",
up => sub {
my ($args) = @_;
my ($dbh, $out) = @$args{qw(dbh out)};
$dbh->do(q{
INSERT IGNORE INTO permissions (module_bit, code, description) VALUES ( 9, 'edit_any_item', 'Edit any item reguardless of home library');
});
say $out "Added new permission 'edit_any_item'";
$dbh->do(q{
INSERT IGNORE INTO user_permissions ( borrowernumber, module_bit, code )
SELECT borrowernumber, '9', 'edit_any_item'
FROM user_permissions
WHERE module_bit = '9'
AND code = 'edit_items'
});
if ( !column_exists( 'library_groups', 'ft_limit_item_editing' ) ) {
$dbh->do(q{
ALTER TABLE library_groups
ADD COLUMN ft_limit_item_editing tinyint(1) NOT NULL DEFAULT 0 AFTER ft_hide_patron_info
});
say $out "Added column 'library_groups.ft_limit_item_editing'";
}
},
};
Loading…
Cancel
Save