Mercurial > kallithea
comparison rhodecode/model/changeset_status.py @ 2432:d3ac7491a5c8 codereview
Share common getter functions in base model, and remove duplicated functions from other models
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Sat, 09 Jun 2012 20:23:48 +0200 |
parents | 8447d35b674e |
children | 1bc579bcd67a |
comparison
equal
deleted
inserted
replaced
2431:60dfc369df1d | 2432:d3ac7491a5c8 |
---|---|
22 # You should have received a copy of the GNU General Public License | 22 # You should have received a copy of the GNU General Public License |
23 # along with this program. If not, see <http://www.gnu.org/licenses/>. | 23 # along with this program. If not, see <http://www.gnu.org/licenses/>. |
24 | 24 |
25 | 25 |
26 import logging | 26 import logging |
27 import traceback | |
28 | 27 |
29 from pylons.i18n.translation import _ | |
30 | |
31 from rhodecode.lib.utils2 import safe_unicode | |
32 from rhodecode.model import BaseModel | 28 from rhodecode.model import BaseModel |
33 from rhodecode.model.db import ChangesetStatus, Repository, User | 29 from rhodecode.model.db import ChangesetStatus |
34 | 30 |
35 log = logging.getLogger(__name__) | 31 log = logging.getLogger(__name__) |
36 | 32 |
37 | 33 |
38 class ChangesetStatusModel(BaseModel): | 34 class ChangesetStatusModel(BaseModel): |
39 | 35 |
40 def __get_changeset_status(self, changeset_status): | 36 def __get_changeset_status(self, changeset_status): |
41 return self._get_instance(ChangesetStatus, changeset_status) | 37 return self._get_instance(ChangesetStatus, changeset_status) |
42 | |
43 def __get_repo(self, repository): | |
44 return self._get_instance(Repository, repository, | |
45 callback=Repository.get_by_repo_name) | |
46 | |
47 def __get_user(self, user): | |
48 return self._get_instance(User, user, callback=User.get_by_username) | |
49 | 38 |
50 def get_status(self, repo, revision): | 39 def get_status(self, repo, revision): |
51 """ | 40 """ |
52 Returns status of changeset for given revision and version 0 | 41 Returns status of changeset for given revision and version 0 |
53 versioning makes a history of statuses, and version == 0 is always the | 42 versioning makes a history of statuses, and version == 0 is always the |
56 :param repo: | 45 :param repo: |
57 :type repo: | 46 :type repo: |
58 :param revision: 40char hash | 47 :param revision: 40char hash |
59 :type revision: str | 48 :type revision: str |
60 """ | 49 """ |
61 repo = self.__get_repo(repo) | 50 repo = self._get_repo(repo) |
62 | 51 |
63 status = ChangesetStatus.query()\ | 52 status = ChangesetStatus.query()\ |
64 .filter(ChangesetStatus.repo == repo)\ | 53 .filter(ChangesetStatus.repo == repo)\ |
65 .filter(ChangesetStatus.revision == revision)\ | 54 .filter(ChangesetStatus.revision == revision)\ |
66 .filter(ChangesetStatus.version == 0).scalar() | 55 .filter(ChangesetStatus.version == 0).scalar() |
82 :param user: | 71 :param user: |
83 :type user: | 72 :type user: |
84 :param comment: | 73 :param comment: |
85 :type comment: | 74 :type comment: |
86 """ | 75 """ |
87 repo = self.__get_repo(repo) | 76 repo = self._get_repo(repo) |
88 | 77 |
89 cur_statuses = ChangesetStatus.query()\ | 78 cur_statuses = ChangesetStatus.query()\ |
90 .filter(ChangesetStatus.repo == repo)\ | 79 .filter(ChangesetStatus.repo == repo)\ |
91 .filter(ChangesetStatus.revision == revision)\ | 80 .filter(ChangesetStatus.revision == revision)\ |
92 .all() | 81 .all() |
93 if cur_statuses: | 82 if cur_statuses: |
94 for st in cur_statuses: | 83 for st in cur_statuses: |
95 st.version += 1 | 84 st.version += 1 |
96 self.sa.add(st) | 85 self.sa.add(st) |
97 new_status = ChangesetStatus() | 86 new_status = ChangesetStatus() |
98 new_status.author = self.__get_user(user) | 87 new_status.author = self._get_user(user) |
99 new_status.repo = self.__get_repo(repo) | 88 new_status.repo = self._get_repo(repo) |
100 new_status.status = status | 89 new_status.status = status |
101 new_status.revision = revision | 90 new_status.revision = revision |
102 new_status.comment = comment | 91 new_status.comment = comment |
103 self.sa.add(new_status) | 92 self.sa.add(new_status) |
104 return new_status | 93 return new_status |