[rt-users] getting username from id

Mathew theillien at yahoo.com
Fri Mar 30 12:23:18 EDT 2007


Ruslan Zakirov wrote:
> On 3/29/07, Mathew Snyder <theillien at yahoo.com> wrote:
>> I've been working on a script for a while and finally have it working
>> more or
>> less the way I need it to.  The last thing (besides file formatting)
>> is to get
>> the usernames.  I'm getting the users via LimitToPrivileged in
>> Users.pm.  In
>> another script I proved to myself that I can get the names using the
>> ->Name method:
>>
>> my $users = new RT::Users(RT::SystemUser);
>> $users->LimitToPrivileged;
>>
>> while ( my $user = $users->Next ) {
>>         next if $user->Name eq 'root';
>>         print $user->Name . "\n";
>> }
>>
>> exit;
>>
>> However, when I try to use the same method to populate a hash I get
>> the error
>> indicating "Can't call method "Name" without a package or object
>> reference at
>> ./user_timesheet_3.pl line 65."
>>
>> This is the block of code in contention:
>>
>> my $users = new RT::Users(RT::SystemUser);
>> $users->LimitToPrivileged;
> delete this you don't need it.

But If I don't use it I get all the users.  Even watchers.  I just want
the users that we have internally.  These are the only people we're
concerned about as far as time worked goes.

> 
>>
>> while (my $ticket = $tix->Next) {
>>     my $environment = $ticket->FirstCustomFieldValue('Environment');
>>     my $user;
> this ^^^ line is also useless

Yeah, I forgot to remove that before I posted.  I got rid of it in the
actual script when I realized it is redundant.

> 
>>     unless ($environment) {
>>         warn "warning " . $ticket->id. " has no environment";
>>              next
>>     }
>>
>>     my $transactions = $ticket->Transactions;
>>     while (my $transaction = $transactions->Next) {
>>         next unless ($transaction->TimeTaken);
> 
>>         while (my $user = $users->Next) {
>>             if ($user = $transaction->Creator) {
>>                 $timeworked{$user} += $transaction->TimeTaken;
>>             }
>>             $environment{$environment}{$user->Name} = $timeworked{$user};
>>         }
> instead of above block use the following code:
>            my $creator = $transactions->CreatorObj;
>            $timeworked{ $creator->Name } += $transaction->TimeTaken;
>            $environment{$environment}{ $creator->Name } +=
> $transaction->TimeTaken;

Which block specifically?  The while (my $user = $users->Next) block?

> 
>>     }
>> }
>>
>> foreach my $key (sort keys %environment) {
>>         print $key, "\n";
>>         print ("-" x 15);
>>         print "\n";
>>         foreach my $key2 (keys %{ $environment{$key} }) {
>>                 print "$key2 -> $environment{$key}{$key2}\n";
>>         }
>>         print "\n";
>> }
>>
>> Can anyone help me correct this?
>>
>> Mathew
>> _______________________________________________
>> http://lists.bestpractical.com/cgi-bin/mailman/listinfo/rt-users
>>
>> Community help: http://wiki.bestpractical.com
>> Commercial support: sales at bestpractical.com
>>
>>
>> Discover RT's hidden secrets with RT Essentials from O'Reilly Media.
>> Buy a copy at http://rtbook.bestpractical.com
>>
> 
> 


Thank you all for the help.  I do seriously appreciate it.

Mathew



More information about the rt-users mailing list