[Rt-commit] rt branch, 4.0/lifecycle-default-value, created. rt-4.0.4-223-g0d3f239
? sunnavy
sunnavy at bestpractical.com
Sat Jun 30 05:01:20 EDT 2012
The branch, 4.0/lifecycle-default-value has been created
at 0d3f239895d3fe07dbdd36bb28c201b9611f1a35 (commit)
- Log -----------------------------------------------------------------
commit e904afe26e55c216db1716be5ec0e17aaa3ce65a
Author: sunnavy <sunnavy at bestpractical.com>
Date: Sun Jan 22 21:33:54 2012 +0800
simplify Queue Lifecycle column's logic to avoid empty values
diff --git a/lib/RT/Queue.pm b/lib/RT/Queue.pm
index 3cb87c4..7e7f411 100644
--- a/lib/RT/Queue.pm
+++ b/lib/RT/Queue.pm
@@ -263,14 +263,10 @@ sub Lifecycle {
sub SetLifecycle {
my $self = shift;
- my $value = shift;
+ my $value = shift || 'default';
- if ( $value && $value ne 'default' ) {
- return (0, $self->loc('[_1] is not valid lifecycle', $value ))
- unless $self->ValidateLifecycle( $value );
- } else {
- $value = undef;
- }
+ return ( 0, $self->loc( '[_1] is not valid lifecycle', $value ) )
+ unless $self->ValidateLifecycle($value);
return $self->_Set( Field => 'Lifecycle', Value => $value, @_ );
}
@@ -409,12 +405,10 @@ sub Create {
return ($val, $msg) unless $val;
}
- if ( $args{'Lifecycle'} && $args{'Lifecycle'} ne 'default' ) {
- return ( 0, $self->loc('Invalid lifecycle name') )
- unless $self->ValidateLifecycle( $args{'Lifecycle'} );
- } else {
- $args{'Lifecycle'} = undef;
- }
+ $args{'Lifecycle'} ||= 'default';
+
+ return ( 0, $self->loc('Invalid lifecycle name') )
+ unless $self->ValidateLifecycle( $args{'Lifecycle'} );
my %attrs = map {$_ => 1} $self->ReadableAttributes;
@@ -1524,7 +1518,7 @@ sub _CoreAccessible {
SubjectTag =>
{read => 1, write => 1, sql_type => 12, length => 120, is_blob => 0, is_numeric => 0, type => 'varchar(120)', default => ''},
Lifecycle =>
- {read => 1, write => 1, sql_type => 12, length => 32, is_blob => 0, is_numeric => 0, type => 'varchar(32)', default => ''},
+ {read => 1, write => 1, sql_type => 12, length => 32, is_blob => 0, is_numeric => 0, type => 'varchar(32)', default => 'default'},
InitialPriority =>
{read => 1, write => 1, sql_type => 4, length => 11, is_blob => 0, is_numeric => 1, type => 'int(11)', default => '0'},
FinalPriority =>
diff --git a/lib/RT/Record.pm b/lib/RT/Record.pm
index 29cff47..2663e95 100644
--- a/lib/RT/Record.pm
+++ b/lib/RT/Record.pm
@@ -899,8 +899,12 @@ sub Update {
my $name = $self->$object->Name;
next if $name eq $value || $name eq ($value || 0);
};
- next if $value eq $self->$attribute();
- next if ($value || 0) eq $self->$attribute();
+
+ my $current = $self->$attribute();
+ # RT::Queue->Lifecycle returns a Lifecycle object instead of name
+ $current = eval { $current->Name } if ref $current;
+ next if $value eq $current;
+ next if ( $value || 0 ) eq $current;
};
$new_values{$attribute} = $value;
diff --git a/share/html/Admin/Queues/Modify.html b/share/html/Admin/Queues/Modify.html
index 5682eee..04dc923 100755
--- a/share/html/Admin/Queues/Modify.html
+++ b/share/html/Admin/Queues/Modify.html
@@ -197,10 +197,9 @@ if ( $QueueObj->Id ) {
ARGSRef => \%ARGS,
);
- $ARGS{'Lifecycle'} = undef if defined $ARGS{'Lifecycle'} and $ARGS{'Lifecycle'} eq "default";
push @results, UpdateRecordObject(
AttributesRef => \@attribs,
- Object => $QueueObj,
+ Object => $QueueObj,
ARGSRef => \%ARGS
);
commit befe72e46b122285b7cfec4230f2b0ba3cbac9da
Author: sunnavy <sunnavy at bestpractical.com>
Date: Sun Jan 22 22:23:50 2012 +0800
test queue's lifecycle change in admin ui
diff --git a/t/web/admin_queue_lifecycle.t b/t/web/admin_queue_lifecycle.t
new file mode 100644
index 0000000..cb18d11
--- /dev/null
+++ b/t/web/admin_queue_lifecycle.t
@@ -0,0 +1,47 @@
+use strict;
+use warnings;
+
+use RT::Test tests => 13;
+
+my $lifecycles = RT->Config->Get('Lifecycles');
+$lifecycles->{foo} = {
+ initial => ['initial'],
+ active => ['open'],
+ inactive => ['resolved'],
+};
+
+RT::Lifecycle->FillCache();
+
+my ( $url, $m ) = RT::Test->started_ok;
+ok( $m->login(), 'logged in' );
+
+$m->get_ok( $url . '/Admin/Queues/Modify.html?id=1' );
+
+my $form = $m->form_name('ModifyQueue');
+my $lifecycle_input = $form->find_input('Lifecycle');
+is( $lifecycle_input->value, 'default', 'default lifecycle' );
+
+my @lifecycles = sort $lifecycle_input->possible_values;
+is_deeply( \@lifecycles, [qw/approvals default foo/], 'found all lifecycles' );
+
+$m->submit_form();
+$m->content_lacks( 'Lifecycle changed from',
+ 'no message of "Lifecycle changed from"' );
+$m->content_lacks( 'That is already the current value',
+ 'no message of "That is already the current value"' );
+
+$form = $m->form_name('ModifyQueue');
+$m->submit_form( fields => { Lifecycle => 'foo' }, );
+$m->content_contains(
+ 'Lifecycle changed from "default" to "foo"');
+$lifecycle_input = $form->find_input('Lifecycle');
+is( $lifecycle_input->value, 'foo', 'lifecycle is changed to foo' );
+
+$form = $m->form_name('ModifyQueue');
+$m->submit_form( fields => { Lifecycle => 'default' }, );
+$m->content_contains(
+ 'Lifecycle changed from "foo" to "default"');
+$lifecycle_input = $form->find_input('Lifecycle');
+is( $lifecycle_input->value, 'default',
+ 'lifecycle is changed back to default' );
+
commit 0d3f239895d3fe07dbdd36bb28c201b9611f1a35
Author: sunnavy <sunnavy at bestpractical.com>
Date: Thu Jun 21 11:05:00 2012 +0800
upgrade script to update queue lifecycle column from null to "default"
as we don't allow to set the column empty value any more
diff --git a/etc/upgrade/4.0.7/content b/etc/upgrade/4.0.7/content
new file mode 100644
index 0000000..94214c7
--- /dev/null
+++ b/etc/upgrade/4.0.7/content
@@ -0,0 +1,17 @@
+ at Final = (
+ sub {
+ $RT::Logger->debug(
+ 'Going to update empty Queue Lifecycle column to "default"');
+
+ my $queues = RT::Queues->new( RT->SystemUser );
+ $queues->Limit(
+ FIELD => 'Lifecycle',
+ OPERATOR => 'IS',
+ VALUE => 'NULL',
+ );
+
+ while ( my $q = $queues->Next ) {
+ $q->SetLifecycle('default');
+ }
+ }
+);
-----------------------------------------------------------------------
More information about the Rt-commit
mailing list