; enterprise-review-workflow.ini
; Add CodeReviewActionController to the workflow option in [ticket].  If there
; is no workflow option, the line will look like this:
; workflow = ConfigurableTicketWorkflow,CodeReviewActionController


[ticket-workflow]

; assign, reassign, unassign actions
assign = new -> assigned
assign.operations = set_owner
assign.permissions = TICKET_MODIFY

reassign = assigned,in_work -> assigned
reassign.operations = set_owner
reassign.permissions = TICKET_MODIFY

reassign_closed = closed -> closed
reassign_closed.name = reassign
reassign_closed.operations = set_owner
reassign_closed.permissions = TICKET_MODIFY

unassign = assigned,in_work -> new
unassign.operations = del_owner
unassign.permissions = TICKET_MODIFY

; leave actions
leave = * -> *
leave.operations = leave_status
leave.default = 1

; resolve actions
resolve = in_QA -> closed
resolve.operations = set_resolution
resolve.permissions = TICKET_MODIFY

fail = in_QA -> assigned
fail.permissions = TICKET_MODIFY

; start/stop actions
start = assigned -> in_work
start.operations = set_owner_to_self
start.permissions = TICKET_MODIFY

stop = in_work -> assigned
stop.permissions = TICKET_MODIFY

; reopen actions
reopen = closed -> new
reopen.operations = del_resolution
reopen.permissions = TICKET_CREATE

; needinfo actions
; For tickets with an owner, they go back to assigned
needinfo = assigned,in_work,in_QA -> needinfo
needinfo.permissions = TICKET_MODIFY

infoprovided = needinfo -> assigned
infoprovided.permissions = TICKET_MODIFY
infoprovided.default = 2

; But tickets without an owner go back to new.
needinfo_new = new -> needinfo_new
needinfo_new.name = needinfo
needinfo_new.permissions = TICKET_MODIFY

infoprovided_new = needinfo_new -> new
infoprovided_new.permissions = TICKET_MODIFY
infoprovided_new.default = 2

; review actions
request_review = in_work -> in_review
request_review.name = request review

review = in_review -> *
review.operations = code_review,hidden
; A reviewer can approve the work as-is, approve the work with a few things
; that need touched-up, but that won't need further review, or request changes
; significant enough that another review will be needed.
review.code_review = approve -> in_QA, 
                     approve as noted -> post_review, 
                     request changes -> in_work
review.permissions = TICKET_REVIEW

submit_to_test = post_review -> in_QA
submit_to_test.name = submit to test

