Bug 28567: Fix 0 vs "" vs undef on the admin library form
There are two things here: * Branches.pickup_location has a default = 1 in DB, we should not set to undef if 0 or it will be set to 1 when stored. * The other fields are all text (varchar, mediumtext or longtext) and can be NULL. They are correct set to NULL when a new library is created but set to an empty string when the library is modified. That's not consistent Test plan: 0. Don't apply the patch 1. Create a new library, set pickup location to "No" 2. Save => Pickup location is set to YES => In DB notice that the different values you didn't fill in are set to NULL 3. Edit the library 4. Save => In DB notice that the different values you didn't fill in are now set to an empty string 5. Apply the patch, restart_all 6. Run the updatedatabase script => In DB all the empty string values are set to NULL 7. Repeat 1 to 4 and confirm that everything is now working as expected Signed-off-by: Owen Leonard <oleonard@myacpl.org> Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl> Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org> Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
This commit is contained in:
parent
a09f673471
commit
a844a2211f
2 changed files with 50 additions and 4 deletions
|
@ -91,7 +91,12 @@ if ( $op eq 'add_form' ) {
|
||||||
if ($is_a_modif) {
|
if ($is_a_modif) {
|
||||||
my $library = Koha::Libraries->find($branchcode);
|
my $library = Koha::Libraries->find($branchcode);
|
||||||
for my $field (@fields) {
|
for my $field (@fields) {
|
||||||
$library->$field( scalar $input->param($field) );
|
if ( $field eq 'pickup_location' ) {
|
||||||
|
# Don't fallback to undef/NULL, default is 1 in DB
|
||||||
|
$library->$field( scalar $input->param($field) );
|
||||||
|
} else {
|
||||||
|
$library->$field( scalar $input->param($field) || undef );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
@ -119,12 +124,19 @@ if ( $op eq 'add_form' ) {
|
||||||
}
|
}
|
||||||
catch {
|
catch {
|
||||||
push @messages, { type => 'alert', code => 'error_on_update' };
|
push @messages, { type => 'alert', code => 'error_on_update' };
|
||||||
}
|
};
|
||||||
} else {
|
} else {
|
||||||
$branchcode =~ s|\s||g;
|
$branchcode =~ s|\s||g;
|
||||||
my $library = Koha::Library->new(
|
my $library = Koha::Library->new(
|
||||||
{ branchcode => $branchcode,
|
{
|
||||||
( map { $_ => scalar $input->param($_) || undef } @fields )
|
branchcode => $branchcode,
|
||||||
|
(
|
||||||
|
map {
|
||||||
|
$_ eq 'pickup_location' # Don't fallback to undef/NULL, default is 1 in DB
|
||||||
|
? ( $_ => scalar $input->param($_) )
|
||||||
|
: ( $_ => scalar $input->param($_) || undef )
|
||||||
|
} @fields
|
||||||
|
)
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
34
installer/data/mysql/atomicupdate/bug_28567.perl
Normal file
34
installer/data/mysql/atomicupdate/bug_28567.perl
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
$DBversion = 'XXX'; # will be replaced by the RM
|
||||||
|
if( CheckVersion( $DBversion ) ) {
|
||||||
|
|
||||||
|
my @fields = qw(
|
||||||
|
branchname
|
||||||
|
branchaddress1
|
||||||
|
branchaddress2
|
||||||
|
branchaddress3
|
||||||
|
branchzip
|
||||||
|
branchcity
|
||||||
|
branchstate
|
||||||
|
branchcountry
|
||||||
|
branchphone
|
||||||
|
branchfax
|
||||||
|
branchemail
|
||||||
|
branchillemail
|
||||||
|
branchreplyto
|
||||||
|
branchreturnpath
|
||||||
|
branchurl
|
||||||
|
branchip
|
||||||
|
branchnotes
|
||||||
|
opac_info
|
||||||
|
marcorgcode
|
||||||
|
);
|
||||||
|
for my $f ( @fields ) {
|
||||||
|
$dbh->do(qq{
|
||||||
|
UPDATE branches
|
||||||
|
SET $f = NULL
|
||||||
|
WHERE $f = ""
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
NewVersion( $DBversion, 28567, "Set to NULL empty branches fields");
|
||||||
|
}
|
Loading…
Reference in a new issue