[Jifty-commit] r3742 - in jifty/trunk: lib/Jifty/Plugin
lib/Jifty/Plugin/UUID t/TestApp/lib/TestApp/Model t/TestApp/t
jifty-commit at lists.jifty.org
jifty-commit at lists.jifty.org
Mon Jul 30 20:38:34 EDT 2007
Author: jesse
Date: Mon Jul 30 20:38:33 2007
New Revision: 3742
Added:
jifty/trunk/lib/Jifty/Plugin/UUID/
jifty/trunk/lib/Jifty/Plugin/UUID.pm
jifty/trunk/lib/Jifty/Plugin/UUID/Widget.pm
Modified:
jifty/trunk/ (props changed)
jifty/trunk/t/TestApp/lib/TestApp/Model/User.pm
jifty/trunk/t/TestApp/t/05-editactions-Record.t
jifty/trunk/t/TestApp/t/config-Record
Log:
r64932 at pinglin: jesse | 2007-07-30 20:37:16 -0400
* First cut of a UUID column plugin, with a basic test in the user model
Added: jifty/trunk/lib/Jifty/Plugin/UUID.pm
==============================================================================
--- (empty file)
+++ jifty/trunk/lib/Jifty/Plugin/UUID.pm Mon Jul 30 20:38:33 2007
@@ -0,0 +1,46 @@
+use strict;
+use warnings;
+
+package Jifty::Plugin::UUID;
+use base qw/Jifty::Plugin Class::Accessor::Fast/;
+
+=head1 NAME
+
+Jifty::Plugin::UUID
+
+=head1 SYNOPSIS
+
+In your model class schema description, add the following:
+
+ column photo => is UUID;
+
+
+=head1 DESCRIPTION
+
+This plugin provides user pictures for Jifty;
+
+
+=cut
+
+use Jifty::DBI::Schema;
+use Data::UUID;
+use Scalar::Defer;
+my $UUID_GEN = Data::UUID->new();
+
+my $UUID = lazy { $UUID_GEN->create_str() } ;
+sub _uuid {
+ my ($column, $from) = @_;
+ $column->readable(1);
+ $column->writable(1);
+ $column->default($UUID);
+ $column->type('varchar(32)');
+}
+
+Jifty::DBI::Schema->register_types(
+ UUID => sub { _init_handler is \&_uuid, render_as 'Jifty::Plugin::UUID::Widget'},
+);
+
+
+
+
+1;
Added: jifty/trunk/lib/Jifty/Plugin/UUID/Widget.pm
==============================================================================
--- (empty file)
+++ jifty/trunk/lib/Jifty/Plugin/UUID/Widget.pm Mon Jul 30 20:38:33 2007
@@ -0,0 +1,43 @@
+use strict;
+use warnings;
+
+
+package Jifty::Plugin::UUID::Widget;
+
+use base qw/Jifty::Web::Form::Field/;
+
+=head1 NAME
+
+Jifty::Plugin::UUID::Widget -
+
+=head1 METHODS
+
+
+=cut
+
+sub accessors { shift->SUPER::accessors() };
+
+=head2 render_widget
+
+Renders form fields as a uuid;
+
+=cut
+
+sub render_widget {
+ warn "Rendering form field";
+ my $self = shift;
+ my $action = $self->action;
+ my $readonly = 1;
+
+ my $name = $self->name;
+ if ( $action->record->$name() ) {
+ Jifty->web->out( $action->record->$name() );
+ } else {
+ Jifty->web->out("<i>"._('No value yet')."</i>");
+
+ }
+ '';
+}
+
+
+1;
Modified: jifty/trunk/t/TestApp/lib/TestApp/Model/User.pm
==============================================================================
--- jifty/trunk/t/TestApp/lib/TestApp/Model/User.pm (original)
+++ jifty/trunk/t/TestApp/lib/TestApp/Model/User.pm Mon Jul 30 20:38:33 2007
@@ -34,6 +34,7 @@
is immutable,
default is defer { DateTime->now },
filters are 'Jifty::DBI::Filter::DateTime';
+column 'uuid' => is UUID;
};
Modified: jifty/trunk/t/TestApp/t/05-editactions-Record.t
==============================================================================
--- jifty/trunk/t/TestApp/t/05-editactions-Record.t (original)
+++ jifty/trunk/t/TestApp/t/05-editactions-Record.t Mon Jul 30 20:38:33 2007
@@ -7,12 +7,12 @@
use Jifty::SubTest;
BEGIN { $ENV{'JIFTY_CONFIG'} = 't/config-Record' }
-use Jifty::Test tests => 10;
+use Jifty::Test tests => 11;
use Jifty::Test::WWW::Mechanize;
-
# Make sure we can load the model
use_ok('TestApp::Model::User');
+Jifty->new();
# Grab a system use
my $system_user = TestApp::CurrentUser->superuser;
ok($system_user, "Found a system user");
@@ -38,8 +38,9 @@
$o->load($id);
ok($id, "Load returned success");
+
is($o->email, 'newemail at example.com', "Email was updated by form");
is($o->tasty, 1, "User is still tasty (was not updated since immutable)");
-
+ok($o->uuid, "The user has a uuid ". $o->uuid);
1;
Modified: jifty/trunk/t/TestApp/t/config-Record
==============================================================================
--- jifty/trunk/t/TestApp/t/config-Record (original)
+++ jifty/trunk/t/TestApp/t/config-Record Mon Jul 30 20:38:33 2007
@@ -2,3 +2,5 @@
framework:
Database:
RecordBaseClass: Jifty::DBI::Record
+ Plugins:
+ - UUID: {}
More information about the Jifty-commit
mailing list