Trac is being migrated to new services! Issues can be found in our new YouTrack instance and WIKI pages can be found on our website.

LocalTracChanges: ReporterClose.py

File ReporterClose.py, 1.4 KB (added by datallah, 15 years ago)

Plugin for 0.11 to enable additonal permissions for the ticket reporter

Line 
1
2from trac.core import implements, Component
3from trac.perm import IPermissionPolicy
4
5class ReporterCloseTicketPermissionPolicy(Component):
6    """Provides a the user who reported a ticket with the ability to close the
7       ticket and update the description and propertoes even if normally the
8       permissions wouldn't allow this.
9
10    Don't forget to add `ReporterCloseTicketPermissionPolicy` to the permission_policies
11    option in [trac].  You will also need to allow the 'resolve' action to take place for 'TICKET_CHGPROP'.
12   
13    The workflow
14    [trac]
15    permission_policies = DefaultPermissionPolicy,LegacyAttachmentPolicy,ReporterCloseTicketPermissionPolicy
16    """
17
18    implements(IPermissionPolicy)
19
20    # IPermissionPolicy methods
21    def check_permission(self, action, username, resource, perm):
22        if username != 'anonymous' and action in ['TICKET_CHGPROP', 'TICKET_EDIT_DESCRIPTION'] \
23                and resource.realm == 'ticket' and resource.id is not None:
24            db = self.env.get_db_cnx()
25            cursor = db.cursor()
26            cursor.execute("SELECT reporter, status FROM ticket WHERE id=%s",
27                           (resource.id,))
28            for reporter, status in cursor:
29                if status != 'closed' and reporter == username:
30                    return True
31
32        return None
33
All information, including names and email addresses, entered onto this website or sent to mailing lists affiliated with this website will be public. Do not post confidential information, especially passwords!