Bugzilla – Attachment 129283 Details for
Bug 29018
Deleting patrons from REST API doesn't do any checks or move to deletedborrowers
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
[21.05.x] Bug 29018: Make DELETE /patrons/:patron_id check things
2105x-Bug-29018-Make-DELETE-patronspatronid-check-.patch (text/plain), 3.17 KB, created by
Tomás Cohen Arazi
on 2022-01-10 18:34:53 UTC
(
hide
)
Description:
[21.05.x] Bug 29018: Make DELETE /patrons/:patron_id check things
Filename:
MIME Type:
Creator:
Tomás Cohen Arazi
Created:
2022-01-10 18:34:53 UTC
Size:
3.17 KB
patch
obsolete
>From 25015d5b0753091ee187650e840d6690ddd2303c Mon Sep 17 00:00:00 2001 >From: Tomas Cohen Arazi <tomascohen@theke.io> >Date: Mon, 20 Dec 2021 12:05:59 -0300 >Subject: [PATCH] [21.05.x] Bug 29018: Make DELETE /patrons/:patron_id check > things > >When the route was implemented, the checks were overlooked. This patch >adds checks for: >- Guarantees >- Debts >- Current checkouts > >Any of those will block deletion, as it should. > >To test: >1. Apply the regression tests patch >2. Run: > $ kshell > k$ prove t/db_dependent/api/v1/patrons.t >=> FAIL: Tests fail, the route misses checks >3. Apply this patch >4. Repeat 2 >=> SUCCESS: Tests pass! The three conditions prevent deletion! >5. Sign off :-D > >Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io> >Signed-off-by: David Nind <david@davidnind.com> >Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org> >--- > Koha/REST/V1/Patrons.pm | 37 +++++++++++++++++++++++++++---- > api/v1/swagger/paths/patrons.json | 12 ++++++++++ > 2 files changed, 45 insertions(+), 4 deletions(-) > >diff --git a/Koha/REST/V1/Patrons.pm b/Koha/REST/V1/Patrons.pm >index a88610bfda..663f092aee 100644 >--- a/Koha/REST/V1/Patrons.pm >+++ b/Koha/REST/V1/Patrons.pm >@@ -331,10 +331,39 @@ sub delete { > > return try { > >- $patron->delete; >- return $c->render( >- status => 204, >- openapi => q{} >+ if ( $patron->checkouts->count > 0 ) { >+ return $c->render( >+ status => 409, >+ openapi => { error => 'Pending checkouts prevent deletion' } >+ ); >+ } >+ >+ my $account = $patron->account; >+ >+ if ( $account->outstanding_debits->total_outstanding > 0 ) { >+ return $c->render( >+ status => 409, >+ openapi => { error => 'Pending debts prevent deletion' } >+ ); >+ } >+ >+ if ( $patron->guarantee_relationships->count > 0 ) { >+ return $c->render( >+ status => 409, >+ openapi => { error => 'Patron is a guarantor and it prevents deletion' } >+ ); >+ } >+ >+ $patron->_result->result_source->schema->txn_do( >+ sub { >+ $patron->move_to_deleted; >+ $patron->delete; >+ >+ return $c->render( >+ status => 204, >+ openapi => q{} >+ ); >+ } > ); > } catch { > if ( blessed $_ && $_->isa('Koha::Exceptions::Patron::FailedDeleteAnonymousPatron') ) { >diff --git a/api/v1/swagger/paths/patrons.json b/api/v1/swagger/paths/patrons.json >index a49f3e3491..48493df5b4 100644 >--- a/api/v1/swagger/paths/patrons.json >+++ b/api/v1/swagger/paths/patrons.json >@@ -700,6 +700,18 @@ > "schema": { > "$ref": "../definitions.json#/error" > } >+ }, >+ "409": { >+ "description": "Conflict in updating resource", >+ "schema": { >+ "$ref": "../definitions.json#/error" >+ } >+ }, >+ "500": { >+ "description": "Internal server error", >+ "schema": { >+ "$ref": "../definitions.json#/error" >+ } > } > }, > "x-koha-authorization": { >-- >2.32.0
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 29018
:
128762
|
128763
|
128812
|
128813
|
128959
|
128960
|
129282
| 129283