Bug 10363: There is no package for authorised values.
Test Plan: 1) Apply this patch 2) run updatedatabase.pl 3) prove t/db_dependent/AuthorisedValues.t Signed-off-by: Jonathan Druart <jonathan.druart@biblibre.com> Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com> Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io> Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de> Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
This commit is contained in:
parent
1b5a3a0267
commit
12c8242755
5 changed files with 360 additions and 21 deletions
178
Koha/AuthorisedValue.pm
Normal file
178
Koha/AuthorisedValue.pm
Normal file
|
@ -0,0 +1,178 @@
|
|||
package Koha::AuthorisedValue;
|
||||
|
||||
# Copyright ByWater Solutions 2014
|
||||
#
|
||||
# This file is part of Koha.
|
||||
#
|
||||
# Koha is free software; you can redistribute it and/or modify it under the
|
||||
# terms of the GNU General Public License as published by the Free Software
|
||||
# Foundation; either version 3 of the License, or (at your option) any later
|
||||
# version.
|
||||
#
|
||||
# Koha is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||
# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License along
|
||||
# with Koha; if not, write to the Free Software Foundation, Inc.,
|
||||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
|
||||
use Modern::Perl;
|
||||
|
||||
use Carp;
|
||||
|
||||
use Koha::Database;
|
||||
|
||||
use base qw(Koha::Object);
|
||||
|
||||
=head1 NAME
|
||||
|
||||
Koha::AuthorisedValue - Koha Authorised Value Object class
|
||||
|
||||
=head1 API
|
||||
|
||||
=head2 Class Methods
|
||||
|
||||
=cut
|
||||
|
||||
=head3 branch_limitations
|
||||
|
||||
my $limitations = $av->branch_limitations();
|
||||
|
||||
$av->branch_limitations( \@branchcodes );
|
||||
|
||||
=cut
|
||||
|
||||
sub branch_limitations {
|
||||
my ( $self, $branchcodes ) = @_;
|
||||
|
||||
if ($branchcodes) {
|
||||
return $self->replace_branch_limitations($branchcodes);
|
||||
}
|
||||
else {
|
||||
return $self->get_branch_limitations();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
=head3 get_branch_limitations
|
||||
|
||||
my $limitations = $av->get_branch_limitations();
|
||||
|
||||
=cut
|
||||
|
||||
sub get_branch_limitations {
|
||||
my ($self) = @_;
|
||||
|
||||
my @branchcodes =
|
||||
$self->_avb_resultset->search( { av_id => $self->id() } )
|
||||
->get_column('branchcode')->all();
|
||||
|
||||
return \@branchcodes;
|
||||
}
|
||||
|
||||
=head3 add_branch_limitation
|
||||
|
||||
$av->add_branch_limitation( $branchcode );
|
||||
|
||||
=cut
|
||||
|
||||
sub add_branch_limitation {
|
||||
my ( $self, $branchcode ) = @_;
|
||||
|
||||
croak("No branchcode passed in!") unless $branchcode;
|
||||
|
||||
my $limitation = $self->_avb_resultset->update_or_create(
|
||||
{ av_id => $self->id(), branchcode => $branchcode } );
|
||||
|
||||
return $limitation ? 1 : undef;
|
||||
}
|
||||
|
||||
=head3 add_branch_limitation
|
||||
|
||||
$av->del_branch_limitation( $branchcode );
|
||||
|
||||
=cut
|
||||
|
||||
sub del_branch_limitation {
|
||||
my ( $self, $branchcode ) = @_;
|
||||
|
||||
croak("No branchcode passed in!") unless $branchcode;
|
||||
|
||||
my $limitation =
|
||||
$self->_avb_resultset->find(
|
||||
{ av_id => $self->id(), branchcode => $branchcode } );
|
||||
|
||||
unless ($limitation) {
|
||||
my $id = $self->id();
|
||||
carp(
|
||||
"No branch limit for branch $branchcode found for av_id $id to delete!"
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
return $limitation->delete();
|
||||
}
|
||||
|
||||
=head3 replace_branch_limitations
|
||||
|
||||
$av->replace_branch_limitations( \@branchcodes );
|
||||
|
||||
=cut
|
||||
|
||||
sub replace_branch_limitations {
|
||||
my ( $self, $branchcodes ) = @_;
|
||||
|
||||
$self->_avb_resultset->search( { av_id => $self->id() } )->delete();
|
||||
|
||||
my @return_values =
|
||||
map { $self->add_branch_limitation($_) } @$branchcodes;
|
||||
|
||||
return \@return_values;
|
||||
}
|
||||
|
||||
=head3 lib_opac
|
||||
|
||||
my $description = $av->lib_opac();
|
||||
|
||||
$av->lib_opac( $description );
|
||||
|
||||
=cut
|
||||
|
||||
sub opac_description {
|
||||
my ( $self, $value ) = @_;
|
||||
|
||||
return $self->lib_opac() || $self->lib();
|
||||
}
|
||||
|
||||
=head3 Koha::Objects->_resultset
|
||||
|
||||
Returns the internal resultset or creates it if undefined
|
||||
|
||||
=cut
|
||||
|
||||
sub _avb_resultset {
|
||||
my ($self) = @_;
|
||||
|
||||
$self->{_avb_resultset} ||=
|
||||
Koha::Database->new()->schema()->resultset('AuthorisedValuesBranch');
|
||||
|
||||
$self->{_avb_resultset};
|
||||
}
|
||||
|
||||
=head3 type
|
||||
|
||||
=cut
|
||||
|
||||
sub type {
|
||||
return 'AuthorisedValue';
|
||||
}
|
||||
|
||||
=head1 AUTHOR
|
||||
|
||||
Kyle M Hall <kyle@bywatersolutions.com>
|
||||
|
||||
=cut
|
||||
|
||||
1;
|
||||
## Please see file perltidy.ERR
|
88
Koha/AuthorisedValues.pm
Normal file
88
Koha/AuthorisedValues.pm
Normal file
|
@ -0,0 +1,88 @@
|
|||
package Koha::AuthorisedValues;
|
||||
|
||||
# Copyright ByWater Solutions 2014
|
||||
#
|
||||
# This file is part of Koha.
|
||||
#
|
||||
# Koha is free software; you can redistribute it and/or modify it under the
|
||||
# terms of the GNU General Public License as published by the Free Software
|
||||
# Foundation; either version 3 of the License, or (at your option) any later
|
||||
# version.
|
||||
#
|
||||
# Koha is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||
# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License along
|
||||
# with Koha; if not, write to the Free Software Foundation, Inc.,
|
||||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
|
||||
use Modern::Perl;
|
||||
|
||||
use Carp;
|
||||
|
||||
use Koha::Database;
|
||||
|
||||
use Koha::Borrower;
|
||||
|
||||
use base qw(Koha::Objects);
|
||||
|
||||
=head1 NAME
|
||||
|
||||
Koha::Borrower - Koha Borrower Object class
|
||||
|
||||
=head1 API
|
||||
|
||||
=head2 Class Methods
|
||||
|
||||
=cut
|
||||
|
||||
=head3 Koha::AuthorisedValues->search();
|
||||
|
||||
my @objects = Koha::AuthorisedValues->search($params);
|
||||
|
||||
=cut
|
||||
|
||||
sub search {
|
||||
my ( $self, $params ) = @_;
|
||||
|
||||
carp("No branchcode passed in for authorised values search!")
|
||||
unless $params->{branchcode};
|
||||
|
||||
my $branchcode = $params->{branchcode};
|
||||
delete( $params->{branchcode} );
|
||||
|
||||
my $rs = $self->_resultset()->search(
|
||||
{
|
||||
%$params,
|
||||
-or => [
|
||||
'authorised_values_branches.branchcode' => undef,
|
||||
'authorised_values_branches.branchcode' => $branchcode,
|
||||
],
|
||||
},
|
||||
{ join => 'authorised_values_branches' }
|
||||
);
|
||||
|
||||
my $class = ref($self);
|
||||
return wantarray ? $self->_wrap( $rs->all() ) : $class->new_from_dbic($rs);
|
||||
}
|
||||
|
||||
=head3 type
|
||||
|
||||
=cut
|
||||
|
||||
sub type {
|
||||
return 'AuthorisedValue';
|
||||
}
|
||||
|
||||
sub object_class {
|
||||
return 'Koha::AuthorisedValue';
|
||||
}
|
||||
|
||||
=head1 AUTHOR
|
||||
|
||||
Kyle M Hall <kyle@bywatersolutions.com>
|
||||
|
||||
=cut
|
||||
|
||||
1;
|
|
@ -98,8 +98,8 @@ If the object is new, it will be created.
|
|||
If the object previously existed, it will be updated.
|
||||
|
||||
Returns:
|
||||
1 if the store was a success
|
||||
0 if the store failed
|
||||
$self if the store was a success
|
||||
undef if the store failed
|
||||
|
||||
=cut
|
||||
|
||||
|
|
|
@ -27,22 +27,22 @@ __PACKAGE__->table("authorised_values_branches");
|
|||
|
||||
data_type: 'integer'
|
||||
is_foreign_key: 1
|
||||
is_nullable: 1
|
||||
is_nullable: 0
|
||||
|
||||
=head2 branchcode
|
||||
|
||||
data_type: 'varchar'
|
||||
is_foreign_key: 1
|
||||
is_nullable: 1
|
||||
is_nullable: 0
|
||||
size: 10
|
||||
|
||||
=cut
|
||||
|
||||
__PACKAGE__->add_columns(
|
||||
"av_id",
|
||||
{ data_type => "integer", is_foreign_key => 1, is_nullable => 1 },
|
||||
{ data_type => "integer", is_foreign_key => 1, is_nullable => 0 },
|
||||
"branchcode",
|
||||
{ data_type => "varchar", is_foreign_key => 1, is_nullable => 1, size => 10 },
|
||||
{ data_type => "varchar", is_foreign_key => 1, is_nullable => 0, size => 10 },
|
||||
);
|
||||
|
||||
=head1 RELATIONS
|
||||
|
@ -59,12 +59,7 @@ __PACKAGE__->belongs_to(
|
|||
"av",
|
||||
"Koha::Schema::Result::AuthorisedValue",
|
||||
{ id => "av_id" },
|
||||
{
|
||||
is_deferrable => 1,
|
||||
join_type => "LEFT",
|
||||
on_delete => "CASCADE",
|
||||
on_update => "RESTRICT",
|
||||
},
|
||||
{ is_deferrable => 1, on_delete => "CASCADE", on_update => "RESTRICT" },
|
||||
);
|
||||
|
||||
=head2 branchcode
|
||||
|
@ -79,18 +74,13 @@ __PACKAGE__->belongs_to(
|
|||
"branchcode",
|
||||
"Koha::Schema::Result::Branch",
|
||||
{ branchcode => "branchcode" },
|
||||
{
|
||||
is_deferrable => 1,
|
||||
join_type => "LEFT",
|
||||
on_delete => "CASCADE",
|
||||
on_update => "RESTRICT",
|
||||
},
|
||||
{ is_deferrable => 1, on_delete => "CASCADE", on_update => "RESTRICT" },
|
||||
);
|
||||
|
||||
|
||||
# Created by DBIx::Class::Schema::Loader v0.07039 @ 2014-07-11 09:26:55
|
||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:FlVw5Eu4bXF2ygD0QkwwCg
|
||||
# Created by DBIx::Class::Schema::Loader v0.07040 @ 2014-10-23 10:48:27
|
||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:cjPAyQSK7F7sEkiWjCUE7Q
|
||||
|
||||
__PACKAGE__->set_primary_key(__PACKAGE__->columns);
|
||||
|
||||
# You can replace this text with custom content, and it will be preserved on regeneration
|
||||
1;
|
||||
|
|
83
t/db_dependent/AuthorisedValues.t
Normal file
83
t/db_dependent/AuthorisedValues.t
Normal file
|
@ -0,0 +1,83 @@
|
|||
#!/usr/bin/perl
|
||||
|
||||
use Modern::Perl;
|
||||
use Test::More; # tests => 25;
|
||||
|
||||
use C4::Context;
|
||||
use Koha::AuthorisedValue;
|
||||
use Koha::AuthorisedValues;
|
||||
|
||||
my $dbh = C4::Context->dbh;
|
||||
$dbh->{AutoCommit} = 0;
|
||||
$dbh->{RaiseError} = 1;
|
||||
|
||||
$dbh->do("DELETE FROM authorised_values");
|
||||
|
||||
# insert
|
||||
my $av1 = Koha::AuthorisedValue->new(
|
||||
{
|
||||
category => 'av_for_testing',
|
||||
authorised_value => 'value 1',
|
||||
lib => 'display value 1',
|
||||
lib_opac => 'opac display value 1',
|
||||
imageurl => 'image1.png',
|
||||
}
|
||||
)->store();
|
||||
|
||||
my $av2 = Koha::AuthorisedValue->new(
|
||||
{
|
||||
category => 'av_for_testing',
|
||||
authorised_value => 'value 2',
|
||||
lib => 'display value 2',
|
||||
lib_opac => 'opac display value 2',
|
||||
imageurl => 'image2.png',
|
||||
}
|
||||
)->store();
|
||||
|
||||
my $av3 = Koha::AuthorisedValue->new(
|
||||
{
|
||||
category => 'av_for_testing',
|
||||
authorised_value => 'value 3',
|
||||
lib => 'display value 3',
|
||||
lib_opac => 'opac display value 3',
|
||||
imageurl => 'image2.png',
|
||||
}
|
||||
)->store();
|
||||
|
||||
ok( $av1->id(), 'AV 1 is inserted' );
|
||||
ok( $av2->id(), 'AV 2 is inserted' );
|
||||
ok( $av3->id(), 'AV 3 is inserted' );
|
||||
|
||||
is( $av3->opac_description, 'opac display value 3', 'Got correction opac description if lib_opac is set' );
|
||||
$av3->lib_opac('');
|
||||
is( $av3->opac_description, 'display value 3', 'Got correction opac description if lib_opac is *not* set' );
|
||||
|
||||
my @authorised_values =
|
||||
Koha::AuthorisedValues->new()->search( { category => 'av_for_testing' } );
|
||||
is( @authorised_values, 3, "Get correct number of values" );
|
||||
|
||||
my $branches_rs = Koha::Database->new()->schema()->resultset('Branch')->search();
|
||||
my $branch1 = $branches_rs->next();
|
||||
my $branchcode1 = $branch1->branchcode();
|
||||
my $branch2 = $branches_rs->next();
|
||||
my $branchcode2 = $branch2->branchcode();
|
||||
|
||||
$av1->add_branch_limitation( $branchcode1 );
|
||||
|
||||
@authorised_values = Koha::AuthorisedValues->new()->search( { category => 'av_for_testing', branchcode => $branchcode1 } );
|
||||
is( @authorised_values, 3, "Search including value with a branch limit ( branch can use the limited value ) gives correct number of results" );
|
||||
|
||||
@authorised_values = Koha::AuthorisedValues->new()->search( { category => 'av_for_testing', branchcode => $branchcode2 } );
|
||||
is( @authorised_values, 2, "Search including value with a branch limit ( branch *cannot* use the limited value ) gives correct number of results" );
|
||||
|
||||
$av1->del_branch_limitation( $branchcode1 );
|
||||
@authorised_values = Koha::AuthorisedValues->new()->search( { category => 'av_for_testing', branchcode => $branchcode2 } );
|
||||
is( @authorised_values, 3, "Branch limitation deleted successfully" );
|
||||
|
||||
$av1->add_branch_limitation( $branchcode1 );
|
||||
$av1->branch_limitations( [ $branchcode1, $branchcode2 ] );
|
||||
|
||||
my $limits = $av1->branch_limitations;
|
||||
is( @$limits, 2, 'branch_limitations functions correctly both as setter and getter' );
|
||||
|
||||
done_testing;
|
Loading…
Reference in a new issue