[Jifty-commit] r1718 - Jifty-DBI/trunk/lib/Jifty/DBI/Filter
jifty-commit at lists.jifty.org
jifty-commit at lists.jifty.org
Tue Aug 1 14:23:22 EDT 2006
Author: nelhage
Date: Tue Aug 1 14:23:21 2006
New Revision: 1718
Modified:
Jifty-DBI/trunk/lib/Jifty/DBI/Filter/Date.pm
Jifty-DBI/trunk/lib/Jifty/DBI/Filter/DateTime.pm
Log:
JDBI::Filter::Date clones dates before setting timezone, so that we
don't alter the object we're passed.
Modified: Jifty-DBI/trunk/lib/Jifty/DBI/Filter/Date.pm
==============================================================================
--- Jifty-DBI/trunk/lib/Jifty/DBI/Filter/Date.pm (original)
+++ Jifty-DBI/trunk/lib/Jifty/DBI/Filter/Date.pm Tue Aug 1 14:23:21 2006
@@ -38,10 +38,13 @@
return unless $$value_ref;
return unless UNIVERSAL::isa( $$value_ref, 'DateTime' );
- $$value_ref->time_zone('floating');
+
+ # Clone the DateTime to avoid altering the object we're given
+ my $dt = $$value_ref->clone;
+ $dt->time_zone('floating');
my $format = ($self->column->type eq "date" ? "%Y-%m-%d" : "%Y-%m-%d %H:%M:%S");
- $$value_ref = $$value_ref->strftime($format);
+ $$value_ref = $dt->strftime($format);
return 1;
}
@@ -71,8 +74,8 @@
my $str = join('T', split ' ', $$value_ref, 2);
my $dt = DateTime::Format::ISO8601->parse_datetime($str);
$dt->time_zone('floating');
- $dt->set_formatter(DateTime::Format::Strptime->new(pattern => '%Y-%m-%d'));
if ($dt) {
+ $dt->set_formatter(DateTime::Format::Strptime->new(pattern => '%Y-%m-%d'));
$$value_ref = $dt;
} else {
return;
Modified: Jifty-DBI/trunk/lib/Jifty/DBI/Filter/DateTime.pm
==============================================================================
--- Jifty-DBI/trunk/lib/Jifty/DBI/Filter/DateTime.pm (original)
+++ Jifty-DBI/trunk/lib/Jifty/DBI/Filter/DateTime.pm Tue Aug 1 14:23:21 2006
@@ -6,6 +6,7 @@
use base qw|Jifty::DBI::Filter|;
use DateTime ();
use DateTime::Format::ISO8601 ();
+use DateTime::Format::Strptime ();
=head1 NAME
@@ -61,7 +62,9 @@
my $str = join('T', split ' ', $$value_ref, 2);
my $dt = DateTime::Format::ISO8601->parse_datetime($str);
+
if ($dt) {
+ $dt->set_formatter(DateTime::Format::Strptime->new(pattern => '%Y-%m-%d %H:%M:%S'));
$$value_ref = $dt;
} else {
return;
More information about the Jifty-commit
mailing list