
trs at bestpractical
Jul 26, 2012, 6:37 PM
Post #1 of 1
(87 views)
Permalink
|
|
rt branch, 4.0/document-initialdata, updated. rt-4.0.6-253-gc3a8c50
|
|
The branch, 4.0/document-initialdata has been updated via c3a8c50532b13baf8b95879a63fdea3f2b660db1 (commit) from 7d0959370c9fe1192dab55c4f3f605477b6fc653 (commit) Summary of changes: docs/initialdata.pod | 47 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 46 insertions(+), 1 deletion(-) - Log ----------------------------------------------------------------- commit c3a8c50532b13baf8b95879a63fdea3f2b660db1 Author: Thomas Sibley <trs [at] bestpractical> Date: Thu Jul 26 18:37:50 2012 -0700 Note the most frustrating current limitations of initialdata files See also http://issues.bestpractical.com/Ticket/Display.html?id=20564 diff --git a/docs/initialdata.pod b/docs/initialdata.pod index 46415fc..c45c59f 100644 --- a/docs/initialdata.pod +++ b/docs/initialdata.pod @@ -89,6 +89,44 @@ array ref. Each value should be a user-defined group name or hashref to pass into L<< RT::Group->LoadByCols >>. Each group found will have the new group added as a member. +Unfortunately you can't specify the I<members> of a group at this time. As a +workaround, you can push a subref into C<@Final> which adds members to your new +groups. An example, using a convenience function to avoid repeating yourself: + + push @Final, sub { + add_members('My New Group Name' => qw(trs alex ruslan)); + add_members('My Second Group' => qw(jesse kevin sunnavy jim)); + }; + + sub add_members { + my $group_name = shift; + my @members = @_; + + my $group = RT::Group->new( RT->SystemUser ); + $group->LoadUserDefinedGroup($group_name); + + if ($group->id) { + for my $name (@members) { + my $member = RT::User->new( RT->SystemUser ); + $member->LoadByCols( Name => $name ); + + unless ($member->Id) { + RT->Logger->error("Unable to find user '$name'"); + next; + } + + my ($ok, $msg) = $group->AddMember( $member->PrincipalObj->Id ); + if ($ok) { + RT->Logger->info("Added member $name to $group_name"); + } else { + RT->Logger->error("Unable to AddMember $name to $group_name: $msg"); + } + } + } else { + RT->Logger->error("Unable to find group '$group_name'!"); + } + } + =head2 C<@Queues> push @Queues, { @@ -276,7 +314,9 @@ Specifying none of the above will get you a global right. =back There is currently no way to grant rights on a group or article class level. -Note that you can grant rights B<to> a group; see below. +Note that you can grant rights B<to> a group; see below. If you need to grants +rights on a group or article class level, you'll need to write an C<@Final> +subref to handle it using the RT Perl API. =head3 Pick a Principal: User or Group or Role @@ -420,6 +460,11 @@ expected to be arrays of subrefs (usually anonymous) like so: You have the full power of RT's Perl libraries at your disposal. Be sure to do error checking and log any errors with C<< RT->Logger->error("...") >>! +=head1 What's missing? + +There is currently no way, short of writing code in C<@Final> or C<@Initial>, +to easily create B<Classes>, B<Topics>, or B<Articles> from initialdata files. + =head1 Running an initialdata file sbin/rt-setup-database --action insert --datafile /path/to/your/initialdata ----------------------------------------------------------------------- _______________________________________________ Rt-commit mailing list Rt-commit [at] lists http://lists.bestpractical.com/cgi-bin/mailman/listinfo/rt-commit
|