Re: [rt-users] Result page not up to date after TransactionBatch scrips
Hi Kevin, Thank you for your advice. Works perfectly. Rafal From: Kevin Falcone falc...@bestpractical.com To: rt-users@lists.bestpractical.com Date: 2013-09-10 04:12 Subject:Re: [rt-users] Result page not up to date after TransactionBatch scrips Sent by:rt-users-boun...@lists.bestpractical.com On Wed, Sep 04, 2013 at 10:16:16AM +0200, Rafal Matera wrote: We use RT 4.0.13, We customized our installation by some scrips. Part of them have to work in TransactionBatch mode. One of the scrips changes the ticket owner on queue change. This is done by scrip working in mentioned TransactionBatch mode. When the queue is changed on Basics screen (Ticket/Modify.html), scrip is executed without a failure. The problem is that result page shows the OLD VALUE of the owner. Clicking Display or Basics again shows that owner was really changed by the scrip. I'm not surprised. In order to avoid problems with TransactionBatch scrips, the ticket is cloned and worked on. The ticket object in the page is not directly acted on by the Scrip. TransactionBatch scrips through the 3.6/3.8/4.0 series have been inconsistent about when it updates. I don't think there's ever been a guarantee that it will update the object and TransactionBatch scrips in general are too magical. Do you have any idea, how to force RT to show current values on result page ? Use one of the other callbacks in that page to reload the ticket object, $TicketObj-Load($TicketObj-Id); from the BeforeActionList callback or one of the others should be enough. -kevin
Re: [rt-users] Result page not up to date after TransactionBatch scrips
On Wed, Sep 04, 2013 at 10:16:16AM +0200, Rafal Matera wrote: We use RT 4.0.13, We customized our installation by some scrips. Part of them have to work in TransactionBatch mode. One of the scrips changes the ticket owner on queue change. This is done by scrip working in mentioned TransactionBatch mode. When the queue is changed on Basics screen (Ticket/Modify.html), scrip is executed without a failure. The problem is that result page shows the OLD VALUE of the owner. Clicking Display or Basics again shows that owner was really changed by the scrip. I'm not surprised. In order to avoid problems with TransactionBatch scrips, the ticket is cloned and worked on. The ticket object in the page is not directly acted on by the Scrip. TransactionBatch scrips through the 3.6/3.8/4.0 series have been inconsistent about when it updates. I don't think there's ever been a guarantee that it will update the object and TransactionBatch scrips in general are too magical. Do you have any idea, how to force RT to show current values on result page ? Use one of the other callbacks in that page to reload the ticket object, $TicketObj-Load($TicketObj-Id); from the BeforeActionList callback or one of the others should be enough. -kevin pgplbIZVa8KYR.pgp Description: PGP signature
[rt-users] Result page not up to date after TransactionBatch scrips
Hello, We use RT 4.0.13, We customized our installation by some scrips. Part of them have to work in TransactionBatch mode. One of the scrips changes the ticket owner on queue change. This is done by scrip working in mentioned TransactionBatch mode. When the queue is changed on Basics screen (Ticket/Modify.html), scrip is executed without a failure. The problem is that result page shows the OLD VALUE of the owner. Clicking Display or Basics again shows that owner was really changed by the scrip. The problem exists on blank RT instance as well (only one new queue and following scrip created). CustomPrepareCode1;/CustomPrepareCode Queue0/Queue ScripActionUser Defined/ScripAction ScripConditionUser Defined/ScripCondition StageTransactionBatch/Stage TemplateBlank/Template CustomCommitCode my ($status_id, $status_msg); my $qId; my @batch = @{ $self-TicketObj-TransactionBatch }; foreach my $trans ( @batch ) { if ($trans-Type eq 'Set' $trans-Field eq 'Queue') { #if queue changed to COE_XX set owner to opcenter $qId = $trans-NewValue; my $qObj = new RT::Queue($RT::SystemUser); $qObj-Load($qId); if ($qObj-Name eq 'COE_XX') { ($status_id, $status_msg) = $self-TicketObj-SetOwner ('opcenter', 'Force'); $RT::Logger-info(Change owner: $status_msg); return !$status_id; } #in other cases, just set owner to nobody ($status_id, $status_msg) = $self-TicketObj-SetOwner(RT::Nobody (), 'Force'); $RT::Logger-info(Change owner: $status_msg); return 1; } } 1; /CustomCommitCode CustomIsApplicableCode my @batch = @{ $self-TicketObj-TransactionBatch }; foreach my $trans ( @batch ) { return 1 if ($trans-Field eq Queue); } return 0; /CustomIsApplicableCode Do you have any idea, how to force RT to show current values on result page ? Best regards, Rafal