From 13b8e95f218924cc1ec41e2570791980bd7bcf17 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 --- 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 a43d57114b..8d298a0aab 100644 --- a/Koha/REST/V1/Patrons.pm +++ b/Koha/REST/V1/Patrons.pm @@ -19,6 +19,7 @@ use Modern::Perl; use Mojo::Base 'Mojolicious::Controller'; +use Koha::DateUtils; use Koha::Patrons; use Scalar::Util qw(blessed); @@ -365,6 +366,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.39.5