[rt-users] Wierd result

Gene LeDuc gleduc at mail.sdsu.edu
Thu May 10 16:38:07 EDT 2007


Kenn, here's the condition code from one of my scrips that triggers when CF 
'DMCA State' changes to 'TNS_Restore''.  This uses TransactionCreate, not 
Batch.

{ ### Testing CF triggers
   my $Transaction = $self->TransactionObj;
   my $Ticket = $self->TicketObj;
   my $val = $Transaction->Type eq "CustomField"
          && $Transaction->Field == get_custom_id('DMCA State')
          && $Transaction->NewValue eq 'TNS Restore';
   return $val;

   ### Returns custom field ID number from Name
   ### usage: $id = get_custom_id($name);
   sub get_custom_id {
     my $target_name = $_[0];
     my $cf = RT::CustomField->new($RT::SystemUser);
     $cf->LoadByNameAndQueue(Name=>$target_name, Queue=>$Ticket->QueueObj);
     return $cf->id if $cf;
     return undef;
   }
}

Then my Prep code would be something like:
### Sets status to 'rejected'
my $Ticket = $self->TicketObj;
$Ticket->SetStatus('rejected');

Hope this helps you,
Gene

At 12:45 PM 5/10/2007, Kenneth Crocker wrote:
>Gene,
>
>         You're hints were helpful, thank you. Now I am discovering that 
> what I really want to do is automatically change the ticket status based 
> on a particular CF being change to a certain value. I'm no Perl guru. I 
> have read alot about TransactionBatch, so I know I have to enable that, 
> but I'm not sure how to approach evaluating a single CF or even how to 
> get it to be evaluated before sending a notification and changing the 
> status. Any help here would be greatly appreciated. Thanks in advance.
>
>Kenn
>LBNL
>
>Gene LeDuc wrote:
>>Hi Kenn,
>>In addition to what Steve pointed out, I think you have an error in your 
>>condition code.  The second term of
>>>                 $self->Ticket->FirstCustomFieldValue('Approval-Status')
>>should probably be TicketObj instead of Ticket.
>>Something I started doing with my scrips to avoid making Ticket/TicketObj 
>>mistakes when jumping between scrips and templates is I always start my 
>>scrips off with the following 2 lines:
>>   my $Ticket = $self->TicketObj;
>>   my $Transaction = $self->TransactionObj;
>>Now I can just copy code snippets between templates and scrips without 
>>having to change any of the Transaction or Ticket references (for 
>>instance, ticket status is $Ticket->Status whether it's in a scrip or 
>>template).  This is especially handy when I have subroutines that I use 
>>in both scrips and templates.  Plus I never get the $self->Ticket or 
>>$self->$TicketObj errors anymore.
>>Gene
>>At 10:14 PM 5/7/2007, Kenneth Crocker wrote:
>>>To all,
>>>
>>>         I  have created the following scrip/conditions:
>>>
>>>         Condition: User Defined
>>>         Action: Notify AdminCc's, Cc's, Requestors
>>>         Template: Reviewed (new template created as well)
>>>
>>>         Custom Condition:
>>>
>>>         # condition execution on ticket status and Custom Field value
>>>
>>>         return ($self->TicketObj->Status eq "new" &&
>>>                 $self->Ticket->FirstCustomFieldValue('Approval-Status')
>>>                 eq "Reviewing Request");
>>>         return 0;
>>>
>>>         Custom Action Preparation Code: none
>>>
>>>         Custom Action Cleanup code:
>>>
>>>         # set new status for work-status
>>>
>>>         my $cf_obj;
>>>         my $cf_name;
>>>         my $cf_value;
>>>
>>>         $cf_obj = RT::CustomField->new($RT::SystemUser);
>>>         $cf_name = "Work-Status";
>>>         $cf_value = "Pending Decision";
>>>         $RT::Logger->debug( $self . " cf_value = ". $cf_value . "\n" );
>>>         $cf_obj->LoadByName( Name => $cf_name );
>>>         $RT::Logger->debug( "Loaded \$cf_obj->Name = ". 
>>> $cf_obj->Name()                 ."\n" );
>>>         $cf_obj->AddValueForObject( 
>>> Object=>$self->TicketObj,           Content=>$cf_value, );
>>>
>>>         # set new status for ticket
>>>
>>>         $RT::Logger->debug( $self->TicketObj->SetStatus("pending rv");
>>>
>>>
>>>         I have also added the new ticket status value in my RT 
>>> Configuration.
>>>
>>>         My problem is 1; I get a template sent out that I did not ask 
>>> for (I get new owner like for an owner change).
>>>         2; the ticket status doesn't get changed.
>>>
>>>         Any ideas?  Thanks.
>>>
>>>Kenn
>>>LBNL
>>>_______________________________________________
>>>http://lists.bestpractical.com/cgi-bin/mailman/listinfo/rt-users
>>>
>>>Community help: http://wiki.bestpractical.com
>>>Commercial support: sales at bestpractical.com
>>>
>>>
>>>Discover RT's hidden secrets with RT Essentials from O'Reilly Media. Buy 
>>>a copy at http://rtbook.bestpractical.com
>
>
>--
>Gene LeDuc, GSEC
>Security Analyst
>San Diego State University 




More information about the rt-users mailing list