Trac 0.11 – nur owner bzw. TRAC_ADMINs sollen tickets schließen (close)

In der aktuellen Trac Version 0.11 werden Aktionen wie assign, close mit Hilfe workflows definiert. So kann Trac Usern hier das Recht gegeben werden Tickets zu modifizieren (TICKET_MODIFY) oder zu verwalten(TICKET_ADMIN) etc. . Leider ist es derzeit nicht möglich Rechte zu definieren, die nur für „Ticketbezogene“ User gelten. Ist z.B. die permission = TICKET_ADMIN bei einem close workflow gesetzt, so können nur noch User mit TICKET_ADMIN Berechtigung Tickets schließen. Hat aber jemand TICKET_ADMIN Berechtigung, so kann er diese Aktion für jedes Ticket durchführen, was wohl nicht immer erwünscht ist.

In meinem konkreten Fall sollte nur der Owner, bzw ein TICKET_ADMIN ein Ticket schließen können. Durch eine Anpassung im File default_workflow.py wurde das gewünschte Verhalten ermöglicht. Folgende Zeile ist zu ändern:

@@ -184,7 +184,7 @@
required_perms = action_info[‚permissions‘]
if required_perms:
for permission in required_perms:
–                        if permission in req.perm(ticket.resource):
+                        if permission in req.perm(ticket.resource) or ticket[‚owner‘] == req.authname:
allowed = 1
break
else:

Danach reicht es im Konfigurationsfile (trac.ini) des jeweiligen Projektes  z.B. bei einer close Aktion:

pass = * -> closed
pass.name = Close ticket
pass.permissions = TRAC_ADMIN

den TRAC_ADMIN unter permissions einzutragen. Ab sofort können nur noch owner und TICKET_ADMINs ein Ticket schließen.

Das Ganze lässt natürlich Spielraum für weitere Optimierungen, z.B. das Verwalten dieser speziellen Berechtigung via Admin Template.

Schreibe einen Kommentar

Post Navigation