Bugzilla – Attachment 96709 Details for
Bug 24321
Make objects.search use mappings from Koha::Object(s)
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 24321: Clean /libraries
Bug-24321-Clean-libraries.patch (text/plain), 8.29 KB, created by
Tomás Cohen Arazi (tcohen)
on 2019-12-31 14:52:34 UTC
(
hide
)
Description:
Bug 24321: Clean /libraries
Filename:
MIME Type:
Creator:
Tomás Cohen Arazi (tcohen)
Created:
2019-12-31 14:52:34 UTC
Size:
8.29 KB
patch
obsolete
>From 2886b04092f898470d1a750de8b3dfc29f92a853 Mon Sep 17 00:00:00 2001 >From: Tomas Cohen Arazi <tomascohen@theke.io> >Date: Tue, 31 Dec 2019 11:07:37 -0300 >Subject: [PATCH] Bug 24321: Clean /libraries > >--- > Koha/REST/V1/{Library.pm => Libraries.pm} | 126 +--------------------- > api/v1/swagger/paths/libraries.json | 24 +++-- > t/db_dependent/api/v1/libraries.t | 6 +- > 3 files changed, 25 insertions(+), 131 deletions(-) > rename Koha/REST/V1/{Library.pm => Libraries.pm} (58%) > >diff --git a/Koha/REST/V1/Library.pm b/Koha/REST/V1/Libraries.pm >similarity index 58% >rename from Koha/REST/V1/Library.pm >rename to Koha/REST/V1/Libraries.pm >index a40e049331..8d0b04e694 100644 >--- a/Koha/REST/V1/Library.pm >+++ b/Koha/REST/V1/Libraries.pm >@@ -1,4 +1,4 @@ >-package Koha::REST::V1::Library; >+package Koha::REST::V1::Libraries; > > # This file is part of Koha. > # >@@ -45,7 +45,7 @@ sub list { > > return try { > my $libraries_set = Koha::Libraries->new; >- my $libraries = $c->objects->search( $libraries_set, \&_to_model, \&_to_api ); >+ my $libraries = $c->objects->search( $libraries_set ); > return $c->render( status => 200, openapi => $libraries ); > } > catch { >@@ -95,7 +95,7 @@ sub add { > my $c = shift->openapi->valid_input or return; > > return try { >- my $library = Koha::Library->new( _to_model( $c->validation->param('body') ) ); >+ my $library = Koha::Library->new_from_api( $c->validation->param('body') ); > $library->store; > $c->res->headers->location( $c->req->url->to_string . '/' . $library->branchcode ); > >@@ -146,7 +146,7 @@ sub update { > > return try { > my $params = $c->req->json; >- $library->set( _to_model($params) ); >+ $library->set_from_api( $params ); > $library->store(); > return $c->render( > status => 200, >@@ -203,122 +203,4 @@ sub delete { > }; > } > >-=head3 _to_api >- >-Helper function that maps a hashref of Koha::Library attributes into REST api >-attribute names. >- >-=cut >- >-sub _to_api { >- my $library = shift; >- >- # Rename attributes >- foreach my $column ( keys %{ $Koha::REST::V1::Library::to_api_mapping } ) { >- my $mapped_column = $Koha::REST::V1::Library::to_api_mapping->{$column}; >- if ( exists $library->{ $column } >- && defined $mapped_column ) >- { >- # key /= undef >- $library->{ $mapped_column } = delete $library->{ $column }; >- } >- elsif ( exists $library->{ $column } >- && !defined $mapped_column ) >- { >- # key == undef => to be deleted >- delete $library->{ $column }; >- } >- } >- >- return $library; >-} >- >-=head3 _to_model >- >-Helper function that maps REST api objects into Koha::Library >-attribute names. >- >-=cut >- >-sub _to_model { >- my $library = shift; >- >- foreach my $attribute ( keys %{ $Koha::REST::V1::Library::to_model_mapping } ) { >- my $mapped_attribute = $Koha::REST::V1::Library::to_model_mapping->{$attribute}; >- if ( exists $library->{ $attribute } >- && defined $mapped_attribute ) >- { >- # key /= undef >- $library->{ $mapped_attribute } = delete $library->{ $attribute }; >- } >- elsif ( exists $library->{ $attribute } >- && !defined $mapped_attribute ) >- { >- # key == undef => to be deleted >- delete $library->{ $attribute }; >- } >- } >- >- if ( exists $library->{pickup_location} ) { >- $library->{pickup_location} = ( $library->{pickup_location} ) ? 1 : 0; >- } >- >- return $library; >-} >- >- >-=head2 Global variables >- >-=head3 $to_api_mapping >- >-=cut >- >-our $to_api_mapping = { >- branchcode => 'library_id', >- branchname => 'name', >- branchaddress1 => 'address1', >- branchaddress2 => 'address2', >- branchaddress3 => 'address3', >- branchzip => 'postal_code', >- branchcity => 'city', >- branchstate => 'state', >- branchcountry => 'country', >- branchphone => 'phone', >- branchfax => 'fax', >- branchemail => 'email', >- branchreplyto => 'reply_to_email', >- branchreturnpath => 'return_path_email', >- branchurl => 'url', >- issuing => undef, >- branchip => 'ip', >- branchprinter => undef, >- branchnotes => 'notes', >- marcorgcode => 'marc_org_code', >-}; >- >-=head3 $to_model_mapping >- >-=cut >- >-our $to_model_mapping = { >- library_id => 'branchcode', >- name => 'branchname', >- address1 => 'branchaddress1', >- address2 => 'branchaddress2', >- address3 => 'branchaddress3', >- postal_code => 'branchzip', >- city => 'branchcity', >- state => 'branchstate', >- country => 'branchcountry', >- phone => 'branchphone', >- fax => 'branchfax', >- email => 'branchemail', >- reply_to_email => 'branchreplyto', >- return_path_email => 'branchreturnpath', >- url => 'branchurl', >- ip => 'branchip', >- notes => 'branchnotes', >- marc_org_code => 'marcorgcode', >-}; >- > 1; >diff --git a/api/v1/swagger/paths/libraries.json b/api/v1/swagger/paths/libraries.json >index c4cd55b578..1110e73348 100644 >--- a/api/v1/swagger/paths/libraries.json >+++ b/api/v1/swagger/paths/libraries.json >@@ -1,8 +1,8 @@ > { > "/libraries": { > "get": { >- "x-mojo-to": "Library#list", >- "operationId": "listLibrary", >+ "x-mojo-to": "Libraries#list", >+ "operationId": "listLibraries", > "tags": [ > "library" > ], >@@ -125,6 +125,18 @@ > "description": "Case insensitive 'starts-with' search on OPAC info", > "required": false, > "type": "string" >+ }, >+ { >+ "$ref": "../parameters.json#/match" >+ }, >+ { >+ "$ref": "../parameters.json#/order_by" >+ }, >+ { >+ "$ref": "../parameters.json#/page" >+ }, >+ { >+ "$ref": "../parameters.json#/per_page" > } > ], > "produces": [ >@@ -160,7 +172,7 @@ > } > }, > "post": { >- "x-mojo-to": "Library#add", >+ "x-mojo-to": "Libraries#add", > "operationId": "addLibrary", > "tags": [ > "library" >@@ -232,7 +244,7 @@ > }, > "/libraries/{library_id}": { > "get": { >- "x-mojo-to": "Library#get", >+ "x-mojo-to": "Libraries#get", > "operationId": "getLibrary", > "tags": [ > "library" >@@ -266,7 +278,7 @@ > } > }, > "put": { >- "x-mojo-to": "Library#update", >+ "x-mojo-to": "Libraries#update", > "operationId": "updateLibrary", > "tags": [ > "library" >@@ -342,7 +354,7 @@ > } > }, > "delete": { >- "x-mojo-to": "Library#delete", >+ "x-mojo-to": "Libraries#delete", > "operationId": "deleteLibrary", > "tags": [ > "library" >diff --git a/t/db_dependent/api/v1/libraries.t b/t/db_dependent/api/v1/libraries.t >index 5ac8eccade..8cdac30dfe 100644 >--- a/t/db_dependent/api/v1/libraries.t >+++ b/t/db_dependent/api/v1/libraries.t >@@ -121,7 +121,7 @@ subtest 'get() tests' => sub { > > $t->get_ok( "//$userid:$password@/api/v1/libraries/" . $library->branchcode ) > ->status_is( 200, 'SWAGGER3.2.2' ) >- ->json_is( '' => Koha::REST::V1::Library::_to_api( $library->TO_JSON ), 'SWAGGER3.3.2' ); >+ ->json_is( '' => $library->to_api, 'SWAGGER3.3.2' ); > > my $non_existent_code = $library->branchcode; > $library->delete; >@@ -155,7 +155,7 @@ subtest 'add() tests' => sub { > my $unauth_userid = $unauthorized_patron->userid; > > my $library_obj = $builder->build_object({ class => 'Koha::Libraries' }); >- my $library = Koha::REST::V1::Library::_to_api( $library_obj->TO_JSON ); >+ my $library = $library_obj->to_api; > $library_obj->delete; > > # Unauthorized attempt to write >@@ -245,7 +245,7 @@ subtest 'update() tests' => sub { > ); > > my $deleted_library = $builder->build_object( { class => 'Koha::Libraries' } ); >- my $library_with_updated_field = Koha::REST::V1::Library::_to_api( $deleted_library->TO_JSON ); >+ my $library_with_updated_field = $deleted_library->to_api; > $library_with_updated_field->{library_id} = $library_id; > $deleted_library->delete; > >-- >2.24.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 24321
:
96703
|
96704
|
96705
|
96706
|
96707
|
96708
|
96709
|
96710
|
96711
|
96712
|
96713
|
96714
|
96715
|
96716
|
96717
|
96718
|
96719
|
96720
|
96721
|
96722
|
96744
|
96840
|
96841
|
96842
|
96843
|
96844
|
96845
|
96846
|
96847
|
96848
|
96849
|
96850
|
96851
|
96852
|
96874
|
96875
|
96876
|
96877
|
96878
|
96879
|
96880
|
96881
|
96882
|
96883
|
96884
|
96885
|
96886
|
96887
|
96939
|
96940
|
96941
|
96942
|
96943
|
96944
|
96945
|
96946
|
96947
|
96948
|
96949
|
96950
|
96951
|
96952