[rt-users] Custom Field values are being deleted on ticket modification

Luis E. Muñoz lem at itverx.com.ve
Wed Dec 16 09:38:05 EST 2009


Hi there,

I am working on a customization script that should issue a number of
configuration changes in a vainilla RT 3.6.7 as shipped with Debian
Lenny.

The snippet below should create 4 custom fields that would apply to the
General queue, and add a couple of test values to them:

#!/usr/bin/perl
use lib '/usr/share/request-tracker3.6/lib';
use strict; use warnings; use RT; use RT::User; use RT::Queue;
use RT::Template; 
RT::LoadConfig;
RT::Init;

for my $d ( [ Field1  => 'My Field 1', { One   => 'Value One',
Two   => 'Value Two', }],
    [ Field2  => 'My Field 2', { One   => 'Value One',
Two   => 'Value Two', }],
    [ Field3  => 'My Field 3', { One   => 'Value One',
Two   => 'Value Two', }],
    [ Field4  => 'My Field 4', { One   => 'Value One',
Two   => 'Value Two', }],)
{
    my $cf = new RT::CustomField ( $RT::SystemUser );
    my ($id, $msg) = $cf->Create(
Name => $d->[0],
Description => $d->[1],
Type => 'Combobox',
LookupType => 'RT::Queue-RT::Ticket',
Pattern => '(?#Mandatory).',
);
    print 'Cannot create CF ' . $d->[0] . ": $msg\n" unless $id;
    my $order = 0;
    for my $val (sort keys %{$d->[2]})
    {
my ($d, $msg) = $cf->AddValue(Name => $d->[2]->{$val}, 
      Description => $d->[2]->{$val},
      SortOrder => $order);
print "Value $val: $msg \n";
$order += 5;
    }

    for my $queue (qw/General/)
    {
my $q = RT::Queue->new($RT::SystemUser);
$q->Load($queue);
my ($id, $msg) = $cf->AddToObject($q);
print "Can't link CF to queue $queue: $msg\n" unless $id;
    }
}

After the script is run, I can see the fields through Configuration >
Custom Fields, with the intended values. When I try to create a ticket
in the General queue, the corresponding combo boxes are populated with
the expected values. So far so good.

When the ticket is created, the CF values are stored along with the
ticket and I can see them in the display.

Whenever I try to change the ticket (say, modify the value of a CF), the
following messages are displayed in my browser before the Basic form:

  * Value Two added as a value for Field1 
      * Value Two is no longer a value for custom field Field2 
      * Value Two is no longer a value for custom field Field3 
      * Value One is no longer a value for custom field Field4

The ticket losses the CF values... This is what the logs say.

Dec 16 05:06:33 rt RT: Ticket 1 created in queue 'General' by root
(/usr/share/request-tracker3.6/lib/RT/Ticket_Overlay.pm:756)#012
Dec 16 05:06:42 rt RT: About to think about scrips for transaction
#27#012
Dec 16 05:06:42 rt RT: About to prepare scrips for transaction #27#012
Dec 16 05:06:42 rt RT: Found 1 scrips#012
Dec 16 05:06:42 rt RT: About to commit scrips for transaction #27#012
Dec 16 05:06:42 rt RT: About to think about scrips for transaction
#28#012
Dec 16 05:06:42 rt RT: About to prepare scrips for transaction #28#012
Dec 16 05:06:42 rt RT: Found 1 scrips#012
Dec 16 05:06:42 rt RT: About to commit scrips for transaction #28#012
Dec 16 05:06:42 rt RT: About to think about scrips for transaction
#29#012
Dec 16 05:06:42 rt RT: About to prepare scrips for transaction #29#012
Dec 16 05:06:42 rt RT: Found 1 scrips#012
Dec 16 05:06:42 rt RT: About to commit scrips for transaction #29#012
Dec 16 05:06:42 rt RT: About to think about scrips for transaction
#30#012
Dec 16 05:06:42 rt RT: About to prepare scrips for transaction #30#012
Dec 16 05:06:42 rt RT: Found 1 scrips#012
Dec 16 05:06:42 rt RT: About to commit scrips for transaction #30#012

After reading through the source, I have been unable to find what am I
missing in my code. Can someone point me in the right direction?

Thanks and best regards.

-lem




More information about the rt-users mailing list