On Monday, November 17, 2014 10:42:56 PM UTC-8, NS wrote:
>
> Guys, I want to know how can I limit few of my trac users, so that they 
> will have limited permissions on ticket assigning? 
>
> Basically, It's like this....We have 4 user groups as;
>
>
> Super Admin - John
> Engineer Admin - Jane, Jack, 
> Engineer - Peter, Sam, 
> Quality Assurance - Bill, Steve, Rose
> This is how our main daily routine goes, 
>
> * Enginner Admins can create tickets and assign it to any of the other member 
> so they will work on it.
> * Engineers don't actually create anything, but in some cases they will 
> create.
> * QA team tests the product and create new tickets for bugs...and they assign 
> it to anyone they want.
>
> So with basic features we have in Trac, this is all fine..But now, the time 
> has come to limit these QA guys because it's not going easy anymore when they 
> assign any one they want.
>
> Instead, I want them to be able to assign only to Jane or Jack, who is in the 
> Engineer Admin group. (If I add anyone to Eng. admin group in future, they 
> should be able to assign him/her to too)
>
> Then Jane or Jack will assign the ticket to the relevant Enginner who is in 
> the Engineer Group.
>
> How can I get this done?
>
> I tried many ways like custom permission, workflows and so on..But had no 
> luck so far. I hope somebody can help me soon.
>
> Thanks in advance!!!!!!!
>
>

I'll attempt to clarify the previously described recipe. I ran through 
these steps on a clean Trac instance with Trac 1.0.1.

Here is what I understand your requirements to be:
 - Users in all 4 groups can create tickets.
 - Users in the Super Admin, Engineer Admin and Engineer groups can assign 
a ticket to anyone.
 - Users in the Quality Assurance group can only assign to users in the 
Engineer Admin group.

1. Enable ExtraPermissionsProvider

Navigate to Admin tab, then General > Plugins (url is /admin/general/plugin)


<https://lh3.googleusercontent.com/-YMuy8HJ2JZ4/VGtNA9h4CEI/AAAAAAAAB5Y/OlOXa9JT3l8/s1600/ExtraPermissionsProvider.png>


Or you can enable by directly editing trac.ini:

[components]
tracopt.perm.config_perm_provider.extrapermissionsprovider = enabled


2. Define permission by directly editing trac.ini:

[extra-permissions]
_perms = TICKET_ASSIGN_QA, TICKET_ASSIGN


3. Edit [ticket-workflow] in trac.ini

Started with the basic default workflow,

[ticket-workflow]
accept = new,assigned,accepted,reopened -> accepted
accept.operations = set_owner_to_self
accept.permissions = TICKET_MODIFY
leave = * -> *
leave.default = 1
leave.operations = leave_status
reassign = new,assigned,accepted,reopened -> assigned
reassign.operations = set_owner
reassign.permissions = TICKET_MODIFY
reopen = closed -> reopened
reopen.operations = del_resolution
reopen.permissions = TICKET_CREATE
resolve = new,assigned,accepted,reopened -> closed
resolve.operations = set_resolution
resolve.permissions = TICKET_MODIFY


Added special actions for the QA group and modified the permissions for the 
existing actions:

[ticket-workflow]
accept = new,assigned,accepted,reopened -> accepted
accept.operations = set_owner_to_self
accept.permissions = TICKET_ASSIGN
leave = * -> *
leave.default = 1
leave.operations = leave_status
reassign = new,assigned,accepted,reopened -> assigned
reassign.operations = set_owner
reassign.permissions = TICKET_ASSIGN
reopen = closed -> reopened
reopen.operations = del_resolution
reopen.permissions = TICKET_CREATE
resolve = new,assigned,accepted,reopened -> closed
resolve.operations = set_resolution
resolve.permissions = TICKET_MODIFY
qa_reassign = new,assigned,accepted,reopened -> assigned
qa_reassign.name = reassign
qa_reassign.operations = set_owner
qa_reassign.permissions = TICKET_ASSIGN_QA
qa_reassign.set_owner = Jane, Jack


4. Groups - it sounds like you've already defined these and I tried to copy 
what you have. Here it is for reference:

<https://lh6.googleusercontent.com/-Gtz-FAf1w6A/VGtQSbp1uzI/AAAAAAAAB5k/QyjbkOuVv5M/s1600/GroupMembership.png>


5. Permissions

I started with the default permission scheme.

a. Give the Super Admin, Engineer Admin and Engineer groups the 
TICKET_ASSIGN permission. I took for your description that those groups 
should be able to create tickets and assign to anyone.

b. Give the Quality Assurance group the TICKET_ASSIGN_QA permission. This 
will give them limited assign-to ability, but they will be able to create 
any tickets.

<https://lh3.googleusercontent.com/-wY8seeKtO-E/VGtYahLpt3I/AAAAAAAAB6E/NkVX4ng3kos/s1600/Permissions.png>




Here is a demonstration. I'm logged in as Steve and created a new ticket. 
The workflow dialog shows:

<https://lh3.googleusercontent.com/-1qkDHcZA_ac/VGtS0POHe7I/AAAAAAAAB5w/jVqbcVY3P4Q/s1600/QaActions.png>
The assign-to select element contains just two users: Jack and Jane. When 
additional users are added to the Engineer Admin group in the future the 
qa_reassign.set_owner list in the [ticket-workflow] section will need to be 
edited to add those users. This would all be a bit nicer if a group could 
be specified for qa_reassign.set_owner, but Trac doesn't allow that yet. 
Maybe the aforementioned GroupingAssignToPlugin can help with that, I'm not 
sure. For a small scale operation in which you aren't adding new users too 
often I wouldn't expect this to be much of an issue, just document the 
steps to be done when adding users to groups.

You also said "Then Jane or Jack will assign the ticket to the relevant 
Enginner who is in the Engineer Group.". If you want to restrict the list 
of users that Jane and Jack see in the assign-to list, you would follow the 
same steps as above to create a new assign-to permission, and a new 
workflow action that applies only to users with that permission.

When logged in as Jane I can assign to anyone. If you have [ticket] 
restrict_owner = True you'll see a list of all users rather than a simple 
input box.

<https://lh5.googleusercontent.com/-Rj9MAbelkq4/VGtT0FnZRTI/AAAAAAAAB54/NU0GBCS0vJI/s1600/ActionsJane.png>


References:
 * http://trac.edgewall.org/wiki/ExtraPermissionsProvider
 * http://trac.edgewall.org/wiki/TracWorkflow
 * 
http://stackoverflow.com/questions/26965933/trac-limited-assign-permissions/26970812#26970812

-- 
You received this message because you are subscribed to the Google Groups "Trac 
Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/trac-users.
For more options, visit https://groups.google.com/d/optout.

Reply via email to