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