comparison kallithea/model/changeset_status.py @ 7429:471b29a2f302

model: changeset_status: remove support for 'dont_allow_on_closed_pull_request' and 'StatusChangeOnClosedPullRequestError' Previous commit removed the only usage of this parameter and exception.
author Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
date Sat, 10 Nov 2018 21:35:54 +0100
parents 7691290837d2
children 0a277465fddf
comparison
equal deleted inserted replaced
7428:9de5c174a37c 7429:471b29a2f302
27 27
28 import logging 28 import logging
29 from sqlalchemy.orm import joinedload 29 from sqlalchemy.orm import joinedload
30 30
31 from kallithea.model.db import ChangesetStatus, PullRequest, Repository, User, Session 31 from kallithea.model.db import ChangesetStatus, PullRequest, Repository, User, Session
32 from kallithea.lib.exceptions import StatusChangeOnClosedPullRequestError
33 32
34 log = logging.getLogger(__name__) 33 log = logging.getLogger(__name__)
35 34
36 35
37 class ChangesetStatusModel(object): 36 class ChangesetStatusModel(object):
131 if as_str: 130 if as_str:
132 return str(status.status) if status else ChangesetStatus.DEFAULT 131 return str(status.status) if status else ChangesetStatus.DEFAULT
133 return status 132 return status
134 133
135 def set_status(self, repo, status, user, comment, revision=None, 134 def set_status(self, repo, status, user, comment, revision=None,
136 pull_request=None, dont_allow_on_closed_pull_request=False): 135 pull_request=None):
137 """ 136 """
138 Creates new status for changeset or updates the old ones bumping their 137 Creates new status for changeset or updates the old ones bumping their
139 version, leaving the current status at the value of 'status'. 138 version, leaving the current status at the value of 'status'.
140 139
141 :param repo: 140 :param repo:
142 :param status: 141 :param status:
143 :param user: 142 :param user:
144 :param comment: 143 :param comment:
145 :param revision: 144 :param revision:
146 :param pull_request: 145 :param pull_request:
147 :param dont_allow_on_closed_pull_request: don't allow a status change
148 if last status was for pull request and it's closed. We shouldn't
149 mess around this manually
150 """ 146 """
151 repo = Repository.guess_instance(repo) 147 repo = Repository.guess_instance(repo)
152 148
153 q = ChangesetStatus.query() 149 q = ChangesetStatus.query()
154 if revision is not None: 150 if revision is not None:
163 q = q.filter(ChangesetStatus.repo == repo) 159 q = q.filter(ChangesetStatus.repo == repo)
164 q = q.filter(ChangesetStatus.revision.in_(pull_request.revisions)) 160 q = q.filter(ChangesetStatus.revision.in_(pull_request.revisions))
165 revisions = pull_request.revisions 161 revisions = pull_request.revisions
166 cur_statuses = q.all() 162 cur_statuses = q.all()
167 163
168 # if statuses exists and last is associated with a closed pull request
169 # we need to check if we can allow this status change
170 if (dont_allow_on_closed_pull_request and cur_statuses
171 and getattr(cur_statuses[0].pull_request, 'status', '')
172 == PullRequest.STATUS_CLOSED):
173 raise StatusChangeOnClosedPullRequestError(
174 'Changing status on closed pull request is not allowed'
175 )
176
177 # update all current statuses with older version 164 # update all current statuses with older version
178 for st in cur_statuses: 165 for st in cur_statuses:
179 st.version += 1 166 st.version += 1
180 167
181 new_statuses = [] 168 new_statuses = []