Mercurial > kallithea
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) |