Bugzilla – Attachment 128960 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]
Bug 29018: Make DELETE /patrons/:patron_id check things
Bug-29018-Make-DELETE-patronspatronid-check-things.patch (text/plain), 3.09 KB, created by
Jonathan Druart
on 2022-01-03 13:36:49 UTC
(
hide
)
Description:
Bug 29018: Make DELETE /patrons/:patron_id check things
Filename:
MIME Type:
Creator:
Jonathan Druart
Created:
2022-01-03 13:36:49 UTC
Size:
3.09 KB
patch
obsolete
>From 0d8efbb54486a9e8dc91eefde91c65e18bbe699d 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] 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.yaml | 8 +++++++ > 2 files changed, 41 insertions(+), 4 deletions(-) > >diff --git a/Koha/REST/V1/Patrons.pm b/Koha/REST/V1/Patrons.pm >index 80b64ee9636..5b82447c8ed 100644 >--- a/Koha/REST/V1/Patrons.pm >+++ b/Koha/REST/V1/Patrons.pm >@@ -330,10 +330,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.yaml b/api/v1/swagger/paths/patrons.yaml >index 2341df8dba0..b825bb8c9ab 100644 >--- a/api/v1/swagger/paths/patrons.yaml >+++ b/api/v1/swagger/paths/patrons.yaml >@@ -546,6 +546,14 @@ > description: Patron not found > schema: > $ref: ../definitions.yaml#/error >+ "409": >+ description: Conflict >+ schema: >+ $ref: ../definitions.yaml#/error >+ "500": >+ description: Internal server error >+ schema: >+ $ref: ../definitions.yaml#/error > x-koha-authorization: > permissions: > borrowers: delete_borrowers >-- >2.25.1
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