[Rt-devel] Re: UserDefined scrip action
Ruslan U. Zakirov
Ruslan.Zakirov at acronis.com
Thu Dec 9 12:48:31 EST 2004
Jan Okrouhly wrote:
> On Thu, 9 Dec 2004, Ruslan U. Zakirov wrote:
>
>
>>Jan Okrouhly wrote:
>>
>>>Hello,
>>>
>>>we use RT 3.2.2 and meet big troubles with custom action scrips - it works
>>>only sometimes (maybe just only once). This example for is i.e. not
>>>working well if used in Scrip for specific Queue.
>>>Is this approach wrong/where is the problem?
>>>I (customer) doesn't want to use additional files like yours good one
>>>Action/NotifyGroup.pm, because the LoadedGroup will change depending on
>>>some ticket info (Customer CustomFields)...
>>
>>Start from http://wiki.bestpractical.com/?Debug
>
>
> I used to debug it, but it there had to be some BIG mistake in usage of
> objects or classes, RT 3.2.2, or Perl 5.8.4 used...
>
> The simple code bellow works sometimes ones, sometimes no. It is not
> deterministic - that's the PROBLEM.
In most cases it's really your problem if something sometimes works and
sometimes not. You should run apache in -X mode in such case to be
shure. Read http://wiki.bestpractical.com/?Debug.
Try to use next code in the commit phase:
(delete $self->{'tmpscrip'})->Commit;
PS: IMHO it's first time when somebody tries to put action package into
custom action code :)
>
>
>>Comments about code below.
>
>
> Thank You for comments, but PLEASE try this code:
> package RT::Action::tmp;
> use strict;
> use base qw(RT::Action::Notify);
>
> sub SetRecipients {
> my $self = shift;
>
> @{$self->{'Bcc'}} = ('somebody at test.it.com');
> return 1
> }
>
> 1;
>
> my $tmpscrip;
> $tmpscrip = new RT::Action::tmp(
> TransactionObj => $self->{'TransactionObj'},
> TemplateObj => $self->{'TemplateObj'},
> TicketObj => $self->{'TicketObj'},
> ScripObj => $self->{'ScripObj'},
> Type => $self->{'Type'},
> CurrentUser => $self->CurrentUser,
> );
>
> $self->{'tmpscrip'} = $tmpscrip;
>
> my $res=$tmpscrip->Prepare();
> use Data::Dumper;
> $RT::Logger->warning("Res=".$res.Dumper($self->TemplateObj->MIMEObj->head));
> return $res;
>
>
>>>Prepare part:
>>>----- cut here -----
>>>package RT::Action::tmp;
>>>use strict;
>>>use vars qw/@ISA/;
>>>require RT::Action::Notify;
>>>@ISA = qw(RT::Action::Notify);
>>>sub SetRecipients {
>>> my $self = shift;
>>>
>>> my ($group);
>>> my @Bcc;
>>>
>>> $group = new RT::Group($RT::SystemUser);
>>> $group->LoadUserDefinedGroup("RT AdminCc");
>>>
>>> unless ($group->Id ) {
>>> $RT::Logger->warning("Searching Group Global AdminCc failed, can't set recipients!\n");
>>>
>>> return;
>>> }
>>>
>>> my $members = $group->UserMembersObj();
>>> while (my $member = $members->Next()) {
>>>
>>> my $user = $member->EmailAddress;
>>> if ($user && ! ( grep (/^$user$/, @Bcc) ) ) {
>>
>> if ($user && ! ( grep (/^\Q$user\E$/, @Bcc) ) ) {
>>
>>
>>> push ( @Bcc, $user );
>>> }
>>> }
>>>
>>> if ($RT::UseFriendlyToLine) {
>>> push (
>>> @{$self->{'PseudoTo'}},
>>> sprintf($RT::FriendlyToLineFormat, "GroupNotify", $self->TicketObj->id),
>>> );
>>> }
>>>
>>> if ($RT::NotifyActor) {
>>
>>unless($RT::NotifyActor) {
>>
>>
>>> # Do not send notification to the crator of the transaction
>>> my $creator;
>>> $creator = $self->TransactionObj->CreatorObj->EmailAddress() if ($self->TransactionObj);
>>> # override possible 'Bcc'
>>>
>>> @{$self->{'Bcc'}} = grep (!/^$creator$/, @Bcc);
>>
>> @{$self->{'Bcc'}} = grep (!/^\Q$creator\E$/, @Bcc);
>>
>>
>>> } else {
>>> @{$self->{'Bcc'}} = @Bcc; }
>>>
>>> $RT::Logger->warning("GroupNotify Bcc is:".join(',',@{$self->{'Bcc'}})."\n");
>>>
>>> return (1)
>>>}
>>>
>>>1;
>>>
>>>my $tmpscrip;
>>>$tmpscrip = new RT::Action::tmp(
>>>TransactionObj => $self->{'TransactionObj'},
>>>TemplateObj => $self->{'TemplateObj'},
>>>TicketObj => $self->{'TicketObj'},
>>>ScripObj => $self->{'ScripObj'},
>>>Type => $self->{'Type'},
>>>CurrentUser => $self->CurrentUser,
>>>);
>>>
>>>$self->{'tmpscrip'} = $tmpscrip;
>>>
>>>my $res=$tmpscrip->Prepare();
>>>#use Data::Dumper;
>>>#$RT::Logger->warning(Dumper($self->TemplateObj->MIMEObj->head));
>>>return $res;
>>>----- cut here -----
>>>Commit part is only:
>>>----- cut here -----
>>>$self->{'tmpscrip'}->Commit;
>>>----- cut here -----
>>>
>>>
>>>Jan Okrouhlý
>>>
>>>//------------------------------------\-\-\+\-\-\---okrouhly at civ.zcu.cz-\\
>>>|Laboratory for Computer Science | phone: +420 377 632 837 |
>>>|University of West Bohemia | location: Univerzitni 22 |
>>>|Americka 42, 306 14 Pilsen, Czech Republic| room: UI402 |
>>>+---------------------------------------73-!-de-OK1INC at OK0PPL.#BOH.CZE.EU+
>>>| Monday or Tuesday: | phone: +420 224 355 263 |
>>> \\___________________CESNET z.s.p.o.______|_location: Zikova 4, Prague_//
>>>
>>
>>
>
>
> Jan Okrouhlý
>
> //------------------------------------\-\-\+\-\-\---okrouhly at civ.zcu.cz-\\
> |Laboratory for Computer Science | phone: +420 377 632 837 |
> |University of West Bohemia | location: Univerzitni 22 |
> |Americka 42, 306 14 Pilsen, Czech Republic| room: UI402 |
> +---------------------------------------73-!-de-OK1INC at OK0PPL.#BOH.CZE.EU+
> | Monday or Tuesday: | phone: +420 224 355 263 |
> \\___________________CESNET z.s.p.o.______|_location: Zikova 4, Prague_//
>
>
More information about the Rt-devel
mailing list