[Jifty-commit] r5179 - in Jifty-DBI/trunk: . lib/Jifty/DBI lib/Jifty/DBI/Filter
Jifty commits
jifty-commit at lists.jifty.org
Fri Feb 29 01:40:07 EST 2008
Author: sartak
Date: Fri Feb 29 01:40:06 2008
New Revision: 5179
Modified:
Jifty-DBI/trunk/ (props changed)
Jifty-DBI/trunk/lib/Jifty/DBI/Collection.pm
Jifty-DBI/trunk/lib/Jifty/DBI/Column.pm
Jifty-DBI/trunk/lib/Jifty/DBI/Filter/Boolean.pm
Jifty-DBI/trunk/lib/Jifty/DBI/Record.pm
Jifty-DBI/trunk/lib/Jifty/DBI/Schema.pm
Jifty-DBI/trunk/t/06filter_boolean.t
Log:
r52261 at onn: sartak | 2008-02-29 01:38:30 -0500
Apply filters on default values for attributes
Rename encode_select to decode_select (I always get the two confused)
Force undefined boolean attributes to be false, for sanity reasons
Modified: Jifty-DBI/trunk/lib/Jifty/DBI/Collection.pm
==============================================================================
--- Jifty-DBI/trunk/lib/Jifty/DBI/Collection.pm (original)
+++ Jifty-DBI/trunk/lib/Jifty/DBI/Collection.pm Fri Feb 29 01:40:06 2008
@@ -1332,7 +1332,7 @@
$self->record_class->new(handle => $self->_handle)->_apply_input_filters(
column => $column_obj,
value_ref => \$args{'value'},
- ) if $column_obj && $column_obj->encode_select;
+ ) if $column_obj && $column_obj->decode_select;
my $clause = {
column => $qualified_column,
Modified: Jifty-DBI/trunk/lib/Jifty/DBI/Column.pm
==============================================================================
--- Jifty-DBI/trunk/lib/Jifty/DBI/Column.pm (original)
+++ Jifty-DBI/trunk/lib/Jifty/DBI/Column.pm Fri Feb 29 01:40:06 2008
@@ -30,7 +30,7 @@
case_sensitive
private
protected
- encode_select
+ decode_select
/;
# these actually live in the attributes hash
Modified: Jifty-DBI/trunk/lib/Jifty/DBI/Filter/Boolean.pm
==============================================================================
--- Jifty-DBI/trunk/lib/Jifty/DBI/Filter/Boolean.pm (original)
+++ Jifty-DBI/trunk/lib/Jifty/DBI/Filter/Boolean.pm Fri Feb 29 01:40:06 2008
@@ -6,12 +6,14 @@
use base 'Jifty::DBI::Filter';
use constant TRUE_VALUES => qw(1 t true y yes TRUE);
-use constant FALSE_VALUES => qw(0 f false n no FALSE);
+use constant FALSE_VALUES => ('', qw(0 f false n no FALSE));
sub _is_true {
my $self = shift;
my $value = shift;
+ no warnings 'uninitialized';
+
for ($self->TRUE_VALUES, map { "'$_'" } $self->TRUE_VALUES) {
return 1 if $value eq $_;
}
@@ -23,6 +25,8 @@
my $self = shift;
my $value = shift;
+ return 1 if not defined $value;
+
for ($self->FALSE_VALUES, map { "'$_'" } $self->FALSE_VALUES) {
return 1 if $value eq $_;
}
@@ -42,8 +46,6 @@
with the database's concept of the boolean's value. (For example, 't' and 'f'
might be used -- 'f' is true in Perl)
-If the value is C<undef>, then the encoded value will also be C<undef>.
-
=cut
sub encode {
@@ -69,8 +71,6 @@
Transform the value to the canonical true or false value as expected by the
database.
-If the value is C<undef>, then the decoded value will also be C<undef>.
-
=cut
sub decode {
Modified: Jifty-DBI/trunk/lib/Jifty/DBI/Record.pm
==============================================================================
--- Jifty-DBI/trunk/lib/Jifty/DBI/Record.pm (original)
+++ Jifty-DBI/trunk/lib/Jifty/DBI/Record.pm Fri Feb 29 01:40:06 2008
@@ -1071,7 +1071,7 @@
$self->_apply_input_filters(
column => $column_obj,
value_ref => \$value,
- ) if $column_obj->encode_select;
+ ) if $column_obj->decode_select;
# if the handle is in a case_sensitive world and we need to make
# a case-insensitive query
@@ -1368,6 +1368,11 @@
and not ref $column->default )
{
$attribs{ $column->name } = $column->default;
+
+ $self->_apply_input_filters(
+ column => $column,
+ value_ref => \$attribs{ $column->name },
+ );
}
if ( not defined $attribs{ $column->name }
Modified: Jifty-DBI/trunk/lib/Jifty/DBI/Schema.pm
==============================================================================
--- Jifty-DBI/trunk/lib/Jifty/DBI/Schema.pm (original)
+++ Jifty-DBI/trunk/lib/Jifty/DBI/Schema.pm Fri Feb 29 01:40:06 2008
@@ -407,11 +407,12 @@
boolean => sub {
_init_handler is sub {
my ($column, $from) = @_;
- $column->encode_select(1);
+ $column->decode_select(1);
$column->type('boolean');
},
type is 'boolean',
filters are qw(Jifty::DBI::Filter::Boolean),
+ default is 0,
},
);
Modified: Jifty-DBI/trunk/t/06filter_boolean.t
==============================================================================
--- Jifty-DBI/trunk/t/06filter_boolean.t (original)
+++ Jifty-DBI/trunk/t/06filter_boolean.t Fri Feb 29 01:40:06 2008
@@ -6,7 +6,7 @@
BEGIN { require "t/utils.pl" }
our (@available_drivers);
-use constant TESTS_PER_DRIVER => 122;
+use constant TESTS_PER_DRIVER => 130;
my $total = scalar(@available_drivers) * TESTS_PER_DRIVER;
plan tests => $total;
@@ -40,13 +40,13 @@
( map { [$_, 'false'] } @false ),
);
- for my $value ( @values ) {
+ for my $value ( @values, [undef, 'false'] ) {
my ($input, $bool) = @$value;
my $rec = TestApp::User->new( handle => $handle );
isa_ok($rec, 'Jifty::DBI::Record');
- my ($id) = $rec->create( my_data => $input );
+ my ($id) = $rec->create( defined($input) ? (my_data => $input) : () );
ok($id, 'created record');
ok($rec->load($id), 'loaded record');
is($rec->id, $id, 'record id matches');
More information about the Jifty-commit
mailing list