Re: RT 4.4.1 - Change owner on corrospond Scrip - Strange issue

Alex Hall <[email protected]> Thu, 23 Feb 2017 09:23:13 -0500
Newsgroups gmane.comp.bug-tracking.request-tracker.user
Message-ID <[email protected]>
> On Feb 23, 2017, at 09:19, Kenneth Marshall <[email protected]> wrote:
> Hi Alex and Robert,
>=20
> What happens if you set RecordTransaction to 1/true? I have not =
checked the code,
> but I would imagine that if you do not record the transaction, the =
cache infrastructure
> would not invalidate the old entry and would continue to serve stale =
data. Something
> to try perhaps.
I've tried both, and neither made a difference as far as I remember.
> On Feb 23, 2017, at 09:19, Kenneth Marshall <[email protected]> wrote:
>=20
> On Thu, Feb 23, 2017 at 08:51:29AM -0500, Alex Hall wrote:
>> I'm going to send the email I normally hate to receive. If you ever =
figure this out, please share it with the list!
>>=20
>> I have a script to assign the ticket creator as the owner on =
creation, which works perfectly. Like you, though, the owner fails to =
display properly in ticket lists but works if you open a ticket. This =
has annoyed all our staff for months, but when I asked about on this =
list, we couldn't work out what the problem was.
>>=20
>> Sorry you're running into this, but at the same time, I'm glad to =
know it's not just me. :)=20
>>> On Feb 23, 2017, at 08:13, Robert Blayzor <[email protected]> =
wrote:
>>>=20
>>> Running RT 4.4.1 - running fine for years and probably never noticed =
this before. We have a Scrip that runs that probably carried over from =
the pre-RT4 days.
>>>=20
>>>=20
>>> Pretty common function is to change the Owner of the ticket from =
=E2=80=9CNobody=E2=80=9D to the first person to correspond if they are a =
privileged user in RT. The Scrip is below and it does work. (kind of).
>>>=20
>>>=20
>>> What works: When user is first to correspond, Scrip executes and in =
Ticket view the Owner is set as expected.
>>>=20
>>>=20
>>> What doesn=E2=80=99t work: If we go into the queue and list all the =
open tickets, the owner will be listed as =E2=80=9Cnobody=E2=80=9D in =
this view, but if you open the ticket, there is an owner. If you change =
the owner to someone else and change it back, then it seems to fix this =
issue.
>>>=20
>>>=20
>>> Is this just a display bug or are we not using the proper method to =
change the owner of the Ticket?
>>>=20
>>>=20
>>>=20
>>> Here is the Scrip we=E2=80=99ve been using:
>>>=20
>>> # Condition: On correspond
>>> # Action: User Defined
>>> # Template: blank
>>>=20
>>> my $Actor =3D $self->TransactionObj->Creator;
>>> my $Queue =3D $self->TicketObj->QueueObj;
>>>=20
>>> # if actor is RT_SystemUser then get out of here
>>> return 1 if $Actor =3D=3D $RT::SystemUser->id;
>>>=20
>>> # get out unless ticket owner is nobody
>>> return 1 unless $self->TicketObj->Owner =3D=3D $RT::Nobody->id;
>>>=20
>>> # get out unless $Actor is not part of AdminCc watchers
>>> return 1 unless $Queue->IsWatcher(Type =3D> 'AdminCc', PrincipalId =
=3D> $Actor);
>>>=20
>>> # do the actual 'status update'
>>> my ($status, $msg) =3D $self->TicketObj->_Set(Field =3D> 'Owner', =
Value =3D> $Actor, RecordTransaction =3D> 0);
>>> unless( $status ) {
>>> $RT::Logger->warning( "Can't set ticket owner to $Actor: $msg" );
>>> return undef;
>>> }
>>> return 1;
>>>=20
>=20
>=20
> Hi Alex and Robert,
>=20
> What happens if you set RecordTransaction to 1/true? I have not =
checked the code,
> but I would imagine that if you do not record the transaction, the =
cache infrastructure
> would not invalidate the old entry and would continue to serve stale =
data. Something
> to try perhaps.
>=20
> Regards,
> Ken