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 <strict_sql_modes>1</strict_sql_modes> 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 <tomascohen@theke.io>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>

Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
This commit is contained in:
Tomas Cohen Arazi 2018-10-18 15:50:27 -03:00 committed by Nick Clemens
parent f0373fbdec
commit 13b8e95f21
1 changed files with 9 additions and 0 deletions

View File

@ -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;
}