From 63c8b6f6a8ccd7fbc65f39f9bdcd00dfc20bfc3b 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 Content-Type: text/plain; charset=utf-8 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 --- 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 a43d571..8d298a0 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.1.4