"No object mapping for field" when referencing the UserObject of a MembersObject

Please let me know if this is supposed to go to RT-Users or RT-Devel.

I’m trying to write a utility to interface with Request Tracker, and
part of what that utility has to do is get the members of some user
created groups. Just sub in actual groups for what you want in there,
CurrentUser works and is already initialized by the time my program gets
here. Mostly borrowing this code from the old rtimportldap script, I
came up with this:

–code–
# RT Group
$groupObj = new RT::Group($CurrentUser);
$groupObj->LoadUserDefinedGroup($groupName);
$groupObj->Id() || die “Group “.$groupName.” not found in
RequestTracker”;

$groupMembersObj = $groupObj->MembersObj();
print $groupObj->Id().":".$groupObj.":".$groupMembersObj.":"
    .$groupMembersObj->Next()->UserObj()."\n"; ## This creates an error
while ( $groupMember = $groupMembersObj->Next() )
{
    $groupMemberUser = $groupMember->UserObj();
    print $groupMemberUser->Name()."\n"; ## This does too
    #$memberName = $groupMemberUser->Name();
    #push(@rtMembers, $memberName);
}

–/code–

What it seems is that GroupObj->MembersObj()->Next()->UserObj() causes
the problem, as UserObj() returns, not a UserObject, but a string
stating “No object mapping for field” Attempting to use the Name()
function of course doesn’t work because “No object…”->Name() doesn’t
make sense… What’s going on?

Thanks,
Johnathan

Johnathan Bell
Internet System Administrator, Baker College

As group may have another group as meber as well as user, so records
in GroupMembers and CachedGroupMembers objects reference Principals.

If you are looking for users only that are members of a group then
it’s easier to do the following:

my $group = …
$group->Load…

my $users = $group->UserMembersObj;
while ( my $user = $users->Next ) {

}On Thu, May 21, 2009 at 9:46 PM, Johnathan Bell johnathan.bell@baker.edu wrote:

Please let me know if this is supposed to go to RT-Users or RT-Devel.

I’m trying to write a utility to interface with Request Tracker, and
part of what that utility has to do is get the members of some user
created groups. Just sub in actual groups for what you want in there,
CurrentUser works and is already initialized by the time my program gets
here. Mostly borrowing this code from the old rtimportldap script, I
came up with this:

–code–

RT Group

$groupObj = new RT::Group($CurrentUser);
$groupObj->LoadUserDefinedGroup($groupName);
$groupObj->Id() || die “Group “.$groupName.” not found in
RequestTracker”;

$groupMembersObj = $groupObj->MembersObj();
print $groupObj->Id().":".$groupObj.":".$groupMembersObj.":"
.$groupMembersObj->Next()->UserObj()."\n"; ## This creates an error
while ( $groupMember = $groupMembersObj->Next() )
{
$groupMemberUser = $groupMember->UserObj();
print $groupMemberUser->Name()."\n"; ## This does too
#$memberName = $groupMemberUser->Name();
#push(@rtMembers, $memberName);
}
–/code–

What it seems is that GroupObj->MembersObj()->Next()->UserObj() causes
the problem, as UserObj() returns, not a UserObject, but a string
stating “No object mapping for field” Attempting to use the Name()
function of course doesn’t work because “No object…”->Name() doesn’t
make sense… What’s going on?

Thanks,
Johnathan


Johnathan Bell
Internet System Administrator, Baker College


http://lists.bestpractical.com/cgi-bin/mailman/listinfo/rt-users

Community help: http://wiki.bestpractical.com
Commercial support: sales@bestpractical.com

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

Best regards, Ruslan.

There is example in:
http://wiki.bestpractical.com/view/CodeSnippetsOn Thu, May 21, 2009 at 10:11 PM, Ruslan Zakirov ruslan.zakirov@gmail.com wrote:

As group may have another group as meber as well as user, so records
in GroupMembers and CachedGroupMembers objects reference Principals.

If you are looking for users only that are members of a group then
it’s easier to do the following:

my $group = …
$group->Load…

my $users = $group->UserMembersObj;
while ( my $user = $users->Next ) {

}

On Thu, May 21, 2009 at 9:46 PM, Johnathan Bell johnathan.bell@baker.edu wrote:

Please let me know if this is supposed to go to RT-Users or RT-Devel.

I’m trying to write a utility to interface with Request Tracker, and
part of what that utility has to do is get the members of some user
created groups. Just sub in actual groups for what you want in there,
CurrentUser works and is already initialized by the time my program gets
here. Mostly borrowing this code from the old rtimportldap script, I
came up with this:

–code–

RT Group

$groupObj = new RT::Group($CurrentUser);
$groupObj->LoadUserDefinedGroup($groupName);
$groupObj->Id() || die “Group “.$groupName.” not found in
RequestTracker”;

$groupMembersObj = $groupObj->MembersObj();
print $groupObj->Id().":".$groupObj.":".$groupMembersObj.":"
.$groupMembersObj->Next()->UserObj()."\n"; ## This creates an error
while ( $groupMember = $groupMembersObj->Next() )
{
$groupMemberUser = $groupMember->UserObj();
print $groupMemberUser->Name()."\n"; ## This does too
#$memberName = $groupMemberUser->Name();
#push(@rtMembers, $memberName);
}
–/code–

What it seems is that GroupObj->MembersObj()->Next()->UserObj() causes
the problem, as UserObj() returns, not a UserObject, but a string
stating “No object mapping for field” Attempting to use the Name()
function of course doesn’t work because “No object…”->Name() doesn’t
make sense… What’s going on?

Thanks,
Johnathan


Johnathan Bell
Internet System Administrator, Baker College


http://lists.bestpractical.com/cgi-bin/mailman/listinfo/rt-users

Community help: http://wiki.bestpractical.com
Commercial support: sales@bestpractical.com

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


Best regards, Ruslan.

Best regards, Ruslan.

Thanks… But another snippet on that page is now giving me trouble…

–code–
my $currentUser = GetCurrentUser();
$currentUser->Load(“tester97”);
my ($status, $msg) = $groupObj->AddMember($currentUser->id());
die $msg unless $status;
exit(0);
–/code–

That code dies stating “Permission Denied”… do I need to authenticate
as root first? The perldoc on CurrentUser_Overlay.pm is a bit to obscure
for me and an example would really help.

Thanks again,
Johnathan

Ruslan Zakirov wrote:

There is example in:
http://wiki.bestpractical.com/view/CodeSnippets

As group may have another group as meber as well as user, so records
in GroupMembers and CachedGroupMembers objects reference Principals.

If you are looking for users only that are members of a group then
it’s easier to do the following:

my $group = …
$group->Load…

my $users = $group->UserMembersObj;
while ( my $user = $users->Next ) {

}

Please let me know if this is supposed to go to RT-Users or RT-Devel.

I’m trying to write a utility to interface with Request Tracker, and
part of what that utility has to do is get the members of some user
created groups. Just sub in actual groups for what you want in there,
CurrentUser works and is already initialized by the time my program gets
here. Mostly borrowing this code from the old rtimportldap script, I
came up with this:

–code–

RT Group

$groupObj = new RT::Group($CurrentUser);
$groupObj->LoadUserDefinedGroup($groupName);
$groupObj->Id() || die “Group “.$groupName.” not found in
RequestTracker”;

$groupMembersObj = $groupObj->MembersObj();
print $groupObj->Id().":".$groupObj.":".$groupMembersObj.":"
.$groupMembersObj->Next()->UserObj()."\n"; ## This creates an error
while ( $groupMember = $groupMembersObj->Next() )
{
$groupMemberUser = $groupMember->UserObj();
print $groupMemberUser->Name()."\n"; ## This does too
#$memberName = $groupMemberUser->Name();
#push(@rtMembers, $memberName);
}
–/code–

What it seems is that GroupObj->MembersObj()->Next()->UserObj() causes
the problem, as UserObj() returns, not a UserObject, but a string
stating “No object mapping for field” Attempting to use the Name()
function of course doesn’t work because “No object…”->Name() doesn’t
make sense… What’s going on?

Thanks,
Johnathan


Johnathan Bell
Internet System Administrator, Baker College


http://lists.bestpractical.com/cgi-bin/mailman/listinfo/rt-users

Community help: http://wiki.bestpractical.com
Commercial support: sales@bestpractical.com

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


Best regards, Ruslan.

Johnathan Bell
Internet System Administrator, Baker College

Johnathan Bell
810.766.4097

Office Hours: 7A-4P, M-F
Internet System Administrator, Baker College

You need a user object loaded that represents actor - a user who
changing things. GetCurrentUser function is for command line tools
that can be executed by many users on your system, like bin/rt tool.
If you don’t need mulit-user script then you can use $RT::SystemUser.
Each object you construct using ->new call needs the current user
provided as the only argument of the method.

In the script below you messing two concepts. You’re trying to add
user X as member into a group acting under user X’s credentials. If
user X has no rights to modify membership of the group X then he
obviously gets “permissions denied” error.On Thu, May 21, 2009 at 11:11 PM, Johnathan Bell johnathan.bell@baker.edu wrote:

Thanks… But another snippet on that page is now giving me trouble…

–code–
my $currentUser = GetCurrentUser();
$currentUser->Load(“tester97”);
my ($status, $msg) = $groupObj->AddMember($currentUser->id());
die $msg unless $status;
exit(0);
–/code–

That code dies stating “Permission Denied”… do I need to authenticate
as root first? The perldoc on CurrentUser_Overlay.pm is a bit to obscure
for me and an example would really help.

Thanks again,
Johnathan

Ruslan Zakirov wrote:

There is example in:
http://wiki.bestpractical.com/view/CodeSnippets

On Thu, May 21, 2009 at 10:11 PM, Ruslan Zakirov ruslan.zakirov@gmail.com wrote:

As group may have another group as meber as well as user, so records
in GroupMembers and CachedGroupMembers objects reference Principals.

If you are looking for users only that are members of a group then
it’s easier to do the following:

my $group = …
$group->Load…

my $users = $group->UserMembersObj;
while ( my $user = $users->Next ) {

}

On Thu, May 21, 2009 at 9:46 PM, Johnathan Bell johnathan.bell@baker.edu wrote:

Please let me know if this is supposed to go to RT-Users or RT-Devel.

I’m trying to write a utility to interface with Request Tracker, and
part of what that utility has to do is get the members of some user
created groups. Just sub in actual groups for what you want in there,
CurrentUser works and is already initialized by the time my program gets
here. Mostly borrowing this code from the old rtimportldap script, I
came up with this:

–code–

RT Group

$groupObj = new RT::Group($CurrentUser);
$groupObj->LoadUserDefinedGroup($groupName);
$groupObj->Id() || die “Group “.$groupName.” not found in
RequestTracker”;

$groupMembersObj = $groupObj->MembersObj();
print $groupObj->Id().":".$groupObj.":".$groupMembersObj.":"
.$groupMembersObj->Next()->UserObj()."\n"; ## This creates an error
while ( $groupMember = $groupMembersObj->Next() )
{
$groupMemberUser = $groupMember->UserObj();
print $groupMemberUser->Name()."\n"; ## This does too
#$memberName = $groupMemberUser->Name();
#push(@rtMembers, $memberName);
}
–/code–

What it seems is that GroupObj->MembersObj()->Next()->UserObj() causes
the problem, as UserObj() returns, not a UserObject, but a string
stating “No object mapping for field” Attempting to use the Name()
function of course doesn’t work because “No object…”->Name() doesn’t
make sense… What’s going on?

Thanks,
Johnathan


Johnathan Bell
Internet System Administrator, Baker College


http://lists.bestpractical.com/cgi-bin/mailman/listinfo/rt-users

Community help: http://wiki.bestpractical.com
Commercial support: sales@bestpractical.com

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


Best regards, Ruslan.


Johnathan Bell
Internet System Administrator, Baker College


Johnathan Bell
810.766.4097

Office Hours: 7A-4P, M-F
Internet System Administrator, Baker College


http://lists.bestpractical.com/cgi-bin/mailman/listinfo/rt-users

Community help: http://wiki.bestpractical.com
Commercial support: sales@bestpractical.com

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

Best regards, Ruslan.