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