comparison rhodecode/model/__init__.py @ 2521:e4d2271e1193 beta

Added get_all method to BaseModel, requires to define cls variable in child models
author Marcin Kuzminski <marcin@python-works.com>
date Sun, 01 Jul 2012 12:40:00 +0200
parents d3ac7491a5c8
children 169807710db2
comparison
equal deleted inserted replaced
2520:a1e156503afe 2521:e4d2271e1193
40 # 40 #
41 # You should have received a copy of the GNU General Public License 41 # You should have received a copy of the GNU General Public License
42 # along with this program. If not, see <http://www.gnu.org/licenses/>. 42 # along with this program. If not, see <http://www.gnu.org/licenses/>.
43 43
44 import logging 44 import logging
45 from rhodecode.model.db import User, Repository, Permission
46 from rhodecode.model import meta 45 from rhodecode.model import meta
47 46
48 log = logging.getLogger(__name__) 47 log = logging.getLogger(__name__)
49 48
50 49
66 into instance of model 65 into instance of model
67 66
68 :param sa: If passed it reuses this session instead of creating a new one 67 :param sa: If passed it reuses this session instead of creating a new one
69 """ 68 """
70 69
70 cls = None # override in child class
71
71 def __init__(self, sa=None): 72 def __init__(self, sa=None):
72 if sa is not None: 73 if sa is not None:
73 self.sa = sa 74 self.sa = sa
74 else: 75 else:
75 self.sa = meta.Session 76 self.sa = meta.Session()
76 77
77 def _get_instance(self, cls, instance, callback=None): 78 def _get_instance(self, cls, instance, callback=None):
78 """ 79 """
79 Get's instance of given cls using some simple lookup mechanism. 80 Get's instance of given cls using some simple lookup mechanism.
80 81
102 Helper method to get user by ID, or username fallback 103 Helper method to get user by ID, or username fallback
103 104
104 :param user: 105 :param user:
105 :type user: UserID, username, or User instance 106 :type user: UserID, username, or User instance
106 """ 107 """
108 from rhodecode.model.db import User
107 return self._get_instance(User, user, 109 return self._get_instance(User, user,
108 callback=User.get_by_username) 110 callback=User.get_by_username)
109 111
110 def _get_repo(self, repository): 112 def _get_repo(self, repository):
111 """ 113 """
112 Helper method to get repository by ID, or repository name 114 Helper method to get repository by ID, or repository name
113 115
114 :param repository: 116 :param repository:
115 :type repository: RepoID, repository name or Repository Instance 117 :type repository: RepoID, repository name or Repository Instance
116 """ 118 """
119 from rhodecode.model.db import Repository
117 return self._get_instance(Repository, repository, 120 return self._get_instance(Repository, repository,
118 callback=Repository.get_by_repo_name) 121 callback=Repository.get_by_repo_name)
119 122
120 def _get_perm(self, permission): 123 def _get_perm(self, permission):
121 """ 124 """
122 Helper method to get permission by ID, or permission name 125 Helper method to get permission by ID, or permission name
123 126
124 :param permission: 127 :param permission:
125 :type permission: PermissionID, permission_name or Permission instance 128 :type permission: PermissionID, permission_name or Permission instance
126 """ 129 """
130 from rhodecode.model.db import Permission
127 return self._get_instance(Permission, permission, 131 return self._get_instance(Permission, permission,
128 callback=Permission.get_by_key) 132 callback=Permission.get_by_key)
133
134 def get_all(self):
135 """
136 Returns all instances of what is defined in `cls` class variable
137 """
138 return self.cls.getAll()