On Tue, Sep 16, 2008 at 12:25:28PM -0400, [EMAIL PROTECTED] wrote:
> At the moment, we have a set of global scrips that apply to all queues.  We
> want to migrate to using per-queue scrips since many of the queues have
> different needs.  Is there an easy way to take the existing global scrips and
> apply them to all queues (and then delete the global scrips)?


here is a script I used a while ago to do this, you should adjust path
at top on the script and also add unwanted queues in @queues_blacklist
if needed.

should works fine but ... test it on test RT instance before your
production RT maybe ;)

#!/usr/bin/perl -w
# Convert global scrips to per-queue scrips

use strict;
use lib "/opt/rt/rt/local/lib";
use lib "/opt/rt/rt/lib";
use lib "/opt/rt/rt/etc";
use RT;
use RT::Interface::CLI qw( CleanEnv GetCurrentUser );
use RT::User;

# Disable STDOUT buffering
$| = 1;

# Set locales
$ENV{'LANG'} = 'POSIX';
$ENV{'LC_ALL'} = 'POSIX';

my $code;
my $msg;
my @queues_blacklist = qw(___Approvals);

# RT CLI initialization
CleanEnv();
RT::LoadConfig();
RT::Init();

# Get the current user all loaded
our $CurrentUser = GetCurrentUser();

unless( $CurrentUser->Id )
{
	print STDERR "No RT user found. Please consult your RT administrator.\n";
	exit 1;
}

# Get queues
my @queues;
my $QueuesObj = RT::Queues->new($CurrentUser);
$QueuesObj->UnLimit();
while ( my $queue = $QueuesObj->Next )
{
	next if (grep {$queue->Name eq $_} @queues_blacklist);
	push @queues, $queue->id;
}

my $Scrips = RT::Scrips->new($CurrentUser);
$Scrips->LimitToGlobal();
while ( my $scrip = $Scrips->Next )
{
	next if (($scrip->Id != 3) && ($scrip->Id != 6));
	my $scrip_full_description = $scrip->ConditionObj->Name." ".$scrip->ActionObj->Name." with template ".$scrip->TemplateObj->Name;
	foreach my $queue (@queues)
	{
		print "Create scrip ".$scrip->id." (".$scrip_full_description.") for queue ".$queue."\n";
		my $queue_scrip = RT::Scrip->new($CurrentUser);
		($code,$msg) = $queue_scrip->Create(
			Queue                  => $queue,
			ScripAction            => $scrip->ScripAction,
			ScripCondition         => $scrip->ScripCondition,
			Template               => $scrip->Template,
			Description            => $scrip->Description,
			CustomPrepareCode      => $scrip->CustomPrepareCode,
			CustomCommitCode       => $scrip->CustomCommitCode,
			CustomIsApplicableCode => $scrip->CustomIsApplicableCode,
	        );
		if (!$code) {
			warn "Error creating scrip: $msg\n";
			warn "Skipping global scrip deletion\n";
			next;
		}
	}
	print "Delete Global scrip ".$scrip->id."(".$scrip_full_description.")\n";
	($code,$msg) = $scrip->Delete;
	warn "Unable to delete scrip: $msg\n" if (!$code);
}
_______________________________________________
http://lists.bestpractical.com/cgi-bin/mailman/listinfo/rt-users

Community help: http://wiki.bestpractical.com
Commercial support: [EMAIL PROTECTED]


Discover RT's hidden secrets with RT Essentials from O'Reilly Media. 
Buy a copy at http://rtbook.bestpractical.com

Reply via email to