[rt-users] Prevent resolution of Ticket that owner is 'Nobody'

Murillo Azambuja Gonçalves murillo at ifi.unicamp.br
Thu Jul 16 10:34:39 EDT 2015


Hi all,

I'm using RT 4.2.8 and would like to prevent ticket resolution in which 
the owner is "Nobody".
For that I'm doing two steps:

  * * Change the custom condition of scrip "On Resolve Notify
    Requestors" to not notify requesters if Owner is 'Nobody':*

*Description:* On Resolve Notify Requestors
*Condition:* User Defined
*Action:* Notify Requestors
*Template:* resolved in HTML

*Custom condition:*
         if((
                 ($self->TransactionObj->Type eq 'Status') or
                 ($self->TransactionObj->Type eq 'Set' and 
$self->TransactionObj->Field eq 'Status')
             ) and
             $self->TransactionObj->NewValue eq 'resolved'
         ) {
             if($self->TicketObj->Owner == $RT::Nobody->id) {
                 $RT::Logger->debug("Do not notify requestors if Owner 
is Nobody");
                 return 0;
             } else {
                 return 1;
             }
         }

         return 0;

  * *Create scrip to change status from resolved to it's old value:*

*Description:* On Resolve Check Owner
*Condition:* On Resolve
*Action:* User Defined
*Template:* Blank

*       Custom action commits code:*
         # get actor ID
         my $Actor = $self->TransactionObj->Creator;

         # if actor is RT_SystemUser then get out of here
         return 1 if $Actor == $RT::SystemUser->id;

         return 1 unless $self->TicketObj->Owner == $RT::Nobody->id;

         my ($status, $msg) = 
$self->TicketObj->SetStatus($self->TransactionObj->OldValue);
         unless($status) {
             $RT::Logger->error("Error when setting new status: $msg");
             return undef;
         }

         $RT::Logger->debug("Status changed");

         return 1;

/(The scrips above are divided just for separation of concerns purposes)/

It works, but the message that appears confuses the user: "Status 
changed from 'open' to 'resolved'". But in fact, the status of the 
ticket is "open" (setted in scrip above).

Actually I would like to "lock" the screen, warning the user that it is 
necessary to assign an owner before resolving the ticket.

Someone suggests a better solution? How could I lock the screen and 
display a message to the user?

I tried using the plugin "MandatoryOnTransition" for this purpose, but 
does not work because it just considers empty fields, and the owner is 
set to "Nobody", not empty:
Set (% MandatoryOnTransition,
      '*' => {
          '* -> Resolved' => ['TimeWorked', 'Owner'],
      },
);

Please help me.

Thanks in advance.

-- 
Murillo Azambuja Gonçalves

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.bestpractical.com/pipermail/rt-users/attachments/20150716/20c9aa48/attachment.html>


More information about the rt-users mailing list