[rt-users] User ID in a script?

Kevin Falcone falcone at bestpractical.com
Tue Mar 25 15:50:58 EDT 2008


On Mar 25, 2008, at 3:16 PM, John Arends wrote:

> Gene,
>
> When running your script I get this error:
>
> [Tue Mar 25 19:12:39 2008] [crit]: Can't locate object method  
> "order_by"
> via package "RT::Users" at ./rtusers.pl line 14.
> (/usr/lib/perl5/vendor_perl/5.8.5/RT.pm:346)
> Can't locate object method "order_by" via package "RT::Users" at
> ./rtusers.pl line 14.

You want the OrderBy method, which is documented in
perldoc DBIx::SearchBuilder

There are also a number of example usages if you grep through RT's
perl modules

-kevin

>
>
>
> In poking around the perdoc info for RT::Users and RT::Users_Overlay I
> didn't see any mention of order_by so I'm not how to proceed from  
> there.
>
> -John
>
>
> Gene LeDuc wrote:
>> Hi John,
>>
>> You can use this script as a starting point to loop through all  
>> your users:
>>
>> #!/usr/bin/perl -w
>> ### External libraries ###
>> use strict;
>> ### Modify the next line to fit your installation
>> use lib ("/opt/local/software/rt-3.6.3/lib");
>> package RT;
>> use RT::Interface::CLI qw(CleanEnv loc);
>> use RT::Users;
>> CleanEnv();
>> RT::LoadConfig();
>> RT::Init();
>> my $users = new RT::Users($RT::SystemUser);
>> $users->order_by(VALUE => 'Id');
>> #### Loop through users ####
>> while ( my $User = $users->Next ) {
>>  print sprintf("UserID: %s, RealName: %s\n",
>>                $User->Id(), $User->RealName());
>> }
>>
>> Regards,
>> Gene
>>
>> At 01:50 PM 3/17/2008, John Arends wrote:
>>> I wrote a quick perl script that outputs a bunch of information  
>>> about
>>> all the users in my RT instance. I noticed that the ID numbers are  
>>> all
>>> over the place. One of my early users was created with an ID of  
>>> 22, and
>>> then the next user has an ID of 29, and then the next one is  
>>> somewhere
>>> in the mid 80s.
>>>
>>> Does every object RT creates get a unique ID and when a user is  
>>> created
>>> it just gets the next one?
>>>
>>> In my perl script, I want to loop through all the users so I can  
>>> print
>>> the infor for each one. Since this was a quick hack I just went  
>>> through
>>> the numbers 1 through 1000. Is there something built in that  
>>> allows me
>>> to do this in a more direct way? I don't want to loop until there  
>>> is no
>>> data since it seems like the ID numbes are all over the place.
>>>
>>> #!/usr/bin/perl
>>>
>>> use warnings;
>>> use lib '/usr/lib/perl5/vendor_perl/5.8.5/RT';
>>> use RT::Interface::CLI;
>>> use RT::Ticket;
>>> use RT::User;
>>>
>>> RT::LoadConfig();
>>> RT::Init();
>>>
>>> for ($count=1; $count<1000; $count++)
>>> {
>>>        my $user = RT::User->new( $RT::SystemUser );
>>>
>>>        $user->Load( $count );
>>>
>>>        if ( $user->Name){
>>>                print $user->RealName . " " . $user->Name . " " .
>>> $user->EmailAddress
>>> . " " . $user->id . " " . $user->Privileged ." \n";
>>>        }
>>> }
>>>
>
> _______________________________________________
> 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
>




More information about the rt-users mailing list