[rt-users] Calling method Headers in Custom Condition

john habermann john.habermann at wilderness.org.au
Thu Apr 27 03:05:03 EDT 2006


Hi

I have a queue called database which had been setup to recieve emails
from a form. I had set up a simple approval process by following the
wiki so I created an approv-database queue and then have a template in
the database queue that creates a Ticket in the approv-database queue
when a ticket is created in the database queue.

The usage of the database queue has expanded beyond just accepting
emails from the form and other tickets that are created in it don't
need to be approved so I have been trying to change the database queue
so that only tickets created by the form emails will trigger an
approval.

To do this I have the form inserting a header "RT-Formname" and I then
changed the "Request Approval" scip in the database queue so it used a
custom condition rather than the default "On create" condition. This
is what I have in my Custom Condition:
--------------------------------
my $header = $self->TransactionObj->Attachments->First->Headers();
$header =~ s/\n\s+/ /g;
my $formname = '';
if ($header =~ /^Formname: (.*?)$/m) {
        $formname = $1;
        $RT::Logger->debug("the headers are $formname");
}
else {
        $RT::Logger->debug("didn't match");
}
$RT::Logger->debug("the formname is $formname");
return undef unless ($formname eq "Database");
return 1;
-------------------------------

This appears to work fine as if I create a ticket through the web
interface in RT then the Request Approval scrip is not called and a
ticket is created that doesn't trigger the approval process. When I
send in a email from the form the approval process is triggered as
before so a ticket is created that is pending approval but even though
it appears to work fine and the tickets are created I am getting this
in the rt.log file:

------------------------------
[Thu Apr 27 06:24:25 2006] [error]: Scrip 16 IsApplicable failed:
Can't call method "Headers" on an undefined value at (eval 602) line
1.

Stack:
  [(eval 602):1]
  [/usr/share/request-tracker3.4/lib/RT/ScripCondition_Overlay.pm:219]
  [/usr/share/request-tracker3.4/lib/RT/Scrip_Overlay.pm:438]
  [/usr/share/request-tracker3.4/lib/RT/Scrips_Overlay.pm:228]
  [/usr/share/request-tracker3.4/lib/RT/Transaction_Overlay.pm:160]
  [/usr/share/request-tracker3.4/lib/RT/Record.pm:1373]
  [/usr/share/request-tracker3.4/lib/RT/Ticket_Overlay.pm:3439]
  [/usr/share/request-tracker3.4/lib/RT/Ticket_Overlay.pm:3176]
  [(eval 579):14]
  [/usr/share/request-tracker3.4/lib/RT/ScripAction_Overlay.pm:220]
  [/usr/share/request-tracker3.4/lib/RT/Scrip_Overlay.pm:477]
  [/usr/share/request-tracker3.4/lib/RT/Scrips_Overlay.pm:235]
  [/usr/share/request-tracker3.4/lib/RT/Transaction_Overlay.pm:160]
  [/usr/share/request-tracker3.4/lib/RT/Record.pm:1373]
  [/usr/share/request-tracker3.4/lib/RT/Ticket_Overlay.pm:3439]
  [/usr/share/request-tracker3.4/lib/RT/Ticket_Overlay.pm:3176]
  [/usr/share/request-tracker3.4/html/Approvals/index.html:80]
  [/usr/share/request-tracker3.4/html/autohandler:215]
 (/usr/share/request-tracker3.4/lib/RT/Condition/UserDefined.pm:67)
[Thu Apr 27 06:24:25 2006] [debug]: About to commit scrips for
transaction #7809
(/usr/share/request-tracker3.4/lib/RT/Transaction_Overlay.pm:167)
-----------------------------------
I also appear to be getting this notice when other tickets are being
created in other queues as I just noticed that it appeared in the log
when some created a ticket in the support queue.

I am thinking that it is something to do with IsApplicable but not
quite sure that is supposed to apply given that the code is being
executed through the Userdefinied.pm condition. If anyone can shed any
 light or point me to some more info on this subject I would
appreciate it, have looked on the Wiki and also in the RT Essentials
book but couldn't find much that helped me figure out why this error
was happening although it helped me figure out how to to get this far.

cheers
John
--
John Habermann
The Wilderness Society
www.wilderness.org.au



More information about the rt-users mailing list