[rt-users] Adding custom field values from Perl script.
Jacob Helwig
Jacob at buschs.com
Mon Dec 11 11:32:24 EST 2006
Found the error. I had an unnessicary set of curly braces around the
params for AddCustomFieldValue.
Changed:
$ticket->AddCustomFieldValue({ Field => 7, Value => $surveyid[0] })
To:
$ticket->AddCustomFieldValue( Field => 7, Value => $surveyid[0] )
Now it's all working.
> -----Original Message-----
> From: rt-users-bounces at lists.bestpractical.com [mailto:rt-users-
> bounces at lists.bestpractical.com] On Behalf Of Jacob Helwig
> Sent: Saturday, December 09, 2006 09:38
> To: rt-users at lists.bestpractical.com
> Subject: RE: [rt-users] Adding custom field values from Perl script.
>
> Certainly:
>
> #! /usr/bin/perl
>
> use strict;
> use DBI;
> use DBD::Pg qw(:pg_types);
>
> my $dbname = "feedback";
> my $dbuser = "rt-feedback";
> my $dbpass = "********************";
>
> # Location of RT3's libs
> use lib ("/usr/share/request-tracker3.6/lib/",
> "/usr/local/share/request-tracker3.6/lib/");
> # Pull in the RT stuff
> package RT;
> use RT::Interface::CLI qw(CleanEnv GetCurrentUser GetMessageContent
> loc);
>
> # Clean out the environment
> CleanEnv();
>
> # Load the RT configuration
> RT::LoadConfig();
>
> # Initialise RT
> RT::Init();
>
> use RT::Queue;
> use RT::Tickets;
> use RT::Group;
> use RT::Record;
>
> use Data::Dumper;
>
> my $queue = new RT::Queue($RT::SystemUser);
> $queue->Load("Help Desk");
>
> my $tickets = new RT::Tickets($RT::SystemUser);
>
> $tickets->FromSQL("id = 1");
>
> my $user = RT::User->new($RT::SystemUser);
>
> my $dbh = DBI->connect("dbi:Pg:dbname=$dbname", $dbuser, $dbpass,
> {AutoCommit => 0, Username => $dbuser, pg_server_prepare => 1});
> my $sth = $dbh->prepare("SELECT new_survey(?,?,?) AS survey_id");
> my $sth_auth = $dbh->prepare("SELECT authcode FROM survey WHERE id =
> ?");
>
> while (my $ticket = $tickets->Next) {
> my $creator = RT::User->new($RT::SystemUser);
> my $owner = RT::User->new($RT::SystemUser);
> $creator->Load($ticket->Creator());
> $owner->Load($ticket->Owner());
>
> print "Ticket #" . $ticket->id() . ": " . $ticket->Subject() .
> "\n";
> print "\tCreated by " . $creator->RealName() . " on " .
> $ticket->Created() . " owner " . $owner->RealName() . "\n";
>
> print "\tCustom field \"Store Number\" value: ";
> my $values = $ticket->CustomFieldValues("Store Number");
> while (my $value = $values->Next) {
> print $value->Content . "\n";
> }
>
> print "\tCustom field \"Feedback\" values:";
> my $values = $ticket->CustomFieldValues("Feedback");
> my $values = $ticket->CustomFieldValues(7);
> while (my $value = $values->Next) {
> print " " . $value->Content;
> }
> print "\n";
>
> my ($requestors) = $ticket->Requestors;
> ($requestors) = $requestors->MembersObj;
> print "\tFound " . $requestors->Count . " requestors:\n";
> while (my $requestor = $requestors->Next()) {
> $dbh->pg_savepoint("requestor_entry");
> my $realname;
> my ($address) =
> $requestor->MemberObj->Object->EmailAddress;
> if ($address) {
> ($realname) =
> $requestor->MemberObj->Object->RealName;
> my ($a) = "\"$realname\" <$address>";
> print "\t\t" . $a . "\n";
> }
> $sth->execute($realname, $address, $ticket->id()) or
> print "Error executing SQL: " . $sth->errstr . "\n";
> my @surveyid = $sth->fetchrow_array();
>
> print "\tAdding feedback form #" . $surveyid[0] . " for
> requestor: " . $realname . "\n";
>
> $sth_auth->execute($surveyid[0]) or print "Error
> executing SQL: " . $sth_auth->errstr . "\n";
> my @authcode = $sth_auth->fetchrow_array();
> print "\t\tAuth code: " . $authcode[0] . "\n";
>
> if ($ticket->AddCustomFieldValue({ Field => 7, Value =>
> "" . $surveyid[0] . "" })) {
> print "\tOK!\n";
> } else {
> print "\tFAILED!\n";
> $dbh->pg_rollback_to("requestor_entry");
> }
> $dbh->commit;
> $dbh->pg_release("requestor_entry");
> }
> print "\tCustom field \"Feedback\" values:";
> my $values = $ticket->CustomFieldValues("Feedback");
> my $values = $ticket->CustomFieldValues(7);
> while (my $value = $values->Next) {
> print " " . $value->Content;
> }
> print "\n";
> }
>
> $dbh->commit;
> #$dbh->rollback;
>
> $dbh->disconnect;
>
> # Disconnect before we finish off
> $RT::Handle->Disconnect();
>
> exit 0;
>
> > -----Original Message-----
> > From: Stephen Turner [mailto:sturner at MIT.EDU]
> > Sent: Friday, December 08, 2006 10:26
> > To: Jacob Helwig; rt-users at lists.bestpractical.com
> > Subject: RE: [rt-users] Adding custom field values from Perl script.
> >
> >
> > I'm trying to add some values to a few tickets after I've gotten
> > the
> > ticket object for them, without much luck. I'm able to see any
> > existing
> > values, no problem, but running $ticket->AddCustomFieldValue({ Field
> =>
> > $field_id, Value => $field_value }) doesn't appear to be doing
> anything
> > other than returning 1. Checking the custom field values before and
> > after
> > running AddCustomFieldValue shows no changes, as does showing the
> > ticket
> > through the web interface. I know I'm using the right field id,
> since
> > it's
> > the same one I'm using to check what the current values are, and
> > field_value
> > shouldn't be a problem, since it's just an int. Am I going about
> this
> > entirely the wrong way? Something obvious that I'm just not seeing,
> > after
> > having stared at this for so long?
> >
> > ---------------------------------------------
> >
> > Jacob, could you post the relevant section of your script?
> >
> > Steve
> >
> > ----------------------------------------
> > Stephen Turner
> > Senior Programmer/Analyst - Client Support Services
> > MIT Information Services and Technology (IS&T)
> >
> >
>
> _______________________________________________
> 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
More information about the rt-users
mailing list