comparison rhodecode/model/db.py @ 972:2c8fd84935a4 beta

#56 implemented users groups editing, fixed sqlalchemy relation function into relationship (according to 0.6)
author Marcin Kuzminski <marcin@python-works.com>
date Fri, 28 Jan 2011 18:40:50 +0100
parents 72f008ed9b18
children f6658c70eeeb
comparison
equal deleted inserted replaced
971:c5868406fdb0 972:2c8fd84935a4
27 import logging 27 import logging
28 import datetime 28 import datetime
29 29
30 from sqlalchemy import * 30 from sqlalchemy import *
31 from sqlalchemy.exc import DatabaseError 31 from sqlalchemy.exc import DatabaseError
32 from sqlalchemy.orm import relation, backref, class_mapper 32 from sqlalchemy.orm import relationship, backref, class_mapper
33 from sqlalchemy.orm.session import Session 33 from sqlalchemy.orm.session import Session
34 34
35 from rhodecode.model.meta import Base 35 from rhodecode.model.meta import Base
36 36
37 log = logging.getLogger(__name__) 37 log = logging.getLogger(__name__)
105 lastname = Column("lastname", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None) 105 lastname = Column("lastname", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
106 email = Column("email", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None) 106 email = Column("email", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
107 last_login = Column("last_login", DateTime(timezone=False), nullable=True, unique=None, default=None) 107 last_login = Column("last_login", DateTime(timezone=False), nullable=True, unique=None, default=None)
108 is_ldap = Column("is_ldap", Boolean(), nullable=False, unique=None, default=False) 108 is_ldap = Column("is_ldap", Boolean(), nullable=False, unique=None, default=False)
109 109
110 user_log = relation('UserLog', cascade='all') 110 user_log = relationship('UserLog', cascade='all')
111 user_perms = relation('UserToPerm', primaryjoin="User.user_id==UserToPerm.user_id", cascade='all') 111 user_perms = relationship('UserToPerm', primaryjoin="User.user_id==UserToPerm.user_id", cascade='all')
112 112
113 repositories = relation('Repository') 113 repositories = relationship('Repository')
114 user_followers = relation('UserFollowing', primaryjoin='UserFollowing.follows_user_id==User.user_id', cascade='all') 114 user_followers = relationship('UserFollowing', primaryjoin='UserFollowing.follows_user_id==User.user_id', cascade='all')
115 115
116 @property 116 @property
117 def full_contact(self): 117 def full_contact(self):
118 return '%s %s <%s>' % (self.name, self.lastname, self.email) 118 return '%s %s <%s>' % (self.name, self.lastname, self.email)
119 119
148 repository_name = Column("repository_name", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None) 148 repository_name = Column("repository_name", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
149 user_ip = Column("user_ip", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None) 149 user_ip = Column("user_ip", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
150 action = Column("action", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None) 150 action = Column("action", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
151 action_date = Column("action_date", DateTime(timezone=False), nullable=True, unique=None, default=None) 151 action_date = Column("action_date", DateTime(timezone=False), nullable=True, unique=None, default=None)
152 152
153 user = relation('User') 153 user = relationship('User')
154 repository = relation('Repository') 154 repository = relationship('Repository')
155 155
156 156
157 class UsersGroup(Base, BaseModel): 157 class UsersGroup(Base, BaseModel):
158 __tablename__ = 'users_groups' 158 __tablename__ = 'users_groups'
159 __table_args__ = {'useexisting':True} 159 __table_args__ = {'useexisting':True}
160 160
161 users_group_id = Column("users_group_id", Integer(), nullable=False, unique=True, default=None, primary_key=True) 161 users_group_id = Column("users_group_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
162 users_group_name = Column("users_group_name", String(length=None, convert_unicode=False, assert_unicode=None), nullable=False, unique=True, default=None) 162 users_group_name = Column("users_group_name", String(length=None, convert_unicode=False, assert_unicode=None), nullable=False, unique=True, default=None)
163 users_group_active = Column("users_group_active", Boolean(), nullable=True, unique=None, default=None) 163 users_group_active = Column("users_group_active", Boolean(), nullable=True, unique=None, default=None)
164 164
165 members = relation('UsersGroupMember') 165 members = relationship('UsersGroupMember', cascade="all, delete, delete-orphan")
166 166
167 class UsersGroupMember(Base, BaseModel): 167 class UsersGroupMember(Base, BaseModel):
168 __tablename__ = 'users_groups_members' 168 __tablename__ = 'users_groups_members'
169 __table_args__ = {'useexisting':True} 169 __table_args__ = {'useexisting':True}
170 170
171 users_group_member_id = Column("users_group_member_id", Integer(), nullable=False, unique=True, default=None, primary_key=True) 171 users_group_member_id = Column("users_group_member_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
172 users_group_id = Column("users_group_id", Integer(), ForeignKey('users_groups.users_group_id'), nullable=False, unique=None, default=None) 172 users_group_id = Column("users_group_id", Integer(), ForeignKey('users_groups.users_group_id'), nullable=False, unique=None, default=None)
173 user_id = Column("user_id", Integer(), ForeignKey('users.user_id'), nullable=False, unique=None, default=None) 173 user_id = Column("user_id", Integer(), ForeignKey('users.user_id'), nullable=False, unique=None, default=None)
174 174
175 user = relation('User') 175 user = relationship('User')
176 users_group = relation('UsersGroup') 176 users_group = relationship('UsersGroup')
177
178 def __init__(self, gr_id, u_id):
179 self.users_group_id = gr_id
180 self.user_id = u_id
177 181
178 class Repository(Base, BaseModel): 182 class Repository(Base, BaseModel):
179 __tablename__ = 'repositories' 183 __tablename__ = 'repositories'
180 __table_args__ = (UniqueConstraint('repo_name'), {'useexisting':True},) 184 __table_args__ = (UniqueConstraint('repo_name'), {'useexisting':True},)
181 repo_id = Column("repo_id", Integer(), nullable=False, unique=True, default=None, primary_key=True) 185 repo_id = Column("repo_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
187 enable_downloads = Column("downloads", Boolean(), nullable=True, unique=None, default=True) 191 enable_downloads = Column("downloads", Boolean(), nullable=True, unique=None, default=True)
188 description = Column("description", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None) 192 description = Column("description", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
189 fork_id = Column("fork_id", Integer(), ForeignKey('repositories.repo_id'), nullable=True, unique=False, default=None) 193 fork_id = Column("fork_id", Integer(), ForeignKey('repositories.repo_id'), nullable=True, unique=False, default=None)
190 group_id = Column("group_id", Integer(), ForeignKey('groups.group_id'), nullable=True, unique=False, default=None) 194 group_id = Column("group_id", Integer(), ForeignKey('groups.group_id'), nullable=True, unique=False, default=None)
191 195
192 user = relation('User') 196 user = relationship('User')
193 fork = relation('Repository', remote_side=repo_id) 197 fork = relationship('Repository', remote_side=repo_id)
194 group = relation('Group') 198 group = relationship('Group')
195 repo_to_perm = relation('RepoToPerm', cascade='all') 199 repo_to_perm = relationship('RepoToPerm', cascade='all')
196 stats = relation('Statistics', cascade='all', uselist=False) 200 stats = relationship('Statistics', cascade='all', uselist=False)
197 201
198 repo_followers = relation('UserFollowing', primaryjoin='UserFollowing.follows_repo_id==Repository.repo_id', cascade='all') 202 repo_followers = relationship('UserFollowing', primaryjoin='UserFollowing.follows_repo_id==Repository.repo_id', cascade='all')
199 203
200 def __repr__(self): 204 def __repr__(self):
201 return "<%s('%s:%s')>" % (self.__class__.__name__, 205 return "<%s('%s:%s')>" % (self.__class__.__name__,
202 self.repo_id, self.repo_name) 206 self.repo_id, self.repo_name)
203 207
207 211
208 group_id = Column("group_id", Integer(), nullable=False, unique=True, default=None, primary_key=True) 212 group_id = Column("group_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
209 group_name = Column("group_name", String(length=None, convert_unicode=False, assert_unicode=None), nullable=False, unique=True, default=None) 213 group_name = Column("group_name", String(length=None, convert_unicode=False, assert_unicode=None), nullable=False, unique=True, default=None)
210 group_parent_id = Column("group_parent_id", Integer(), ForeignKey('groups.group_id'), nullable=True, unique=None, default=None) 214 group_parent_id = Column("group_parent_id", Integer(), ForeignKey('groups.group_id'), nullable=True, unique=None, default=None)
211 215
212 parent_group = relation('Group', remote_side=group_id) 216 parent_group = relationship('Group', remote_side=group_id)
213 217
214 218
215 def __init__(self, group_name='', parent_group=None): 219 def __init__(self, group_name='', parent_group=None):
216 self.group_name = group_name 220 self.group_name = group_name
217 self.parent_group = parent_group 221 self.parent_group = parent_group
237 repo_to_perm_id = Column("repo_to_perm_id", Integer(), nullable=False, unique=True, default=None, primary_key=True) 241 repo_to_perm_id = Column("repo_to_perm_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
238 user_id = Column("user_id", Integer(), ForeignKey('users.user_id'), nullable=False, unique=None, default=None) 242 user_id = Column("user_id", Integer(), ForeignKey('users.user_id'), nullable=False, unique=None, default=None)
239 permission_id = Column("permission_id", Integer(), ForeignKey('permissions.permission_id'), nullable=False, unique=None, default=None) 243 permission_id = Column("permission_id", Integer(), ForeignKey('permissions.permission_id'), nullable=False, unique=None, default=None)
240 repository_id = Column("repository_id", Integer(), ForeignKey('repositories.repo_id'), nullable=False, unique=None, default=None) 244 repository_id = Column("repository_id", Integer(), ForeignKey('repositories.repo_id'), nullable=False, unique=None, default=None)
241 245
242 user = relation('User') 246 user = relationship('User')
243 permission = relation('Permission') 247 permission = relationship('Permission')
244 repository = relation('Repository') 248 repository = relationship('Repository')
245 249
246 class UserToPerm(Base, BaseModel): 250 class UserToPerm(Base, BaseModel):
247 __tablename__ = 'user_to_perm' 251 __tablename__ = 'user_to_perm'
248 __table_args__ = (UniqueConstraint('user_id', 'permission_id'), {'useexisting':True}) 252 __table_args__ = (UniqueConstraint('user_id', 'permission_id'), {'useexisting':True})
249 user_to_perm_id = Column("user_to_perm_id", Integer(), nullable=False, unique=True, default=None, primary_key=True) 253 user_to_perm_id = Column("user_to_perm_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
250 user_id = Column("user_id", Integer(), ForeignKey('users.user_id'), nullable=False, unique=None, default=None) 254 user_id = Column("user_id", Integer(), ForeignKey('users.user_id'), nullable=False, unique=None, default=None)
251 permission_id = Column("permission_id", Integer(), ForeignKey('permissions.permission_id'), nullable=False, unique=None, default=None) 255 permission_id = Column("permission_id", Integer(), ForeignKey('permissions.permission_id'), nullable=False, unique=None, default=None)
252 256
253 user = relation('User') 257 user = relationship('User')
254 permission = relation('Permission') 258 permission = relationship('Permission')
255 259
256 class UsersGroupToPerm(Base, BaseModel): 260 class UsersGroupToPerm(Base, BaseModel):
257 __tablename__ = 'users_group_to_perm' 261 __tablename__ = 'users_group_to_perm'
258 __table_args__ = (UniqueConstraint('users_group_id', 'permission_id'), {'useexisting':True}) 262 __table_args__ = (UniqueConstraint('users_group_id', 'permission_id'), {'useexisting':True})
259 users_group_to_perm_id = Column("users_group_to_perm_id", Integer(), nullable=False, unique=True, default=None, primary_key=True) 263 users_group_to_perm_id = Column("users_group_to_perm_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
260 users_group_id = Column("users_group_id", Integer(), ForeignKey('users_groups.users_group_id'), nullable=False, unique=None, default=None) 264 users_group_id = Column("users_group_id", Integer(), ForeignKey('users_groups.users_group_id'), nullable=False, unique=None, default=None)
261 permission_id = Column("permission_id", Integer(), ForeignKey('permissions.permission_id'), nullable=False, unique=None, default=None) 265 permission_id = Column("permission_id", Integer(), ForeignKey('permissions.permission_id'), nullable=False, unique=None, default=None)
262 266
263 users_group = relation('UsersGroup') 267 users_group = relationship('UsersGroup')
264 permission = relation('Permission') 268 permission = relationship('Permission')
265 269
266 class GroupToPerm(Base, BaseModel): 270 class GroupToPerm(Base, BaseModel):
267 __tablename__ = 'group_to_perm' 271 __tablename__ = 'group_to_perm'
268 __table_args__ = (UniqueConstraint('group_id', 'permission_id'), {'useexisting':True}) 272 __table_args__ = (UniqueConstraint('group_id', 'permission_id'), {'useexisting':True})
269 273
270 group_to_perm_id = Column("group_to_perm_id", Integer(), nullable=False, unique=True, default=None, primary_key=True) 274 group_to_perm_id = Column("group_to_perm_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
271 user_id = Column("user_id", Integer(), ForeignKey('users.user_id'), nullable=False, unique=None, default=None) 275 user_id = Column("user_id", Integer(), ForeignKey('users.user_id'), nullable=False, unique=None, default=None)
272 permission_id = Column("permission_id", Integer(), ForeignKey('permissions.permission_id'), nullable=False, unique=None, default=None) 276 permission_id = Column("permission_id", Integer(), ForeignKey('permissions.permission_id'), nullable=False, unique=None, default=None)
273 group_id = Column("group_id", Integer(), ForeignKey('groups.group_id'), nullable=False, unique=None, default=None) 277 group_id = Column("group_id", Integer(), ForeignKey('groups.group_id'), nullable=False, unique=None, default=None)
274 278
275 user = relation('User') 279 user = relationship('User')
276 permission = relation('Permission') 280 permission = relationship('Permission')
277 group = relation('Group') 281 group = relationship('Group')
278 282
279 class Statistics(Base, BaseModel): 283 class Statistics(Base, BaseModel):
280 __tablename__ = 'statistics' 284 __tablename__ = 'statistics'
281 __table_args__ = (UniqueConstraint('repository_id'), {'useexisting':True}) 285 __table_args__ = (UniqueConstraint('repository_id'), {'useexisting':True})
282 stat_id = Column("stat_id", Integer(), nullable=False, unique=True, default=None, primary_key=True) 286 stat_id = Column("stat_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
284 stat_on_revision = Column("stat_on_revision", Integer(), nullable=False) 288 stat_on_revision = Column("stat_on_revision", Integer(), nullable=False)
285 commit_activity = Column("commit_activity", LargeBinary(), nullable=False)#JSON data 289 commit_activity = Column("commit_activity", LargeBinary(), nullable=False)#JSON data
286 commit_activity_combined = Column("commit_activity_combined", LargeBinary(), nullable=False)#JSON data 290 commit_activity_combined = Column("commit_activity_combined", LargeBinary(), nullable=False)#JSON data
287 languages = Column("languages", LargeBinary(), nullable=False)#JSON data 291 languages = Column("languages", LargeBinary(), nullable=False)#JSON data
288 292
289 repository = relation('Repository', single_parent=True) 293 repository = relationship('Repository', single_parent=True)
290 294
291 class UserFollowing(Base, BaseModel): 295 class UserFollowing(Base, BaseModel):
292 __tablename__ = 'user_followings' 296 __tablename__ = 'user_followings'
293 __table_args__ = (UniqueConstraint('user_id', 'follows_repository_id'), 297 __table_args__ = (UniqueConstraint('user_id', 'follows_repository_id'),
294 UniqueConstraint('user_id', 'follows_user_id') 298 UniqueConstraint('user_id', 'follows_user_id')
297 user_following_id = Column("user_following_id", Integer(), nullable=False, unique=True, default=None, primary_key=True) 301 user_following_id = Column("user_following_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
298 user_id = Column("user_id", Integer(), ForeignKey('users.user_id'), nullable=False, unique=None, default=None) 302 user_id = Column("user_id", Integer(), ForeignKey('users.user_id'), nullable=False, unique=None, default=None)
299 follows_repo_id = Column("follows_repository_id", Integer(), ForeignKey('repositories.repo_id'), nullable=True, unique=None, default=None) 303 follows_repo_id = Column("follows_repository_id", Integer(), ForeignKey('repositories.repo_id'), nullable=True, unique=None, default=None)
300 follows_user_id = Column("follows_user_id", Integer(), ForeignKey('users.user_id'), nullable=True, unique=None, default=None) 304 follows_user_id = Column("follows_user_id", Integer(), ForeignKey('users.user_id'), nullable=True, unique=None, default=None)
301 305
302 user = relation('User', primaryjoin='User.user_id==UserFollowing.user_id') 306 user = relationship('User', primaryjoin='User.user_id==UserFollowing.user_id')
303 307
304 follows_user = relation('User', primaryjoin='User.user_id==UserFollowing.follows_user_id') 308 follows_user = relationship('User', primaryjoin='User.user_id==UserFollowing.follows_user_id')
305 follows_repository = relation('Repository') 309 follows_repository = relationship('Repository')
306 310
307 class CacheInvalidation(Base, BaseModel): 311 class CacheInvalidation(Base, BaseModel):
308 __tablename__ = 'cache_invalidation' 312 __tablename__ = 'cache_invalidation'
309 __table_args__ = (UniqueConstraint('cache_key'), {'useexisting':True}) 313 __table_args__ = (UniqueConstraint('cache_key'), {'useexisting':True})
310 cache_id = Column("cache_id", Integer(), nullable=False, unique=True, default=None, primary_key=True) 314 cache_id = Column("cache_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)