Mercurial > kallithea
comparison rhodecode/model/changeset_status.py @ 2440:1bc579bcd67a codereview
- pull request generates overview based on it's params
- added page to show all pull-requests for a repository
- db schema changes to support comments and inline comments for pull-requests
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Sun, 10 Jun 2012 18:15:00 +0200 |
parents | d3ac7491a5c8 |
children | fd0a822481ec |
comparison
equal
deleted
inserted
replaced
2439:ad19dfcdb1cc | 2440:1bc579bcd67a |
---|---|
24 | 24 |
25 | 25 |
26 import logging | 26 import logging |
27 | 27 |
28 from rhodecode.model import BaseModel | 28 from rhodecode.model import BaseModel |
29 from rhodecode.model.db import ChangesetStatus | 29 from rhodecode.model.db import ChangesetStatus, PullRequest |
30 | 30 |
31 log = logging.getLogger(__name__) | 31 log = logging.getLogger(__name__) |
32 | 32 |
33 | 33 |
34 class ChangesetStatusModel(BaseModel): | 34 class ChangesetStatusModel(BaseModel): |
35 | 35 |
36 def __get_changeset_status(self, changeset_status): | 36 def __get_changeset_status(self, changeset_status): |
37 return self._get_instance(ChangesetStatus, changeset_status) | 37 return self._get_instance(ChangesetStatus, changeset_status) |
38 | 38 |
39 def get_status(self, repo, revision): | 39 def __get_pull_request(self, pull_request): |
40 return self._get_instance(PullRequest, pull_request) | |
41 | |
42 def get_status(self, repo, revision=None, pull_request=None): | |
40 """ | 43 """ |
41 Returns status of changeset for given revision and version 0 | 44 Returns latest status of changeset for given revision or for given |
42 versioning makes a history of statuses, and version == 0 is always the | 45 pull request. Statuses are versioned inside a table itself and |
43 current one | 46 version == 0 is always the current one |
44 | 47 |
45 :param repo: | 48 :param repo: |
46 :type repo: | 49 :type repo: |
47 :param revision: 40char hash | 50 :param revision: 40char hash or None |
48 :type revision: str | 51 :type revision: str |
52 :param pull_request: pull_request reference | |
53 :type: | |
49 """ | 54 """ |
50 repo = self._get_repo(repo) | 55 repo = self._get_repo(repo) |
51 | 56 |
52 status = ChangesetStatus.query()\ | 57 q = ChangesetStatus.query()\ |
53 .filter(ChangesetStatus.repo == repo)\ | 58 .filter(ChangesetStatus.repo == repo)\ |
54 .filter(ChangesetStatus.revision == revision)\ | 59 .filter(ChangesetStatus.version == 0) |
55 .filter(ChangesetStatus.version == 0).scalar() | 60 |
61 if revision: | |
62 q = q.filter(ChangesetStatus.revision == revision) | |
63 elif pull_request: | |
64 pull_request = self.__get_pull_request(pull_request) | |
65 q = q.filter(ChangesetStatus.pull_request == pull_request) | |
66 else: | |
67 raise Exception('Please specify revision or pull_request') | |
68 | |
69 status = q.scalar() | |
56 status = status.status if status else status | 70 status = status.status if status else status |
57 st = status or ChangesetStatus.DEFAULT | 71 st = status or ChangesetStatus.DEFAULT |
58 return str(st) | 72 return str(st) |
59 | 73 |
60 def set_status(self, repo, revision, status, user, comment): | 74 def set_status(self, repo, revision, status, user, comment): |