def reopen(self, user=None): """Reopens the review request for review.""" from reviewboard.reviews.models.review_request_draft import \ ReviewRequestDraft if (user and not self.is_mutable_by(user) and not user.has_perm( "reviews.can_change_status", self.local_site)): raise PermissionError old_status = self.status old_public = self.public if old_status != self.PENDING_REVIEW: # The reopening signal is only fired when actually making a status # change since the main consumers (extensions) probably only care # about changes. review_request_reopening.send(sender=self.__class__, user=user, review_request=self) changedesc = ChangeDescription(user=user or self.submitter) status_field = get_review_request_field('status')(self) status_field.record_change_entry(changedesc, old_status, self.PENDING_REVIEW) if old_status == self.DISCARDED: # A draft is needed if reopening a discarded review request. self.public = False changedesc.save() draft = ReviewRequestDraft.create(self) draft.changedesc = changedesc draft.save() else: changedesc.public = True changedesc.save() self.changedescs.add(changedesc) self.status = self.PENDING_REVIEW self.save(update_counts=True) review_request_reopened.send(sender=self.__class__, user=user, review_request=self, old_status=old_status, old_public=old_public)
def reopen(self, user=None): """Reopens the review request for review.""" from reviewboard.reviews.models.review_request_draft import \ ReviewRequestDraft if (user and not self.is_mutable_by(user) and not user.has_perm("reviews.can_change_status", self.local_site)): raise PermissionError old_status = self.status old_public = self.public if old_status != self.PENDING_REVIEW: # The reopening signal is only fired when actually making a status # change since the main consumers (extensions) probably only care # about changes. review_request_reopening.send(sender=self.__class__, user=user, review_request=self) changedesc = ChangeDescription(user=user or self.submitter) status_field = get_review_request_field('status')(self) status_field.record_change_entry(changedesc, old_status, self.PENDING_REVIEW) if old_status == self.DISCARDED: # A draft is needed if reopening a discarded review request. self.public = False changedesc.save() draft = ReviewRequestDraft.create(self) draft.changedesc = changedesc draft.save() else: changedesc.public = True changedesc.save() self.changedescs.add(changedesc) self.status = self.PENDING_REVIEW self.save(update_counts=True) review_request_reopened.send(sender=self.__class__, user=user, review_request=self, old_status=old_status, old_public=old_public)