From dd2c6e4c69ef411a05170abfe92ed60668ac7532 Mon Sep 17 00:00:00 2001 From: Tomas Cohen Arazi Date: Thu, 18 Oct 2018 15:50:27 -0300 Subject: [PATCH] Bug 21600: /patrons should have timestamp/datetime values converted from rfc3339 into valid MySQL values Bug 21597 enabled the option so set strict SQL modes in koha-conf.xml to be able to improve Koha's comformance to current standards on DB engines. This causes lots of parts of Koha to fail because they rely on MySQL fallbacks that are no longer default behaviours. While we can workaround this by setting SQL modes on runtime, the decision has been that this needs fixing. This patch deals with the /patrons API failing to correctly convert datetimes into valid SQL timestamps. To test: - Run: $ kshell k$ prove t/db_dependent/api/v1/patrons.t => SUCCESS: Tests pass - Add 1 on your koha-conf.xml $ sudo vim /etc/koha/sites/kohadev/koha-conf.xml - Restart memcached and Plack: $ restart_all - Run: k$ prove t/db_dependent/api/v1/patrons.t => FAIL: Tests fail due to updated_on and/or lastseen fields wrong format (MySQL error) - Apply this patch - Run: k$ prove t/db_dependent/api/v1/patrons.t => SUCCESS: Tests pass! It all makes sense! - Sign off :-D Signed-off-by: Tomas Cohen Arazi Signed-off-by: Jonathan Druart Signed-off-by: Marcel de Rooy Signed-off-by: Nick Clemens (cherry picked from commit 13b8e95f218924cc1ec41e2570791980bd7bcf17) Signed-off-by: Martin Renvoize --- Koha/REST/V1/Patrons.pm | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Koha/REST/V1/Patrons.pm b/Koha/REST/V1/Patrons.pm index 2c1934ab0a..30548502a9 100644 --- a/Koha/REST/V1/Patrons.pm +++ b/Koha/REST/V1/Patrons.pm @@ -20,6 +20,7 @@ use Modern::Perl; use Mojo::Base 'Mojolicious::Controller'; use C4::Members qw( AddMember ModMember ); +use Koha::DateUtils; use Koha::Patrons; use Scalar::Util qw(blessed); @@ -381,6 +382,14 @@ sub _to_model { $patron->{gonenoaddress} = ($patron->{gonenoaddress}) ? 1 : 0; } + if ( exists $patron->{lastseen} ) { + $patron->{lastseen} = output_pref({ dt => dt_from_string( $patron->{lastseen} ), dateformat => 'sql' }); + } + + if ( exists $patron->{updated_on} ) { + $patron->{updated_on} = output_pref({ dt => dt_from_string( $patron->{updated_on} ), dateformat => 'sql' }); + } + return $patron; } -- 2.20.1