@@ -107,24 +107,36 @@ def review_request(request, name, request_id):
107107 review_req = get_object_or_404 (ReviewRequest , pk = request_id )
108108
109109 is_reviewer = review_req .reviewer and user_is_person (request .user , review_req .reviewer .person )
110- can_manage_req = can_manage_review_requests_for_team (request .user , review_req .team )
110+ can_manage_request = can_manage_review_requests_for_team (request .user , review_req .team )
111111
112112 can_withdraw_request = (review_req .state_id in ["requested" , "accepted" ]
113- and is_authorized_in_doc_stream (request .user , doc ))
113+ and (is_authorized_in_doc_stream (request .user , doc )
114+ or can_manage_request ))
114115
115116 can_assign_reviewer = (review_req .state_id in ["requested" , "accepted" ]
116117 and is_authorized_in_doc_stream (request .user , doc ))
117118
119+ can_accept_reviewer_assignment = (review_req .state_id == "requested"
120+ and review_req .reviewer_id is not None
121+ and (is_reviewer or can_manage_request ))
122+
118123 can_reject_reviewer_assignment = (review_req .state_id in ["requested" , "accepted" ]
119124 and review_req .reviewer_id is not None
120- and (is_reviewer or can_manage_req ))
125+ and (is_reviewer or can_manage_request ))
126+
127+ if request .method == "POST" and request .POST .get ("action" ) == "accept" and can_accept_reviewer_assignment :
128+ review_req .state = ReviewRequestStateName .objects .get (slug = "accepted" )
129+ review_req .save ()
130+
131+ return redirect (review_request , name = review_req .doc .name , request_id = review_req .pk )
121132
122133 return render (request , 'doc/review/review_request.html' , {
123134 'doc' : doc ,
124135 'review_req' : review_req ,
125136 'can_withdraw_request' : can_withdraw_request ,
126137 'can_reject_reviewer_assignment' : can_reject_reviewer_assignment ,
127138 'can_assign_reviewer' : can_assign_reviewer ,
139+ 'can_accept_reviewer_assignment' : can_accept_reviewer_assignment ,
128140 })
129141
130142def withdraw_request (request , name , request_id ):
@@ -183,9 +195,9 @@ def assign_reviewer(request, name, request_id):
183195 doc = get_object_or_404 (Document , name = name )
184196 review_req = get_object_or_404 (ReviewRequest , pk = request_id , state__in = ["requested" , "accepted" ])
185197
186- can_manage_req = can_manage_review_requests_for_team (request .user , review_req .team )
198+ can_manage_request = can_manage_review_requests_for_team (request .user , review_req .team )
187199
188- if not can_manage_req :
200+ if not can_manage_request :
189201 return HttpResponseForbidden ("You do not have permission to perform this action" )
190202
191203 if request .method == "POST" and request .POST .get ("action" ) == "assign" :
@@ -215,9 +227,9 @@ def reject_reviewer_assignment(request, name, request_id):
215227 return redirect (review_request , name = review_req .doc .name , request_id = review_req .pk )
216228
217229 is_reviewer = user_is_person (request .user , review_req .reviewer .person )
218- can_manage_req = can_manage_review_requests_for_team (request .user , review_req .team )
230+ can_manage_request = can_manage_review_requests_for_team (request .user , review_req .team )
219231
220- if not (is_reviewer or can_manage_req ):
232+ if not (is_reviewer or can_manage_request ):
221233 return HttpResponseForbidden ("You do not have permission to perform this action" )
222234
223235 if request .method == "POST" and request .POST .get ("action" ) == "reject" :
0 commit comments