[freeside-commits] freeside/FS/FS/Cron rt_tasks.pm,1.1,1.2

Mark Wells mark at wavetail.420.am
Tue Jan 25 02:13:18 PST 2011


Update of /home/cvs/cvsroot/freeside/FS/FS/Cron
In directory wavetail.420.am:/tmp/cvs-serv14078/FS/FS/Cron

Modified Files:
	rt_tasks.pm 
Log Message:
ticket escalation, part 2, RT#8254

Index: rt_tasks.pm
===================================================================
RCS file: /home/cvs/cvsroot/freeside/FS/FS/Cron/rt_tasks.pm,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -w -d -r1.1 -r1.2
--- rt_tasks.pm	1 Jan 2011 06:39:17 -0000	1.1
+++ rt_tasks.pm	25 Jan 2011 10:13:15 -0000	1.2
@@ -42,6 +42,7 @@
   foreach (qw(
     Search::ActiveTicketsInQueue 
     Action::EscalatePriority
+    Action::EscalateQueue
     )) {
     eval "use RT::$_";
     die $@ if $@;
@@ -51,7 +52,7 @@
   # Mechanics:
   # We're using EscalatePriority, so search in all queues that have a 
   # priority range defined. Select all active tickets in those queues and
-  # LinearEscalate them.
+  # EscalatePriority, then EscalateQueue them.
 
   # to make some actions work without complaining
   %void = map { $_ => "RT::$_"->new($CurrentUser) }
@@ -61,6 +62,8 @@
   # we might want to do, but escalation is the only one we do now.
   my $queues = RT::Queues->new($CurrentUser);
   $queues->UnLimit;
+  my @actions = ();
+  my @active_tickets = ();
   while (my $queue = $queues->Next) {
     if ( $queue->InitialPriority == $queue->FinalPriority ) {
       warn "Queue '".$queue->Name."' (skipped)\n" if $DEBUG;
@@ -76,8 +79,24 @@
     $search->Prepare;
     while (my $ticket = $tickets->Next) {
       warn 'Ticket #'.$ticket->Id()."\n" if $DEBUG;
-      # We don't need transaction stuff from rt-crontool here
-      action($ticket, 'EscalatePriority', "CurrentTime:$time");
+      my @a = (
+        action($ticket, 'EscalatePriority', "CurrentTime:$time"),
+        action($ticket, 'EscalateQueue')
+      );
+      next if !@a;
+      push @actions, @a;
+      push @active_tickets, $ticket; # avoid RT's overzealous garbage collector
+    }
+  }
+  foreach (grep {$_} @actions) {
+    my ($val, $msg) = $_->Commit;
+    if ( $DEBUG ) {
+      if ($val) {
+        warn "Action committed: ".ref($_)." #".$_->TicketObj->Id."\n";
+      }
+      else {
+        warn "Action returned $msg: #".$_->TicketObj->Id."\n";
+      }
     }
   }
   return;
@@ -98,11 +117,13 @@
     ScripAction   => $void{'ScripAction'},
     CurrentUser   => $CurrentUser,
   );
-  return unless $action_obj->Prepare;
+  if ( $action_obj->Prepare ) {
   warn "Action prepared: $action\n" if $DEBUG;
-  $action_obj->Commit;
-  warn "Action committed: $action\n" if $DEBUG;
+    return $action_obj;
+  }
+  else {
   return;
 }
+}
 
 1;



More information about the freeside-commits mailing list