Default value

I have one DV that I set to a default value whenever a ticket is created. I’ve
tried to port this over to another queue with a different CF/value but it
doesn’t seem to work. Here’s the code:

my $CFName = ‘Environment’;
my $DefaultValue = ‘default_value’;
my $RecTransaction = 1;
my $QueueObj = $self->TicketObj->QueueObj;
my $CFObj = RT::CustomField->new( $QueueObj->CurrentUser );

$CFObj->LoadByNameAndQueue( Name => $CFName, Queue => $QueueObj->id );

unless( $CFObj->id ) {
$CFObj->LoadByNameAndQueue( Name => $CFName, Queue => 7 );
unless( $CFObj->id ) {
$RT::Logger->warning(“custom field ‘$CFName’ isn’t global or defined for
queue '”. $QueueObj->Name .“'”);
return undef;
}
}

unless( $self->TicketObj->FirstCustomFieldValue( $CFObj->id ) ) {
my( $st, $msg ) = $self->TicketObj->AddCustomFieldValue(
Field => $CFObj->id,
Value => $DefaultValue,
RecordTransaction => $RecTransaction );
unless( $st ) {
$RT::Logger->warning( “Couldn’t set $DefaultValue as value for CF $CFName:”.
$msg );
return undef;
}
}
return 1;

The only thing I’ve changed between the two queues is the name of the CF, the
value of the CF and the queue number as it is stored in the DB. Anyone have any
thoughts as to why this isn’t working?

Keep up with me and what I’m up to: http://theillien.blogspot.com

Figured it out. Seems that despite a CF being created as a Global, it has to be
explicitly applied to a queue…strange.

Keep up with me and what I’m up to: http://theillien.blogspot.com

Mathew Snyder wrote:

Mathew,

That does seem strange. I have only about 25 custom fields and only one 

is global. It is not applied to ANY queue and the groups rights are set
so everyone can see it but only privileged can modify it. All others are
applied on a queue-by-queue basis with the group rights set as needed
for a queue. I don’t understand why you needed to apply this global CF
to ANY queue.

Kenn
LBNLOn 9/24/2007 8:26 AM, Mathew Snyder wrote:

Figured it out. Seems that despite a CF being created as a Global, it has to be
explicitly applied to a queue…strange.

Keep up with me and what I’m up to: http://theillien.blogspot.com

Mathew Snyder wrote:

I have one DV that I set to a default value whenever a ticket is created. I’ve
tried to port this over to another queue with a different CF/value but it
doesn’t seem to work. Here’s the code:

my $CFName = ‘Environment’;
my $DefaultValue = ‘default_value’;
my $RecTransaction = 1;
my $QueueObj = $self->TicketObj->QueueObj;
my $CFObj = RT::CustomField->new( $QueueObj->CurrentUser );

$CFObj->LoadByNameAndQueue( Name => $CFName, Queue => $QueueObj->id );

unless( $CFObj->id ) {
$CFObj->LoadByNameAndQueue( Name => $CFName, Queue => 7 );
unless( $CFObj->id ) {
$RT::Logger->warning(“custom field ‘$CFName’ isn’t global or defined for
queue '”. $QueueObj->Name .“'”);
return undef;
}
}

unless( $self->TicketObj->FirstCustomFieldValue( $CFObj->id ) ) {
my( $st, $msg ) = $self->TicketObj->AddCustomFieldValue(
Field => $CFObj->id,
Value => $DefaultValue,
RecordTransaction => $RecTransaction );
unless( $st ) {
$RT::Logger->warning( “Couldn’t set $DefaultValue as value for CF $CFName:”.
$msg );
return undef;
}
}
return 1;

The only thing I’ve changed between the two queues is the name of the CF, the
value of the CF and the queue number as it is stored in the DB. Anyone have any
thoughts as to why this isn’t working?


The rt-users Archives

Community help: http://wiki.bestpractical.com
Commercial support: sales@bestpractical.com

Discover RT’s hidden secrets with RT Essentials from O’Reilly Media.
Buy a copy at http://rtbook.bestpractical.com

What is even stranger is that when looking at the custom fields for each queue,
this particular CF shows up as global. However, I wasn’t able to modify it via
my scrip until I did explicitly apply it.

Keep up with me and what I’m up to: http://theillien.blogspot.com

Kenneth Crocker wrote:

Do you have global modify rights to custom fields or are they set on a
queue by queue basis?

Mathew Snyder wrote:

Mathew,

I think I know why. In your scrip code, you define your $CFObj using 

current user See line below).

my $CFObj = RT::CustomField->new( $QueueObj->CurrentUser );

I update our global field for ALL E_mail creates with the ticket 

subject line (this is so I ALWAYS get some sort of description in my
Global CF "Description. I use the following code:

set description

my $cf_obj;
my $cf_name;
my $cf_value;

$cf_obj = RT::CustomField->new($RT::SystemUser);
$cf_name = “Description”;
$cf_value = $self->TicketObj->Subject();
$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, );

In my code, I don't use "CurrentUser", I use "$RT::SystemUser". I also 

do not define it as a QueueObj. That might make a difference. Try it and
let me know. Hope this helps.

Kenn
LBNLOn 9/24/2007 9:40 AM, Mathew Snyder wrote:

What is even stranger is that when looking at the custom fields for each queue,
this particular CF shows up as global. However, I wasn’t able to modify it via
my scrip until I did explicitly apply it.

Keep up with me and what I’m up to: http://theillien.blogspot.com

Kenneth Crocker wrote:

Mathew,

That does seem strange. I have only about 25 custom fields and only

one is global. It is not applied to ANY queue and the groups rights are
set so everyone can see it but only privileged can modify it. All others
are applied on a queue-by-queue basis with the group rights set as
needed for a queue. I don’t understand why you needed to apply this
global CF to ANY queue.

Kenn
LBNL

On 9/24/2007 8:26 AM, Mathew Snyder wrote:

Figured it out. Seems that despite a CF being created as a Global, it
has to be
explicitly applied to a queue…strange.

Keep up with me and what I’m up to: http://theillien.blogspot.com

Mathew Snyder wrote:

I have one DV that I set to a default value whenever a ticket is
created. I’ve
tried to port this over to another queue with a different CF/value
but it
doesn’t seem to work. Here’s the code:

my $CFName = ‘Environment’;
my $DefaultValue = ‘default_value’;
my $RecTransaction = 1;
my $QueueObj = $self->TicketObj->QueueObj;
my $CFObj = RT::CustomField->new( $QueueObj->CurrentUser );

$CFObj->LoadByNameAndQueue( Name => $CFName, Queue => $QueueObj->id );

unless( $CFObj->id ) {
$CFObj->LoadByNameAndQueue( Name => $CFName, Queue => 7 );
unless( $CFObj->id ) {
$RT::Logger->warning(“custom field ‘$CFName’ isn’t global or
defined for
queue '”. $QueueObj->Name .“'”);
return undef;
}
}

unless( $self->TicketObj->FirstCustomFieldValue( $CFObj->id ) ) {
my( $st, $msg ) = $self->TicketObj->AddCustomFieldValue(
Field => $CFObj->id,
Value => $DefaultValue,
RecordTransaction => $RecTransaction );
unless( $st ) {
$RT::Logger->warning( “Couldn’t set $DefaultValue as value for CF
$CFName:”.
$msg );
return undef;
}
}
return 1;

The only thing I’ve changed between the two queues is the name of the
CF, the
value of the CF and the queue number as it is stored in the DB.
Anyone have any
thoughts as to why this isn’t working?


The rt-users Archives

Community help: http://wiki.bestpractical.com
Commercial support: sales@bestpractical.com

Discover RT’s hidden secrets with RT Essentials from O’Reilly Media.
Buy a copy at http://rtbook.bestpractical.com

Mathew,

I think I know why. In your scrip code, you define your "$CFObj" using 

“CurrentUser” and “$QueueObj” (See line below).

my $CFObj = RT::CustomField->new( $QueueObj->CurrentUser );

I update our global field for ALL E_mail creates (in a global scrip) 

with the ticket subject line (this is so I ALWAYS get some sort of
description in my Global CF “Description”). I use the following code:

set description

my $cf_obj;
my $cf_name;
my $cf_value;

$cf_obj = RT::CustomField->new($RT::SystemUser);
$cf_name = “Description”;
$cf_value = $self->TicketObj->Subject();
$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, );

In my code, I don't use "CurrentUser", I use "$RT::SystemUser". I also 

do not define it as a QueueObj. That might make a difference. Try it and
let me know. Hope this helps.

Kenn
LBNLOn 9/24/2007 9:40 AM, Mathew Snyder wrote:

What is even stranger is that when looking at the custom fields for each queue,
this particular CF shows up as global. However, I wasn’t able to modify it via
my scrip until I did explicitly apply it.

Keep up with me and what I’m up to: http://theillien.blogspot.com

Kenneth Crocker wrote:

Mathew,

That does seem strange. I have only about 25 custom fields and only

one is global. It is not applied to ANY queue and the groups rights are
set so everyone can see it but only privileged can modify it. All others
are applied on a queue-by-queue basis with the group rights set as
needed for a queue. I don’t understand why you needed to apply this
global CF to ANY queue.

Kenn
LBNL

On 9/24/2007 8:26 AM, Mathew Snyder wrote:

Figured it out. Seems that despite a CF being created as a Global, it
has to be
explicitly applied to a queue…strange.

Keep up with me and what I’m up to: http://theillien.blogspot.com

Mathew Snyder wrote:

I have one DV that I set to a default value whenever a ticket is
created. I’ve
tried to port this over to another queue with a different CF/value
but it
doesn’t seem to work. Here’s the code:

my $CFName = ‘Environment’;
my $DefaultValue = ‘default_value’;
my $RecTransaction = 1;
my $QueueObj = $self->TicketObj->QueueObj;
my $CFObj = RT::CustomField->new( $QueueObj->CurrentUser );

$CFObj->LoadByNameAndQueue( Name => $CFName, Queue => $QueueObj->id );

unless( $CFObj->id ) {
$CFObj->LoadByNameAndQueue( Name => $CFName, Queue => 7 );
unless( $CFObj->id ) {
$RT::Logger->warning(“custom field ‘$CFName’ isn’t global or
defined for
queue '”. $QueueObj->Name .“'”);
return undef;
}
}

unless( $self->TicketObj->FirstCustomFieldValue( $CFObj->id ) ) {
my( $st, $msg ) = $self->TicketObj->AddCustomFieldValue(
Field => $CFObj->id,
Value => $DefaultValue,
RecordTransaction => $RecTransaction );
unless( $st ) {
$RT::Logger->warning( “Couldn’t set $DefaultValue as value for CF
$CFName:”.
$msg );
return undef;
}
}
return 1;

The only thing I’ve changed between the two queues is the name of the
CF, the
value of the CF and the queue number as it is stored in the DB.
Anyone have any
thoughts as to why this isn’t working?


The rt-users Archives

Community help: http://wiki.bestpractical.com
Commercial support: sales@bestpractical.com

Discover RT’s hidden secrets with RT Essentials from O’Reilly Media.
Buy a copy at http://rtbook.bestpractical.com

I was wondering about that. The code that Kenneth provided as an example uses
LoadByName instead of LoadByNameAndQueue. That fixed it. Thanks.

Mathew
Keep up with me and what I’m up to: http://theillien.blogspot.com

Stephen Turner wrote:

At Monday 9/24/2007 02:43 PM, Mathew Snyder wrote:

I was wondering about that. The code that Kenneth provided as an example uses
LoadByName instead of LoadByNameAndQueue. That fixed it. Thanks.

Mathew

Good - from looking at the (3.4.2) code, LoadByName is just a synonym
for LoadByNameAndQueue.

Steve