diff --git a/rhodecode/controllers/pullrequests.py b/rhodecode/controllers/pullrequests.py
--- a/rhodecode/controllers/pullrequests.py
+++ b/rhodecode/controllers/pullrequests.py
@@ -224,6 +224,7 @@ class PullrequestsController(BaseRepoCon
h.flash(_('Successfully opened new pull request'),
category='success')
except Exception:
+ raise
h.flash(_('Error occurred during sending pull request'),
category='error')
log.error(traceback.format_exc())
diff --git a/rhodecode/model/changeset_status.py b/rhodecode/model/changeset_status.py
--- a/rhodecode/model/changeset_status.py
+++ b/rhodecode/model/changeset_status.py
@@ -111,22 +111,17 @@ class ChangesetStatusModel(BaseModel):
st = status or ChangesetStatus.DEFAULT
return str(st)
- def set_status(self, repo, status, user, comment, revision=None,
+ def set_status(self, repo, status, user, comment=None, revision=None,
pull_request=None, dont_allow_on_closed_pull_request=False):
"""
Creates new status for changeset or updates the old ones bumping their
version, leaving the current status at
:param repo:
- :type repo:
:param revision:
- :type revision:
:param status:
- :type status:
:param user:
- :type user:
:param comment:
- :type comment:
:param dont_allow_on_closed_pull_request: don't allow a status change
if last status was for pull request and it's closed. We shouldn't
mess around this manually
@@ -134,14 +129,21 @@ class ChangesetStatusModel(BaseModel):
repo = self._get_repo(repo)
q = ChangesetStatus.query()
-
+ if not comment:
+ from rhodecode.model.comment import ChangesetCommentsModel
+ comment = ChangesetCommentsModel().create(
+ text='Auto status change',
+ repo=repo,
+ user=user,
+ pull_request=pull_request,
+ )
if revision:
q = q.filter(ChangesetStatus.repo == repo)
q = q.filter(ChangesetStatus.revision == revision)
elif pull_request:
pull_request = self.__get_pull_request(pull_request)
q = q.filter(ChangesetStatus.repo == pull_request.org_repo)
- q = q.filter(ChangesetStatus.pull_request == pull_request)
+ q = q.filter(ChangesetStatus.revision.in_(pull_request.revisions))
cur_statuses = q.all()
#if statuses exists and last is associated with a closed pull request
@@ -153,6 +155,7 @@ class ChangesetStatusModel(BaseModel):
'Changing status on closed pull request is not allowed'
)
+ #update all current statuses with older version
if cur_statuses:
for st in cur_statuses:
st.version += 1
diff --git a/rhodecode/model/forms.py b/rhodecode/model/forms.py
--- a/rhodecode/model/forms.py
+++ b/rhodecode/model/forms.py
@@ -365,7 +365,8 @@ def PullRequestForm(repo_id):
org_ref = v.UnicodeString(strip=True, required=True)
other_repo = v.UnicodeString(strip=True, required=True)
other_ref = v.UnicodeString(strip=True, required=True)
- revisions = All(v.NotReviewedRevisions(repo_id)(), v.UniqueList(not_empty=True))
+ revisions = All(#v.NotReviewedRevisions(repo_id)(),
+ v.UniqueList(not_empty=True))
review_members = v.UniqueList(not_empty=True)
pullrequest_title = v.UnicodeString(strip=True, required=True, min=3)
diff --git a/rhodecode/model/pull_request.py b/rhodecode/model/pull_request.py
--- a/rhodecode/model/pull_request.py
+++ b/rhodecode/model/pull_request.py
@@ -33,7 +33,8 @@ from pylons.i18n.translation import _
from rhodecode.model.meta import Session
from rhodecode.lib import helpers as h
from rhodecode.model import BaseModel
-from rhodecode.model.db import PullRequest, PullRequestReviewers, Notification
+from rhodecode.model.db import PullRequest, PullRequestReviewers, Notification,\
+ ChangesetStatus
from rhodecode.model.notification import NotificationModel
from rhodecode.lib.utils2 import safe_unicode
@@ -54,8 +55,9 @@ class PullRequestModel(BaseModel):
repo = self._get_repo(repo)
return PullRequest.query().filter(PullRequest.other_repo == repo).all()
- def create(self, created_by, org_repo, org_ref, other_repo,
- other_ref, revisions, reviewers, title, description=None):
+ def create(self, created_by, org_repo, org_ref, other_repo, other_ref,
+ revisions, reviewers, title, description=None):
+ from rhodecode.model.changeset_status import ChangesetStatusModel
created_by_user = self._get_user(created_by)
org_repo = self._get_repo(org_repo)
@@ -78,6 +80,14 @@ class PullRequestModel(BaseModel):
reviewer = PullRequestReviewers(_usr, new)
self.sa.add(reviewer)
+ #reset state to under-review
+ ChangesetStatusModel().set_status(
+ repo=org_repo,
+ status=ChangesetStatus.STATUS_UNDER_REVIEW,
+ user=created_by_user,
+ pull_request=new
+ )
+
#notification to reviewers
notif = NotificationModel()
diff --git a/rhodecode/templates/pullrequests/pullrequest_show.html b/rhodecode/templates/pullrequests/pullrequest_show.html
--- a/rhodecode/templates/pullrequests/pullrequest_show.html
+++ b/rhodecode/templates/pullrequests/pullrequest_show.html
@@ -65,7 +65,7 @@
${c.pull_request.org_ref_parts[0]}
:
${c.pull_request.org_ref_parts[1]}
- ${c.pull_request.org_repo.clone_url()}
+ ${c.pull_request.org_repo.clone_url()}