[Rt-commit] rt branch, 4.0/apply-scrips-to-multiple-queues, updated. rt-4.0.4-163-g60b8fec

Ruslan Zakirov ruz at bestpractical.com
Tue Dec 27 17:08:39 EST 2011


The branch, 4.0/apply-scrips-to-multiple-queues has been updated
       via  60b8fecb907fd8f217ffba3197df1e672fe0ec17 (commit)
       via  27331f82eb505a8f5b0d97aff25bd4b67b82342d (commit)
       via  ddcfc59b4d40a2fac1675a529ac7820644b0f2de (commit)
       via  500836b7355a0e81defba1143da74c2e06219083 (commit)
       via  f74afc66420c73e17797b06a2aa0d2c6e70072c5 (commit)
      from  8f7634af69879f3adb44f7252c874546fcdc9813 (commit)

Summary of changes:
 etc/schema.Oracle                   |    2 +-
 etc/schema.Pg                       |    1 +
 etc/schema.SQLite                   |    1 +
 etc/schema.mysql                    |    1 +
 lib/RT/Scrip.pm                     |   27 ++++++++++++++++++++++
 share/html/Admin/Elements/EditScrip |   43 +++++++++++++++++++++++++++++++++-
 t/approval/admincc.t                |   15 ++++++-----
 t/approval/basic.t                  |   10 ++++----
 t/ticket/scrips_batch.t             |    7 +++++-
 9 files changed, 91 insertions(+), 16 deletions(-)

- Log -----------------------------------------------------------------
commit f74afc66420c73e17797b06a2aa0d2c6e70072c5
Author: Ruslan Zakirov <ruz at bestpractical.com>
Date:   Tue Dec 27 14:57:39 2011 +0400

    an unique index on ObjectScrips table

diff --git a/etc/schema.Oracle b/etc/schema.Oracle
index 33787a9..039a646 100755
--- a/etc/schema.Oracle
+++ b/etc/schema.Oracle
@@ -162,7 +162,7 @@ CREATE TABLE ObjectScrips (
 	LastUpdatedBy	NUMBER(11,0) DEFAULT 0 NOT NULL,
 	LastUpdated	DATE
 );
-
+CREATE UNIQUE INDEX ObjectScrips1 ON ObjectScrips (ObjectId, Scrip);
 
 CREATE SEQUENCE ACL_seq;
 CREATE TABLE ACL (
diff --git a/etc/schema.Pg b/etc/schema.Pg
index 94d89b2..5c2bab6 100755
--- a/etc/schema.Pg
+++ b/etc/schema.Pg
@@ -258,6 +258,7 @@ CREATE TABLE ObjectScrips (
 
 );
 
+CREATE UNIQUE INDEX ObjectScrips1 ON ObjectScrips (ObjectId, Scrip);
 
 
 
diff --git a/etc/schema.SQLite b/etc/schema.SQLite
index c9bab8c..8867b03 100755
--- a/etc/schema.SQLite
+++ b/etc/schema.SQLite
@@ -174,6 +174,7 @@ CREATE TABLE ObjectScrips (
   LastUpdated DATETIME NULL  ,
   PRIMARY KEY (id)
 );
+CREATE UNIQUE INDEX ObjectScrips1 ON ObjectScrips (ObjectId, Scrip);
 
 --- {{{ ACL
 CREATE TABLE ACL (
diff --git a/etc/schema.mysql b/etc/schema.mysql
index cf2f96f..44889a0 100755
--- a/etc/schema.mysql
+++ b/etc/schema.mysql
@@ -165,6 +165,7 @@ CREATE TABLE ObjectScrips (
   PRIMARY KEY (id)
 ) ENGINE=InnoDB CHARACTER SET utf8;
 
+CREATE UNIQUE INDEX ObjectScrips1 ON ObjectScrips (ObjectId, Scrip);
 
 CREATE TABLE ACL (
   id INTEGER NOT NULL  AUTO_INCREMENT,

commit 500836b7355a0e81defba1143da74c2e06219083
Author: Ruslan Zakirov <ruz at bestpractical.com>
Date:   Tue Dec 27 15:25:59 2011 +0400

    show stage selector only when we create a scrip

diff --git a/share/html/Admin/Elements/EditScrip b/share/html/Admin/Elements/EditScrip
index 6ee5ae2..a6f07d3 100755
--- a/share/html/Admin/Elements/EditScrip
+++ b/share/html/Admin/Elements/EditScrip
@@ -79,11 +79,13 @@
     Queue => $Queue,
 &></td></tr>
 
+% if ( $id eq 'new' ) {
 <tr><td class="label"><&|/l&>Stage</&>:</td><td class="value">\
 <& /Admin/Elements/SelectStage,
     Name => "Scrip-$id-Stage",
-    Default => $ARGS{"Scrip-$id-Stage"} || $scrip->Stage,
+    Default => $ARGS{"Scrip-$id-Stage"},
 &></td></tr>
+% }
 
 </table>
 </&>

commit ddcfc59b4d40a2fac1675a529ac7820644b0f2de
Author: Ruslan Zakirov <ruz at bestpractical.com>
Date:   Wed Dec 28 00:05:07 2011 +0400

    scrips disabling in the UI and API

diff --git a/lib/RT/Scrip.pm b/lib/RT/Scrip.pm
index 4147a23..c979d2b 100644
--- a/lib/RT/Scrip.pm
+++ b/lib/RT/Scrip.pm
@@ -348,6 +348,33 @@ sub Stage {
     return undef;
 }
 
+=head2 Disabled
+
+Returns the current value of Disabled. 
+
+=cut
+
+sub Disabled {
+    my $self = shift;
+    my $record = RT::ObjectScrip->new( $self->CurrentUser );
+    $record->LoadByCols( Scrip => $self->id );
+    return $record->Disabled;
+}
+
+=head2 SetDisabled
+
+Takes a boolean.
+1 will cause this scrip to no longer be avaialble for objects.
+0 will re-enable this field.
+
+=cut
+
+sub SetDisabled {
+    my $self = shift;
+    return RT::ObjectScrip->new( $self->CurrentUser )
+        ->SetDisabledOnAll( Scrip => $self->id, Value => shift );
+}
+
 
 =head2 Apply { TicketObj => undef, TransactionObj => undef}
 
diff --git a/share/html/Admin/Elements/EditScrip b/share/html/Admin/Elements/EditScrip
index a6f07d3..bc3ce32 100755
--- a/share/html/Admin/Elements/EditScrip
+++ b/share/html/Admin/Elements/EditScrip
@@ -87,6 +87,31 @@
 &></td></tr>
 % }
 
+% if ( $id ne 'new' && $added_to_any ) {
+<tr><td class="label"><&|/l&>Added</&>:</td><td class="value">\
+% if ( $scrip->IsAdded(0) ) {
+<% loc('Global') %>
+% } else {
+% my $added_to = $scrip->AddedTo;
+% my $found = 0;
+% while ( my $queue = $added_to->Next ) {
+% $m->out(', ') if $found++;
+<% $queue->Name %>
+% last if $found == 10;
+% }
+% $m->out(', ...') if $found == 10;
+% }
+<td></tr>
+% }
+
+% if ( $id eq 'new' || $added_to_any  ) {
+<tr><td class="label"> </td><td>
+<input type="hidden" class="hidden" name="SetEnabled" value="1" />
+<input type="checkbox" class="checkbox" name="Scrip-<% $id %>-Enabled" value="1" <% $EnabledChecked |n%> />
+<label for="Scrip-<% $id %>-Enabled"><&|/l&>Enabled (Unchecking this box disables this scrip)</&></label>
+</td></tr>
+% }
+
 </table>
 </&>
 
@@ -147,10 +172,18 @@ if ( $id ) {
     $SubmitLabel = loc('Save Changes');
 }
 
+my $EnabledChecked = qq[checked="checked"];
+my $added_to_any = 0;
+
 unless ( $id ) {
     $id = 'new';
     $SubmitLabel = loc('Create');
 }
+else {
+    my $disabled = $scrip->Disabled;
+    $added_to_any = 1 if defined $disabled;
+    $EnabledChecked = '' if $disabled;
+}
 
 my $min_lines = 10;
 
@@ -185,6 +218,7 @@ if ( $id eq 'new' ) {
         CustomCommitCode       => $ARGS{"Scrip-new-CustomCommitCode"},
         CustomIsApplicableCode => $ARGS{"Scrip-new-CustomIsApplicableCode"},
         Stage                  => $ARGS{"Scrip-new-Stage"},
+        Disabled               => $ARGS{"Scrip-new-Enabled"}? 0 : 1,
     );
 }
 else {
@@ -192,8 +226,11 @@ else {
     return (undef, loc("Couldn't load scrip #[_1]", $id))
         unless $scrip->id;
 
+    $ARGS{"Scrip-$id-Disabled"} = $ARGS{"Scrip-$id-Enabled"}? 0 : 1
+        if $ARGS{"SetEnabled"};
+
     my @attribs = qw(ScripAction ScripCondition Template Stage
-        Description CustomPrepareCode CustomCommitCode CustomIsApplicableCode);
+        Description CustomPrepareCode CustomCommitCode CustomIsApplicableCode Disabled);
     my @results = UpdateRecordObject(
         AttributesRef   => \@attribs,
         AttributePrefix => 'Scrip-'.$scrip->Id,

commit 27331f82eb505a8f5b0d97aff25bd4b67b82342d
Author: Ruslan Zakirov <ruz at bestpractical.com>
Date:   Wed Dec 28 00:06:25 2011 +0400

    Stage in the UI only available during creation

diff --git a/t/ticket/scrips_batch.t b/t/ticket/scrips_batch.t
index 44d7f8e..a6d22b5 100644
--- a/t/ticket/scrips_batch.t
+++ b/t/ticket/scrips_batch.t
@@ -37,7 +37,12 @@ my $sid;
     is value_name($form, "Scrip-$sid-ScripCondition"), 'On Transaction', 'correct condition';
     is value_name($form, "Scrip-$sid-ScripAction"), 'User Defined', 'correct action';
     is value_name($form, "Scrip-$sid-Template"), 'Global template: Blank', 'correct template';
-    is value_name($form, "Scrip-$sid-Stage"), 'TransactionBatch', 'correct stage';
+
+    {
+        my $rec = RT::ObjectScrip->new( RT->SystemUser );
+        $rec->LoadByCols( Scrip => $sid, ObjectId => $queue->id );
+        is $rec->Stage, 'TransactionBatch', "correct stage";
+    }
 
     my $tmp_fn = File::Spec->catfile( RT::Test->temp_directory, 'transactions' );
     open my $tmp_fh, '+>', $tmp_fn or die $!;

commit 60b8fecb907fd8f217ffba3197df1e672fe0ec17
Author: Ruslan Zakirov <ruz at bestpractical.com>
Date:   Wed Dec 28 02:03:42 2011 +0400

    new default order of script is different
    
    fix tests by re-ordering them

diff --git a/t/approval/admincc.t b/t/approval/admincc.t
index b439296..c12db2a 100644
--- a/t/approval/admincc.t
+++ b/t/approval/admincc.t
@@ -84,7 +84,12 @@ mail_ok {
         Requestor => 'minion',
         Queue     => $q->Id,
     );
-} { from => qr/RT System/,
+} { from => qr/PO via RT/,
+    to => 'minion at company.com',
+    subject => qr/PO for stationary/,
+    body => qr/automatically generated in response/
+},
+{ from => qr/RT System/,
     bcc => qr/ceo.*coo|coo.*ceo/i,
     subject => qr/PO for stationary/i,
 },
@@ -92,12 +97,8 @@ mail_ok {
     to => 'cto at company.com',
     subject => qr/New Pending Approval: CTO Approval/,
     body => qr/pending your approval.*Your approval is requested.*Blah/s
-},
-{ from => qr/PO via RT/,
-    to => 'minion at company.com',
-    subject => qr/PO for stationary/,
-    body => qr/automatically generated in response/
-};
+}
+;
 
 ok ($tid,$tmsg);
 
diff --git a/t/approval/basic.t b/t/approval/basic.t
index 2d00eb5..b1a6ed1 100644
--- a/t/approval/basic.t
+++ b/t/approval/basic.t
@@ -86,14 +86,14 @@ mail_ok {
         $t->Create(Subject => "PO for stationary",
                    Owner => "root", Requestor => 'minion',
                    Queue => $q->Id);
-} { from => qr/RT System/,
-    to => 'cfo at company.com',
-    subject => qr/New Pending Approval: CFO Approval/,
-    body => qr/pending your approval.*Your approval is requested.*Blah/s
-},{ from => qr/PO via RT/,
+} { from => qr/PO via RT/,
     to => 'minion at company.com',
     subject => qr/PO for stationary/,
     body => qr/automatically generated in response/
+}, { from => qr/RT System/,
+    to => 'cfo at company.com',
+    subject => qr/New Pending Approval: CFO Approval/,
+    body => qr/pending your approval.*Your approval is requested.*Blah/s
 };
 
 ok ($tid,$tmsg);

-----------------------------------------------------------------------


More information about the Rt-commit mailing list