AutoChangeQueue: Difference between revisions

From Request Tracker Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
Line 12: Line 12:
<syntaxhighlight lang="perl" line="1" >
<syntaxhighlight lang="perl" line="1" >


  my $group = 'admin';
my $group = 'admin';
  my $newqueue = 'admin';
my $newqueue = 'admin';
 
  # si pas dans une action Take alors on sort
# si pas dans une action Take alors on sort
  return 1
return 1
    unless $self->TransactionObj->Type eq 'Take';
unless $self->TransactionObj->Type eq 'Take';
 
  my $PrincipalObj = RT::Principal->new( $self->TransactionObj->CreatorObj );
my $PrincipalObj = RT::Principal->new( $self->TransactionObj->CreatorObj );
  $PrincipalObj->Load( $self->TransactionObj->CreatorObj->Id );
$PrincipalObj->Load( $self->TransactionObj->CreatorObj->Id );
 
  my $groupobj = RT::Group->new($self->TransactionObj->CreatorObj );
my $groupobj = RT::Group->new($self->TransactionObj->CreatorObj );
  $groupobj->LoadUserDefinedGroup($group);
$groupobj->LoadUserDefinedGroup($group);
  my $HasMember = $groupobj->HasMemberRecursively( $PrincipalObj );
my $HasMember = $groupobj->HasMemberRecursively( $PrincipalObj );
  if ($HasMember) {
if ($HasMember) {
      $RT::Logger->info("Ticket took by an admin : new ticket in admin queue");
  $RT::Logger->info("Ticket took by an admin : new ticket in admin queue");
      my ($status, $msg) = $self->TicketObj->SetQueue($newqueue);
  my ($status, $msg) = $self->TicketObj->SetQueue($newqueue);
      unless ($status) {
  unless ($status) {
          $RT::Logger->warning("unable to set new queue");
      $RT::Logger->warning("unable to set new queue");
          return undef;
      return undef;
      }
   }
   }
}
  return 1;
 
return 1;
 
</syntaxhighlight>
</syntaxhighlight>


  Template: Global template: Blank
  Template: Global template: Blank

Revision as of 07:20, 1 August 2016

Overview

I've got two queues and two groups, one for admin and one for production. If an admin group member takes a ticket in the production queue, I want the ticket to go automatically into the admin queue. Just create this scrip in the production queue:

Description: AutoChangeQueue
Condition: On Owner Change
Custom condition:
Action: User Defined
Custom action preparation code: return 1;
Custom action cleanup code:
my $group = 'admin';
my $newqueue = 'admin';

# si pas dans une action Take alors on sort
return 1
 unless $self->TransactionObj->Type eq 'Take';

my $PrincipalObj = RT::Principal->new( $self->TransactionObj->CreatorObj );
$PrincipalObj->Load( $self->TransactionObj->CreatorObj->Id );

my $groupobj = RT::Group->new($self->TransactionObj->CreatorObj );
$groupobj->LoadUserDefinedGroup($group);
my $HasMember = $groupobj->HasMemberRecursively( $PrincipalObj );
if ($HasMember) {
  $RT::Logger->info("Ticket took by an admin : new ticket in admin queue");
   my ($status, $msg) = $self->TicketObj->SetQueue($newqueue);
   unless ($status) {
      $RT::Logger->warning("unable to set new queue");
      return undef;
   }
}

return 1;
Template: Global template: Blank