Difference between revisions of "CustomActionQchange"

From Request Tracker Wiki
Jump to navigation Jump to search
(CustomActionQchange, new page.)
 
 
(2 intermediate revisions by one other user not shown)
Line 1: Line 1:
Below is a custom action module for adding RT::Action:Qchange via crontool that can be called for via a query similar to this "--action RT::Action::QChange --action-arg YOURQUEUE --template 'blank'"
Below is a custom action module for adding RT::Action:Qchange via crontool that can be called for via a query similar to this "--action RT::Action::QChange --action-arg YOURNEWQUEUE --template 'blank'"
 
Example <code> rt-crontool --transaction last --search RT::Search::FromSQL --search-arg "Queue = 'SLA’ AND (Status='new' OR Status='open')" --condition RT::Condition::Overdue --action RT::Action::QChange --action-arg QUEUE --template 'SLA-escalation'</code>
 
 


Create the file in a place where RT can call it (notice not to put it at a place that will be overwritten at an RT upgrade, ex /opt/rt4/lib/RT/Action/Qchange.pm
Create the file in a place where RT can call it (notice not to put it at a place that will be overwritten at an RT upgrade, ex /opt/rt4/lib/RT/Action/Qchange.pm
Line 5: Line 9:
This script was created by Andy Smith.
This script was created by Andy Smith.


==Code==
Running on RT version 4.4.1


== Code ==
<pre>
# BEGIN BPS TAGGED BLOCK {{{
# BEGIN BPS TAGGED BLOCK {{{
#
#
Line 33: Line 39:
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
# 02110-1301 or visit their web page on the internet at
# 02110-1301 or visit their web page on the internet at
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
# <nowiki>http://www.gnu.org/licenses/old-licenses/gpl-2.0.html</nowiki>.
#
#
#
#
Line 54: Line 60:
#
#
# END BPS TAGGED BLOCK }}}
# END BPS TAGGED BLOCK }}}


package RT::Action::QChange;
package RT::Action::QChange;
Line 72: Line 77:


sub Prepare {
sub Prepare {
  my $self = shift;
    my $self = shift;
 
    return 1;
  return 1;
}
}


Line 80: Line 84:


sub Commit {
sub Commit {
 
    my $self = shift;
  my $self = shift;
    my $argument = $self->Argument;
 
my $argument = $self->Argument;
     unless ( $argument ) {
     unless ( $argument ) {
        $RT::Logger->error("Argument is mandatory for Test action");
RT::Logger->error("Argument is mandatory for Test action");
        return 0;
return 0;
     }
     }


  my ($status, $msg) = $self->TicketObj->SetQueue("$argument");
    my ($status, $msg) = $self->TicketObj->SetQueue("$argument");
  if ( not $status ) {
    if ( not $status ) {
    RT::Logger->error("Could not reassign queue: $msg");
      RT::Logger->error("Could not reassign queue: $msg");
    return 0;
      return 0;
     }
     }


Line 102: Line 104:


1;
1;
 
</pre>
 
[[Category:Contribution]]

Latest revision as of 16:03, 4 November 2016

Below is a custom action module for adding RT::Action:Qchange via crontool that can be called for via a query similar to this "--action RT::Action::QChange --action-arg YOURNEWQUEUE --template 'blank'"

Example rt-crontool --transaction last --search RT::Search::FromSQL --search-arg "Queue = 'SLA’ AND (Status='new' OR Status='open')" --condition RT::Condition::Overdue --action RT::Action::QChange --action-arg QUEUE --template 'SLA-escalation'


Create the file in a place where RT can call it (notice not to put it at a place that will be overwritten at an RT upgrade, ex /opt/rt4/lib/RT/Action/Qchange.pm

This script was created by Andy Smith.

Running on RT version 4.4.1

Code

# BEGIN BPS TAGGED BLOCK {{{
#
# COPYRIGHT:
#
# This software is Copyright (c) 1996-2015 Best Practical Solutions, LLC
#                                          <sales@bestpractical.com>
#
# (Except where explicitly superseded by other copyright notices)
#
#
# LICENSE:
#
# This work is made available to you under the terms of Version 2 of
# the GNU General Public License. A copy of that license should have
# been provided with this software, but in any event can be snarfed
# from www.gnu.org.
#
# This work is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
# 02110-1301 or visit their web page on the internet at
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
#
#
# CONTRIBUTION SUBMISSION POLICY:
#
# (The following paragraph is not intended to limit the rights granted
# to you to modify and distribute this software under the terms of
# the GNU General Public License and is only of importance to you if
# you choose to contribute your changes and enhancements to the
# community by submitting them to Best Practical Solutions, LLC.)
#
# By intentionally submitting any modifications, corrections or
# derivatives to this work, or any other work intended for use with
# Request Tracker, to Best Practical Solutions, LLC, you confirm that
# you are the copyright holder for those contributions and you grant
# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
# royalty-free, perpetual, license to use, copy, create derivative
# works based on those contributions, and sublicense and distribute
# those contributions and any derivatives thereof.
#
# END BPS TAGGED BLOCK }}}

package RT::Action::QChange;

use strict;
use warnings;

use base qw(RT::Action::Notify);

use Email::Address;

=head1 Notify Owner or AdminCc

If the owner of this ticket is Nobody, notify the AdminCcs.  Otherwise, only notify the Owner.

=cut

sub Prepare {
    my $self = shift;
    return 1;
}

my $self;

sub Commit {
    my $self = shift;
    my $argument = $self->Argument;
    unless ( $argument ) {
	RT::Logger->error("Argument is mandatory for Test action");
	return 0;
    }

    my ($status, $msg) = $self->TicketObj->SetQueue("$argument");
    if ( not $status ) {
       RT::Logger->error("Could not reassign queue: $msg");
       return 0;
    }


    RT::Base->_ImportOverlays();

    return 1;
}

1;