Mercurial > kallithea
changeset 4360:05af189da2ae
pull requests: refactor ChangesetStatus set_status and ChangesetComment create
author | Mads Kiilerich <madski@unity3d.com> |
---|---|
date | Tue, 10 Dec 2013 19:30:37 +0100 |
parents | cfd9115db2a5 |
children | 348ecbd25577 |
files | kallithea/model/changeset_status.py kallithea/model/comment.py |
diffstat | 2 files changed, 23 insertions(+), 35 deletions(-) [+] |
line wrap: on
line diff
--- a/kallithea/model/changeset_status.py Tue Dec 10 19:30:37 2013 +0100 +++ b/kallithea/model/changeset_status.py Tue Dec 10 19:30:37 2013 +0100 @@ -132,10 +132,11 @@ version, leaving the current status at :param repo: - :param revision: :param status: :param user: :param comment: + :param revision: + :param pull_request: :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 @@ -143,13 +144,18 @@ repo = self._get_repo(repo) q = ChangesetStatus.query() - if revision: + if revision is not None: + assert pull_request is None q = q.filter(ChangesetStatus.repo == repo) q = q.filter(ChangesetStatus.revision == revision) - elif pull_request: + revisions = [revision] + else: + assert pull_request is not None pull_request = self.__get_pull_request(pull_request) - q = q.filter(ChangesetStatus.repo == pull_request.org_repo) + repo = pull_request.org_repo + q = q.filter(ChangesetStatus.repo == repo) q = q.filter(ChangesetStatus.revision.in_(pull_request.revisions)) + revisions = pull_request.revisions cur_statuses = q.all() #if statuses exists and last is associated with a closed pull request @@ -162,38 +168,20 @@ ) #update all current statuses with older version - if cur_statuses: - for st in cur_statuses: - st.version += 1 - self.sa.add(st) + for st in cur_statuses: + st.version += 1 + self.sa.add(st) - def _create_status(user, repo, status, comment, revision, pull_request): + new_statuses = [] + for rev in revisions: new_status = ChangesetStatus() new_status.version = 0 # default new_status.author = self._get_user(user) new_status.repo = self._get_repo(repo) new_status.status = status new_status.comment = comment - new_status.revision = revision + new_status.revision = rev new_status.pull_request = pull_request - return new_status - - if revision: - new_status = _create_status(user=user, repo=repo, status=status, - comment=comment, revision=revision, - pull_request=None) + new_statuses.append(new_status) self.sa.add(new_status) - return new_status - elif pull_request: - #pull request can have more than one revision associated to it - #we need to create new version for each one - new_statuses = [] - repo = pull_request.org_repo - for rev in pull_request.revisions: - new_status = _create_status(user=user, repo=repo, - status=status, comment=comment, - revision=rev, - pull_request=pull_request) - new_statuses.append(new_status) - self.sa.add(new_status) - return new_statuses + return new_statuses
--- a/kallithea/model/comment.py Tue Dec 10 19:30:37 2013 +0100 +++ b/kallithea/model/comment.py Tue Dec 10 19:30:37 2013 +0100 @@ -160,19 +160,19 @@ send_email=True): """ Creates new comment for changeset or pull request. - IF status_change is not none this comment is associated with a + If status_change is not None this comment is associated with a status change of changeset or changesets associated with pull request :param text: :param repo: :param user: :param revision: - :param pull_request: + :param pull_request: (for emails, not for comments) :param f_path: :param line_no: - :param status_change: - :param closing_pr: - :param send_email: + :param status_change: (for emails, not for comments) + :param closing_pr: (for emails, not for comments) + :param send_email: also send email """ if not text: log.warning('Missing text for comment, skipping...')