View | Details | Raw Unified | Return to bug 26072
Collapse All | Expand All

(-)a/Koha/REST/V1/Holds.pm (-1 / +3 lines)
Lines 75-80 sub add { Link Here
75
        my $notes             = $body->{notes};
75
        my $notes             = $body->{notes};
76
        my $hold_date         = $body->{hold_date};
76
        my $hold_date         = $body->{hold_date};
77
77
78
        my $disallow_override = $body->{_disallow_override};
79
78
        if(!C4::Context->preference( 'AllowHoldDateInFuture' ) && $hold_date) {
80
        if(!C4::Context->preference( 'AllowHoldDateInFuture' ) && $hold_date) {
79
            return $c->render(
81
            return $c->render(
80
                status  => 400,
82
                status  => 400,
Lines 132-138 sub add { Link Here
132
            ? C4::Reserves::CanItemBeReserved( $patron_id, $item_id )
134
            ? C4::Reserves::CanItemBeReserved( $patron_id, $item_id )
133
            : C4::Reserves::CanBookBeReserved( $patron_id, $biblio_id );
135
            : C4::Reserves::CanBookBeReserved( $patron_id, $biblio_id );
134
136
135
        my $can_override = C4::Context->preference('AllowHoldPolicyOverride');
137
        my $can_override = $disallow_override ? 0 : C4::Context->preference('AllowHoldPolicyOverride');
136
138
137
        unless ($can_override || $can_place_hold->{status} eq 'OK' ) {
139
        unless ($can_override || $can_place_hold->{status} eq 'OK' ) {
138
            return $c->render(
140
            return $c->render(
(-)a/api/v1/swagger/paths/holds.json (+4 lines)
Lines 201-206 Link Here
201
              "item_type": {
201
              "item_type": {
202
                "description": "Limit hold on one itemtype (ignored for item-level holds)",
202
                "description": "Limit hold on one itemtype (ignored for item-level holds)",
203
                "type": [ "string", "null" ]
203
                "type": [ "string", "null" ]
204
              },
205
              "_disallow_override": {
206
                "description": "Prevents AllowHoldPolicyOverride from forcing a hold to be placed even if it violates circulation rules",
207
                "type": "boolean"
204
              }
208
              }
205
            },
209
            },
206
            "required": [ "patron_id", "pickup_library_id" ]
210
            "required": [ "patron_id", "pickup_library_id" ]
(-)a/t/db_dependent/api/v1/holds.t (-2 / +9 lines)
Lines 348-354 subtest 'test AllowHoldDateInFuture' => sub { Link Here
348
348
349
subtest 'test AllowHoldPolicyOverride' => sub {
349
subtest 'test AllowHoldPolicyOverride' => sub {
350
350
351
    plan tests => 5;
351
    plan tests => 8;
352
352
353
    $dbh->do('DELETE FROM reserves');
353
    $dbh->do('DELETE FROM reserves');
354
354
Lines 370-375 subtest 'test AllowHoldPolicyOverride' => sub { Link Here
370
370
371
    t::lib::Mocks::mock_preference( 'AllowHoldPolicyOverride', 1 );
371
    t::lib::Mocks::mock_preference( 'AllowHoldPolicyOverride', 1 );
372
372
373
    $post_data->{_disallow_override} = Mojo::JSON::true;
374
375
    $t->post_ok( "//$userid_3:$password@/api/v1/holds" => json => $post_data )
376
      ->status_is(403)
377
      ->json_has('/error');
378
379
    delete $post_data->{_disallow_override};
380
373
    $t->post_ok( "//$userid_3:$password@/api/v1/holds" => json => $post_data )
381
    $t->post_ok( "//$userid_3:$password@/api/v1/holds" => json => $post_data )
374
      ->status_is(201);
382
      ->status_is(201);
375
};
383
};
376
- 

Return to bug 26072