# HG changeset patch # User Marcin Kuzminski # Date 1349283760 -7200 # Node ID eb180eb16c18a1982797c88ea062f3136f42775d # Parent 5fba3778431cf7279a78cf247541e9e98394309e Fixed #585, checks for status of revision where to strict, and made opening pull request with those revision impossible due to previosly set status. Checks now are made also for the repository. diff -r 5fba3778431c -r eb180eb16c18 rhodecode/controllers/pullrequests.py --- a/rhodecode/controllers/pullrequests.py Wed Oct 03 18:41:57 2012 +0200 +++ b/rhodecode/controllers/pullrequests.py Wed Oct 03 19:02:40 2012 +0200 @@ -172,8 +172,9 @@ @NotAnonymous() def create(self, repo_name): + repo = RepoModel()._get_repo(repo_name) try: - _form = PullRequestForm()().to_python(request.POST) + _form = PullRequestForm(repo.repo_id)().to_python(request.POST) except formencode.Invalid, errors: log.error(traceback.format_exc()) if errors.error_dict.get('revisions'): diff -r 5fba3778431c -r eb180eb16c18 rhodecode/model/forms.py --- a/rhodecode/model/forms.py Wed Oct 03 18:41:57 2012 +0200 +++ b/rhodecode/model/forms.py Wed Oct 03 19:02:40 2012 +0200 @@ -327,7 +327,7 @@ return _UserExtraEmailForm -def PullRequestForm(): +def PullRequestForm(repo_id): class _PullRequestForm(formencode.Schema): allow_extra_fields = True filter_extra_fields = True @@ -337,7 +337,7 @@ 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()(), 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 -r 5fba3778431c -r eb180eb16c18 rhodecode/model/validators.py --- a/rhodecode/model/validators.py Wed Oct 03 18:41:57 2012 +0200 +++ b/rhodecode/model/validators.py Wed Oct 03 19:02:40 2012 +0200 @@ -666,7 +666,7 @@ return _validator -def NotReviewedRevisions(): +def NotReviewedRevisions(repo_id): class _validator(formencode.validators.FancyValidator): messages = { 'rev_already_reviewed': @@ -678,7 +678,10 @@ # check revisions if they are not reviewed, or a part of another # pull request statuses = ChangesetStatus.query()\ - .filter(ChangesetStatus.revision.in_(value)).all() + .filter(ChangesetStatus.revision.in_(value))\ + .filter(ChangesetStatus.repo_id == repo_id)\ + .all() + errors = [] for cs in statuses: if cs.pull_request_id: