[rt-devel] Fwd: [rich+rt@lafferty.ca: [rt-users] Labeled priorities]

Bruce Campbell bruce_campbell at ripe.net
Tue Feb 12 10:57:55 EST 2002

On Mon, 11 Feb 2002, Peter E. Popovich wrote:

> Don't laugh, but if you want to avoid re-implementing the wheel, take a look
> at keywords.
> Keywords aren't linked to priorities, but you get a supported pulldown in
> the UI, and don't have to tinker with the db schema. The task of synching
> numeric priorities to the keyword label can be done by a crontab (for
> prototyping purposes) or scrip (for final implementation).


Assuming that you'd like:

	OnSetKeyword SetPriorityFromKeyword with template KeywordPriorities

then you'd need to insert_condition for OnSetKeyword to set
ApplicableTransTypes to 'Keyword' with ExecModule of AnyTransaction, then:

	# SetPriorityFromKeyword.pm - RT ScripAction to set a priority based
	# on keyword

	package RT::Action::SetPriorityFromKeyword;
	require RT::Action::Generic;
	@ISA = qw(RT::Action::Generic);

	sub Prepare {
		# nothing really to do here
		my $self=shift;

		my $retval = undef;

		if( $self->TransactionObj->Type =~ /Keyword/ ){
			# protect against people putting this action in
			# a weird place
			$retval = 1;


	sub Commit {
		my $self=shift;

		my $retval=undef;
		# Get the template.
		my @tsplit = split(/\n/, $self->$TemplateObj->Content);
		my %easy_chk = ();
		foreach my $thisline( @tsplit ){
			# template is ':' seperated, with 'keyword:priority'
			next unless( $thisline =~ /^\s*(\S+)\s*:\s*(\d+)\s*$/ );
			$easy_chk{"$1"} = $2;

		# What did we set?  We check the 'Newvalue' field of our
		# Transaction.
		my $tmpval = $self->TransactionObj->NewValue();

		if( defined( $easy_chk{"$tmpval"} ) ){
			$retval = $self->TicketObj->SetPriority( $easy_chk{"$tmpval"} );

		return( $retval );


The above is me rambling, and may or may not work for you.  The template
should be a \n seperated list of 'keyword : priority_to_set'.


                             Bruce Campbell                            RIPE
                   Systems/Network Engineer                             NCC
                 www.ripe.net - PGP562C8B1B                      Operations

More information about the Rt-devel mailing list