def update_issue_status(self, request, comment_resource, *args, **kwargs): """Updates the issue status for a comment. Handles all of the logic for updating an issue status. """ try: review_request = \ resources.review_request.get_object(request, *args, **kwargs) comment = comment_resource.get_object(request, *args, **kwargs) except ObjectDoesNotExist: return DOES_NOT_EXIST # Check permissions to change the issue status if not comment.can_change_issue_status(request.user): return self._no_access_error(request.user) # We can only update the status of an issue if an issue has been # opened if not comment.issue_opened: raise PermissionDenied # We can only update the status of the issue issue_status = \ BaseComment.issue_string_to_status(kwargs.get('issue_status')) comment.issue_status = issue_status comment.save() last_activity_time, updated_object = review_request.get_last_activity() comment.timestamp = localize(comment.timestamp) return 200, { comment_resource.item_result_key: comment, 'last_activity_time': last_activity_time.isoformat(), }
def update_issue_status(self, request, comment_resource, *args, **kwargs): """Updates the issue status for a comment. Handles all of the logic for updating an issue status. """ try: review_request = \ resources.review_request.get_object(request, *args, **kwargs) comment = comment_resource.get_object(request, *args, **kwargs) except ObjectDoesNotExist: return DOES_NOT_EXIST # Check permissions to change the issue status if not comment.can_change_issue_status(request.user): return self.get_no_access_error(request) # We can only update the status of an issue if an issue has been # opened if not comment.issue_opened: raise PermissionDenied comment._review_request = review_request # We can only update the status of the issue issue_status = \ BaseComment.issue_string_to_status(kwargs.get('issue_status')) comment.issue_status = issue_status comment.save(update_fields=['issue_status']) last_activity_time, updated_object = review_request.get_last_activity() return 200, { comment_resource.item_result_key: comment, 'last_activity_time': last_activity_time.isoformat(), }
def should_update_issue_status(self, comment, issue_status=None, issue_opened=None, **kwargs): """Returns True if the comment should have its issue status updated. Determines if a comment should have its issue status updated based on the current state of the comment, the review, and the arguments passed in the request. """ if not issue_status: return False issue_status = BaseComment.issue_string_to_status(issue_status) return (comment.review.get().public and (comment.issue_opened or issue_opened) and issue_status != comment.issue_status)
def update_issue_status(self, request, comment_resource, *args, **kwargs): """Updates the issue status for a comment. Handles all of the logic for updating an issue status. """ try: review_request = \ resources.review_request.get_object(request, *args, **kwargs) comment = comment_resource.get_object(request, *args, **kwargs) except ObjectDoesNotExist: return DOES_NOT_EXIST # Check permissions to change the issue status if not comment.can_change_issue_status(request.user): return self.get_no_access_error(request) # We can only update the status of an issue if an issue has been # opened if not comment.issue_opened: raise PermissionDenied comment._review_request = review_request issue_status = \ BaseComment.issue_string_to_status(kwargs.get('issue_status')) # If the issue requires verification, ensure that only people who are # authorized can close it. if (comment.require_verification and issue_status in (BaseComment.RESOLVED, BaseComment.DROPPED) and comment.issue_status in (BaseComment.OPEN, BaseComment.VERIFYING_RESOLVED, BaseComment.VERIFYING_DROPPED) and not comment.can_verify_issue_status(request.user)): return self.get_no_access_error(request) # We can only update the status of the issue comment.issue_status = issue_status comment.save(update_fields=['issue_status']) last_activity_time = \ review_request.get_last_activity_info()['timestamp'] return 200, { comment_resource.item_result_key: comment, 'last_activity_time': last_activity_time.isoformat(), }
def update_issue_status(self, request, comment_resource, *args, **kwargs): """Updates the issue status for a comment. Handles all of the logic for updating an issue status. """ try: review_request = \ resources.review_request.get_object(request, *args, **kwargs) comment = comment_resource.get_object(request, *args, **kwargs) except ObjectDoesNotExist: return DOES_NOT_EXIST # Check permissions to change the issue status if not comment.can_change_issue_status(request.user): return self.get_no_access_error(request) # We can only update the status of an issue if an issue has been # opened if not comment.issue_opened: raise PermissionDenied comment._review_request = review_request issue_status = \ BaseComment.issue_string_to_status(kwargs.get('issue_status')) # If the issue requires verification, ensure that only people who are # authorized can close it. if (comment.require_verification and issue_status in (BaseComment.RESOLVED, BaseComment.DROPPED) and comment.issue_status in (BaseComment.OPEN, BaseComment.VERIFYING_RESOLVED, BaseComment.VERIFYING_DROPPED) and not comment.can_verify_issue_status(request.user)): return self.get_no_access_error(request) # We can only update the status of the issue comment.issue_status = issue_status comment.save(update_fields=['issue_status']) last_activity_time, updated_object = review_request.get_last_activity() return 200, { comment_resource.item_result_key: comment, 'last_activity_time': last_activity_time.isoformat(), }