Default value's on creation

Hi,

I have a simple scrip that sets some default values during the creation of a
ticket.
The problem witht his scrip is that it’s a little rough, it sets the values
even when somoen manually creates a ticket and fills in the fields (they get
overwritten).

Because of that I want the scrip to first check if the field isn’t set
already, with that I’m kinda having a problem, checking if the field is NULL
doesn’t seem to work…

What’s the best way for checking if a Custom Field (in this case) isn’t set?

I’ve tried these options but they don’t seem to work:

Check if the field is empty:

if($self->TicketObj->FirstCustomFieldValue(Field => ‘Type’) = ‘NULL’) { do
something };

Since this field could contain the option Problem this if statement does
something when the ticket is set to Problem (for testing, but this doesn’t
seem to work either):

if($self->TicketObj->FirstCustomFieldValue(Field => ‘Type’) =~ /^P/) { do
something );

And a bunch of varaiaties where I\ve either bumped against issues of syntax
not being recognised, etc. (things like neq, !=, NULL without quotes, etc.).

Does anyone have an example on how to do something similar? (check if a CF
is empty, if so then fill it with a value)

– Bart

Hi Bart

we use

if( ! $ticket->CustomFieldValues( ‘Software Ready’ )->First )
{
# set the custom field
my $cf = RT::CustomField->new( $RT::SystemUser );
$cf->LoadByName( Name => ‘Software Ready’ );
my ( $status, $msg ) = $ticket->AddCustomFieldValue( Field => $cf,
Value => ‘Not ready’ );

 if( $status )
   {
   $RT::Logger->info( $blurb . " : 'Software Ready' set to 'Not 

ready’" );
}
else
{
$RT::Logger->warning( $blurb . " : Couldn’t set ‘Software Ready’
to ‘Not ready’" . $msg );
}
}

GerardOn 2011-10-11 15:44, Bart wrote:

Hi,

I have a simple scrip that sets some default values during the
creation of a ticket.
The problem witht his scrip is that it’s a little rough, it sets the
values even when somoen manually creates a ticket and fills in the
fields (they get overwritten).

Because of that I want the scrip to first check if the field isn’t set
already, with that I’m kinda having a problem, checking if the field
is NULL doesn’t seem to work…

What’s the best way for checking if a Custom Field (in this case)
isn’t set?

I’ve tried these options but they don’t seem to work:

Check if the field is empty:

if($self->TicketObj->FirstCustomFieldValue(Field => ‘Type’) = ‘NULL’)
{ do something };

Since this field could contain the option Problem this if statement
does something when the ticket is set to Problem (for testing, but
this doesn’t seem to work either):

if($self->TicketObj->FirstCustomFieldValue(Field => ‘Type’) =~ /^P/) {
do something );

And a bunch of varaiaties where I\ve either bumped against issues of
syntax not being recognised, etc. (things like neq, !=, NULL without
quotes, etc.).

Does anyone have an example on how to do something similar? (check if
a CF is empty, if so then fill it with a value)

– Bart

Thanks to the below scrip I’ve been able to get this work :slight_smile:

Though, the syntax is a little different:

if( ! $self->TicketObj-> FirstCustomFieldValue( ‘Type’ ) ) {
$self->TicketObj->AddCustomFieldValue(Field => ‘Type’, Value => ‘Incident’
);
}

return 1;

This sets the Type to Incident when the CF is empty, but won’t set the CF if
it’s already filled.

Thanks for the tip.

– Bart2011/10/11 Gerard FENELON gerard@eve-team.com

Hi Bart

we use

if( ! $ticket->CustomFieldValues( ‘Software Ready’ )->First )
{
# set the custom field
my $cf = RT::CustomField->new( $RT::SystemUser );
$cf->LoadByName( Name => ‘Software Ready’ );
my ( $status, $msg ) = $ticket->AddCustomFieldValue( Field => $cf,
Value => ‘Not ready’ );

if( $status )
  {
  $RT::Logger->info( $blurb . " : 'Software Ready' set to 'Not ready'"

);
}
else
{
$RT::Logger->warning( $blurb . " : Couldn’t set ‘Software Ready’ to
‘Not ready’" . $msg );
}
}

Gerard

On 2011-10-11 15:44, Bart wrote:

Hi,

I have a simple scrip that sets some default values during the creation of
a ticket.
The problem witht his scrip is that it’s a little rough, it sets the values
even when somoen manually creates a ticket and fills in the fields (they get
overwritten).

Because of that I want the scrip to first check if the field isn’t set
already, with that I’m kinda having a problem, checking if the field is NULL
doesn’t seem to work…

What’s the best way for checking if a Custom Field (in this case) isn’t
set?

I’ve tried these options but they don’t seem to work:

Check if the field is empty:

if($self->TicketObj->FirstCustomFieldValue(Field => ‘Type’) = ‘NULL’) { do
something };

Since this field could contain the option Problem this if statement does
something when the ticket is set to Problem (for testing, but this doesn’t
seem to work either):

if($self->TicketObj->FirstCustomFieldValue(Field => ‘Type’) =~ /^P/) { do
something );

And a bunch of varaiaties where I\ve either bumped against issues of syntax
not being recognised, etc. (things like neq, !=, NULL without quotes, etc.).

Does anyone have an example on how to do something similar? (check if a CF
is empty, if so then fill it with a value)

– Bart


RT Training Sessions (http://bestpractical.com/services/training.html)

  • San Francisco, CA, USA — October 18 & 19, 2011
  • Washington DC, USA — October 31 & November 1, 2011
  • Barcelona, Spain — November 28 & 29, 2011