##// END OF EJS Templates
updated db migrations to schema 3
marcink -
r1023:e7478ac1 beta
parent child Browse files
Show More
@@ -1,52 +1,90 b''
1 import logging
1 import logging
2 import datetime
2 import datetime
3
3
4 from sqlalchemy import *
4 from sqlalchemy import *
5 from sqlalchemy.exc import DatabaseError
5 from sqlalchemy.exc import DatabaseError
6 from sqlalchemy.orm import relation, backref, class_mapper
6 from sqlalchemy.orm import relation, backref, class_mapper
7 from sqlalchemy.orm.session import Session
7 from sqlalchemy.orm.session import Session
8
8
9 from rhodecode.lib.dbmigrate.migrate import *
9 from rhodecode.lib.dbmigrate.migrate import *
10 from rhodecode.lib.dbmigrate.migrate.changeset import *
10 from rhodecode.lib.dbmigrate.migrate.changeset import *
11
11
12 from rhodecode.model.meta import Base
12 from rhodecode.model.meta import Base
13 from rhodecode.model.db import BaseModel
13 from rhodecode.model.db import BaseModel
14
14
15 log = logging.getLogger(__name__)
15 log = logging.getLogger(__name__)
16
16
17 def upgrade(migrate_engine):
17 def upgrade(migrate_engine):
18 """ Upgrade operations go here.
18 """ Upgrade operations go here.
19 Don't create your own engine; bind migrate_engine to your metadata
19 Don't create your own engine; bind migrate_engine to your metadata
20 """
20 """
21
21
22 #==========================================================================
22 #==========================================================================
23 # Add table `groups``
23 # Add table `groups``
24 #==========================================================================
24 #==========================================================================
25 from rhodecode.model.db import Group
25 # from rhodecode.model.db import Group
26 Group().__table__.create()
26 # Group().__table__.create()
27
27
28 #==========================================================================
28 #==========================================================================
29 # Add table `group_to_perm`
29 # Add table `group_to_perm`
30 #==========================================================================
30 #==========================================================================
31 from rhodecode.model.db import GroupToPerm
31 # from rhodecode.model.db import GroupToPerm
32 GroupToPerm().__table__.create()
32 # GroupToPerm().__table__.create()
33
34 #==========================================================================
35 # Add table `users_groups`
36 #==========================================================================
37 # from rhodecode.model.db import UsersGroup
38 # UsersGroup().__table__.create()
39
40 #==========================================================================
41 # Add table `users_groups_members`
42 #==========================================================================
43 from rhodecode.model.db import UsersGroupMember
44 UsersGroupMember().__table__.create()
45
46 #==========================================================================
47 # Add table `users_group_to_perm`
48 #==========================================================================
49 from rhodecode.model.db import UsersGroupToPerm
50 UsersGroupToPerm().__table__.create()
51
52
53 #==========================================================================
54 # Upgrade of `users` table
55 #==========================================================================
56 from rhodecode.model.db import User
57
58 #add column
59 ldap_dn = Column("ldap_dn", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
60 ldap_dn.create(User().__table__)
61
62
63 #remove old column
64 is_ldap = Column("is_ldap", Boolean(), nullable=False, unique=None, default=False)
65 is_ldap.drop(User().__table__)
66
33
67
34 #==========================================================================
68 #==========================================================================
35 # Upgrade of `repositories` table
69 # Upgrade of `repositories` table
36 #==========================================================================
70 #==========================================================================
37 from rhodecode.model.db import Repository
71 from rhodecode.model.db import Repository
38
72
73 #ADD downloads column#
74 enable_downloads = Column("downloads", Boolean(), nullable=True, unique=None, default=True)
75 enable_downloads.create(Repository().__table__)
76
39 #ADD group_id column#
77 #ADD group_id column#
40 group_id = Column("group_id", Integer(), ForeignKey('groups.group_id'),
78 group_id = Column("group_id", Integer(), ForeignKey('groups.group_id'),
41 nullable=True, unique=False, default=None)
79 nullable=True, unique=False, default=None)
42
80
43 group_id.create(Repository().__table__)
81 group_id.create(Repository().__table__)
44
82
45 return
83 return
46
84
47
85
48 def downgrade(migrate_engine):
86 def downgrade(migrate_engine):
49 meta = MetaData()
87 meta = MetaData()
50 meta.bind = migrate_engine
88 meta.bind = migrate_engine
51
89
52
90
@@ -1,346 +1,346 b''
1 # -*- coding: utf-8 -*-
1 # -*- coding: utf-8 -*-
2 """
2 """
3 rhodecode.model.db
3 rhodecode.model.db
4 ~~~~~~~~~~~~~~~~~~
4 ~~~~~~~~~~~~~~~~~~
5
5
6 Database Models for RhodeCode
6 Database Models for RhodeCode
7
7
8 :created_on: Apr 08, 2010
8 :created_on: Apr 08, 2010
9 :author: marcink
9 :author: marcink
10 :copyright: (C) 2009-2011 Marcin Kuzminski <marcin@python-works.com>
10 :copyright: (C) 2009-2011 Marcin Kuzminski <marcin@python-works.com>
11 :license: GPLv3, see COPYING for more details.
11 :license: GPLv3, see COPYING for more details.
12 """
12 """
13 # This program is free software; you can redistribute it and/or
13 # This program is free software; you can redistribute it and/or
14 # modify it under the terms of the GNU General Public License
14 # modify it under the terms of the GNU General Public License
15 # as published by the Free Software Foundation; version 2
15 # as published by the Free Software Foundation; version 2
16 # of the License or (at your opinion) any later version of the license.
16 # of the License or (at your opinion) any later version of the license.
17 #
17 #
18 # This program is distributed in the hope that it will be useful,
18 # This program is distributed in the hope that it will be useful,
19 # but WITHOUT ANY WARRANTY; without even the implied warranty of
19 # but WITHOUT ANY WARRANTY; without even the implied warranty of
20 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 # GNU General Public License for more details.
21 # GNU General Public License for more details.
22 #
22 #
23 # You should have received a copy of the GNU General Public License
23 # You should have received a copy of the GNU General Public License
24 # along with this program; if not, write to the Free Software
24 # along with this program; if not, write to the Free Software
25 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
25 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
26 # MA 02110-1301, USA.
26 # MA 02110-1301, USA.
27 import logging
27 import logging
28 import datetime
28 import datetime
29 from datetime import date
29 from datetime import date
30
30
31 from sqlalchemy import *
31 from sqlalchemy import *
32 from sqlalchemy.exc import DatabaseError
32 from sqlalchemy.exc import DatabaseError
33 from sqlalchemy.orm import relationship, backref, class_mapper
33 from sqlalchemy.orm import relationship, backref, class_mapper
34 from sqlalchemy.orm.session import Session
34 from sqlalchemy.orm.session import Session
35
35
36 from rhodecode.model.meta import Base
36 from rhodecode.model.meta import Base
37
37
38 log = logging.getLogger(__name__)
38 log = logging.getLogger(__name__)
39
39
40 class BaseModel(object):
40 class BaseModel(object):
41
41
42 @classmethod
42 @classmethod
43 def _get_keys(cls):
43 def _get_keys(cls):
44 """return column names for this model """
44 """return column names for this model """
45 return class_mapper(cls).c.keys()
45 return class_mapper(cls).c.keys()
46
46
47 def get_dict(self):
47 def get_dict(self):
48 """return dict with keys and values corresponding
48 """return dict with keys and values corresponding
49 to this model data """
49 to this model data """
50
50
51 d = {}
51 d = {}
52 for k in self._get_keys():
52 for k in self._get_keys():
53 d[k] = getattr(self, k)
53 d[k] = getattr(self, k)
54 return d
54 return d
55
55
56 def get_appstruct(self):
56 def get_appstruct(self):
57 """return list with keys and values tupples corresponding
57 """return list with keys and values tupples corresponding
58 to this model data """
58 to this model data """
59
59
60 l = []
60 l = []
61 for k in self._get_keys():
61 for k in self._get_keys():
62 l.append((k, getattr(self, k),))
62 l.append((k, getattr(self, k),))
63 return l
63 return l
64
64
65 def populate_obj(self, populate_dict):
65 def populate_obj(self, populate_dict):
66 """populate model with data from given populate_dict"""
66 """populate model with data from given populate_dict"""
67
67
68 for k in self._get_keys():
68 for k in self._get_keys():
69 if k in populate_dict:
69 if k in populate_dict:
70 setattr(self, k, populate_dict[k])
70 setattr(self, k, populate_dict[k])
71
71
72 class RhodeCodeSettings(Base, BaseModel):
72 class RhodeCodeSettings(Base, BaseModel):
73 __tablename__ = 'rhodecode_settings'
73 __tablename__ = 'rhodecode_settings'
74 __table_args__ = (UniqueConstraint('app_settings_name'), {'useexisting':True})
74 __table_args__ = (UniqueConstraint('app_settings_name'), {'useexisting':True})
75 app_settings_id = Column("app_settings_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
75 app_settings_id = Column("app_settings_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
76 app_settings_name = Column("app_settings_name", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
76 app_settings_name = Column("app_settings_name", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
77 app_settings_value = Column("app_settings_value", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
77 app_settings_value = Column("app_settings_value", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
78
78
79 def __init__(self, k='', v=''):
79 def __init__(self, k='', v=''):
80 self.app_settings_name = k
80 self.app_settings_name = k
81 self.app_settings_value = v
81 self.app_settings_value = v
82
82
83 def __repr__(self):
83 def __repr__(self):
84 return "<%s('%s:%s')>" % (self.__class__.__name__,
84 return "<%s('%s:%s')>" % (self.__class__.__name__,
85 self.app_settings_name, self.app_settings_value)
85 self.app_settings_name, self.app_settings_value)
86
86
87 class RhodeCodeUi(Base, BaseModel):
87 class RhodeCodeUi(Base, BaseModel):
88 __tablename__ = 'rhodecode_ui'
88 __tablename__ = 'rhodecode_ui'
89 __table_args__ = {'useexisting':True}
89 __table_args__ = {'useexisting':True}
90 ui_id = Column("ui_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
90 ui_id = Column("ui_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
91 ui_section = Column("ui_section", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
91 ui_section = Column("ui_section", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
92 ui_key = Column("ui_key", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
92 ui_key = Column("ui_key", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
93 ui_value = Column("ui_value", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
93 ui_value = Column("ui_value", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
94 ui_active = Column("ui_active", Boolean(), nullable=True, unique=None, default=True)
94 ui_active = Column("ui_active", Boolean(), nullable=True, unique=None, default=True)
95
95
96
96
97 class User(Base, BaseModel):
97 class User(Base, BaseModel):
98 __tablename__ = 'users'
98 __tablename__ = 'users'
99 __table_args__ = (UniqueConstraint('username'), UniqueConstraint('email'), {'useexisting':True})
99 __table_args__ = (UniqueConstraint('username'), UniqueConstraint('email'), {'useexisting':True})
100 user_id = Column("user_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
100 user_id = Column("user_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
101 username = Column("username", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
101 username = Column("username", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
102 password = Column("password", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
102 password = Column("password", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
103 active = Column("active", Boolean(), nullable=True, unique=None, default=None)
103 active = Column("active", Boolean(), nullable=True, unique=None, default=None)
104 admin = Column("admin", Boolean(), nullable=True, unique=None, default=False)
104 admin = Column("admin", Boolean(), nullable=True, unique=None, default=False)
105 name = Column("name", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
105 name = Column("name", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
106 lastname = Column("lastname", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
106 lastname = Column("lastname", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
107 email = Column("email", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
107 email = Column("email", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
108 last_login = Column("last_login", DateTime(timezone=False), nullable=True, unique=None, default=None)
108 last_login = Column("last_login", DateTime(timezone=False), nullable=True, unique=None, default=None)
109 ldap_dn = Column("ldap_dn", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
109 ldap_dn = Column("ldap_dn", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
110
110
111 user_log = relationship('UserLog', cascade='all')
111 user_log = relationship('UserLog', cascade='all')
112 user_perms = relationship('UserToPerm', primaryjoin="User.user_id==UserToPerm.user_id", cascade='all')
112 user_perms = relationship('UserToPerm', primaryjoin="User.user_id==UserToPerm.user_id", cascade='all')
113
113
114 repositories = relationship('Repository')
114 repositories = relationship('Repository')
115 user_followers = relationship('UserFollowing', primaryjoin='UserFollowing.follows_user_id==User.user_id', cascade='all')
115 user_followers = relationship('UserFollowing', primaryjoin='UserFollowing.follows_user_id==User.user_id', cascade='all')
116
116
117 @property
117 @property
118 def full_contact(self):
118 def full_contact(self):
119 return '%s %s <%s>' % (self.name, self.lastname, self.email)
119 return '%s %s <%s>' % (self.name, self.lastname, self.email)
120
120
121
121
122 @property
122 @property
123 def is_admin(self):
123 def is_admin(self):
124 return self.admin
124 return self.admin
125
125
126 def __repr__(self):
126 def __repr__(self):
127 return "<%s('id:%s:%s')>" % (self.__class__.__name__,
127 return "<%s('id:%s:%s')>" % (self.__class__.__name__,
128 self.user_id, self.username)
128 self.user_id, self.username)
129
129
130 def update_lastlogin(self):
130 def update_lastlogin(self):
131 """Update user lastlogin"""
131 """Update user lastlogin"""
132
132
133 try:
133 try:
134 session = Session.object_session(self)
134 session = Session.object_session(self)
135 self.last_login = datetime.datetime.now()
135 self.last_login = datetime.datetime.now()
136 session.add(self)
136 session.add(self)
137 session.commit()
137 session.commit()
138 log.debug('updated user %s lastlogin', self.username)
138 log.debug('updated user %s lastlogin', self.username)
139 except (DatabaseError,):
139 except (DatabaseError,):
140 session.rollback()
140 session.rollback()
141
141
142
142
143 class UserLog(Base, BaseModel):
143 class UserLog(Base, BaseModel):
144 __tablename__ = 'user_logs'
144 __tablename__ = 'user_logs'
145 __table_args__ = {'useexisting':True}
145 __table_args__ = {'useexisting':True}
146 user_log_id = Column("user_log_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
146 user_log_id = Column("user_log_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
147 user_id = Column("user_id", Integer(), ForeignKey('users.user_id'), nullable=False, unique=None, default=None)
147 user_id = Column("user_id", Integer(), ForeignKey('users.user_id'), nullable=False, unique=None, default=None)
148 repository_id = Column("repository_id", Integer(length=None, convert_unicode=False, assert_unicode=None), ForeignKey('repositories.repo_id'), nullable=False, unique=None, default=None)
148 repository_id = Column("repository_id", Integer(length=None, convert_unicode=False, assert_unicode=None), ForeignKey('repositories.repo_id'), nullable=False, unique=None, default=None)
149 repository_name = Column("repository_name", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
149 repository_name = Column("repository_name", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
150 user_ip = Column("user_ip", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
150 user_ip = Column("user_ip", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
151 action = Column("action", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
151 action = Column("action", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
152 action_date = Column("action_date", DateTime(timezone=False), nullable=True, unique=None, default=None)
152 action_date = Column("action_date", DateTime(timezone=False), nullable=True, unique=None, default=None)
153
153
154 @property
154 @property
155 def action_as_day(self):
155 def action_as_day(self):
156 return date(*self.action_date.timetuple()[:3])
156 return date(*self.action_date.timetuple()[:3])
157
157
158 user = relationship('User')
158 user = relationship('User')
159 repository = relationship('Repository')
159 repository = relationship('Repository')
160
160
161
161
162 class UsersGroup(Base, BaseModel):
162 class UsersGroup(Base, BaseModel):
163 __tablename__ = 'users_groups'
163 __tablename__ = 'users_groups'
164 __table_args__ = {'useexisting':True}
164 __table_args__ = {'useexisting':True}
165
165
166 users_group_id = Column("users_group_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
166 users_group_id = Column("users_group_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
167 users_group_name = Column("users_group_name", String(length=None, convert_unicode=False, assert_unicode=None), nullable=False, unique=True, default=None)
167 users_group_name = Column("users_group_name", String(length=None, convert_unicode=False, assert_unicode=None), nullable=False, unique=True, default=None)
168 users_group_active = Column("users_group_active", Boolean(), nullable=True, unique=None, default=None)
168 users_group_active = Column("users_group_active", Boolean(), nullable=True, unique=None, default=None)
169
169
170 members = relationship('UsersGroupMember', cascade="all, delete, delete-orphan", lazy="joined")
170 members = relationship('UsersGroupMember', cascade="all, delete, delete-orphan", lazy="joined")
171
171
172 class UsersGroupMember(Base, BaseModel):
172 class UsersGroupMember(Base, BaseModel):
173 __tablename__ = 'users_groups_members'
173 __tablename__ = 'users_groups_members'
174 __table_args__ = {'useexisting':True}
174 __table_args__ = {'useexisting':True}
175
175
176 users_group_member_id = Column("users_group_member_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
176 users_group_member_id = Column("users_group_member_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
177 users_group_id = Column("users_group_id", Integer(), ForeignKey('users_groups.users_group_id'), nullable=False, unique=None, default=None)
177 users_group_id = Column("users_group_id", Integer(), ForeignKey('users_groups.users_group_id'), nullable=False, unique=None, default=None)
178 user_id = Column("user_id", Integer(), ForeignKey('users.user_id'), nullable=False, unique=None, default=None)
178 user_id = Column("user_id", Integer(), ForeignKey('users.user_id'), nullable=False, unique=None, default=None)
179
179
180 user = relationship('User', lazy='joined')
180 user = relationship('User', lazy='joined')
181 users_group = relationship('UsersGroup')
181 users_group = relationship('UsersGroup')
182
182
183 def __init__(self, gr_id, u_id):
183 def __init__(self, gr_id='', u_id=''):
184 self.users_group_id = gr_id
184 self.users_group_id = gr_id
185 self.user_id = u_id
185 self.user_id = u_id
186
186
187 class Repository(Base, BaseModel):
187 class Repository(Base, BaseModel):
188 __tablename__ = 'repositories'
188 __tablename__ = 'repositories'
189 __table_args__ = (UniqueConstraint('repo_name'), {'useexisting':True},)
189 __table_args__ = (UniqueConstraint('repo_name'), {'useexisting':True},)
190 repo_id = Column("repo_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
190 repo_id = Column("repo_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
191 repo_name = Column("repo_name", String(length=None, convert_unicode=False, assert_unicode=None), nullable=False, unique=True, default=None)
191 repo_name = Column("repo_name", String(length=None, convert_unicode=False, assert_unicode=None), nullable=False, unique=True, default=None)
192 repo_type = Column("repo_type", String(length=None, convert_unicode=False, assert_unicode=None), nullable=False, unique=False, default='hg')
192 repo_type = Column("repo_type", String(length=None, convert_unicode=False, assert_unicode=None), nullable=False, unique=False, default='hg')
193 user_id = Column("user_id", Integer(), ForeignKey('users.user_id'), nullable=False, unique=False, default=None)
193 user_id = Column("user_id", Integer(), ForeignKey('users.user_id'), nullable=False, unique=False, default=None)
194 private = Column("private", Boolean(), nullable=True, unique=None, default=None)
194 private = Column("private", Boolean(), nullable=True, unique=None, default=None)
195 enable_statistics = Column("statistics", Boolean(), nullable=True, unique=None, default=True)
195 enable_statistics = Column("statistics", Boolean(), nullable=True, unique=None, default=True)
196 enable_downloads = Column("downloads", Boolean(), nullable=True, unique=None, default=True)
196 enable_downloads = Column("downloads", Boolean(), nullable=True, unique=None, default=True)
197 description = Column("description", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
197 description = Column("description", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
198 fork_id = Column("fork_id", Integer(), ForeignKey('repositories.repo_id'), nullable=True, unique=False, default=None)
198 fork_id = Column("fork_id", Integer(), ForeignKey('repositories.repo_id'), nullable=True, unique=False, default=None)
199 group_id = Column("group_id", Integer(), ForeignKey('groups.group_id'), nullable=True, unique=False, default=None)
199 group_id = Column("group_id", Integer(), ForeignKey('groups.group_id'), nullable=True, unique=False, default=None)
200
200
201 user = relationship('User')
201 user = relationship('User')
202 fork = relationship('Repository', remote_side=repo_id)
202 fork = relationship('Repository', remote_side=repo_id)
203 group = relationship('Group')
203 group = relationship('Group')
204 repo_to_perm = relationship('RepoToPerm', cascade='all')
204 repo_to_perm = relationship('RepoToPerm', cascade='all')
205 users_group_to_perm = relationship('UsersGroupToPerm', cascade='all')
205 users_group_to_perm = relationship('UsersGroupToPerm', cascade='all')
206 stats = relationship('Statistics', cascade='all', uselist=False)
206 stats = relationship('Statistics', cascade='all', uselist=False)
207
207
208 repo_followers = relationship('UserFollowing', primaryjoin='UserFollowing.follows_repo_id==Repository.repo_id', cascade='all')
208 repo_followers = relationship('UserFollowing', primaryjoin='UserFollowing.follows_repo_id==Repository.repo_id', cascade='all')
209
209
210 logs = relationship('UserLog', cascade='all')
210 logs = relationship('UserLog', cascade='all')
211
211
212 def __repr__(self):
212 def __repr__(self):
213 return "<%s('%s:%s')>" % (self.__class__.__name__,
213 return "<%s('%s:%s')>" % (self.__class__.__name__,
214 self.repo_id, self.repo_name)
214 self.repo_id, self.repo_name)
215
215
216 class Group(Base, BaseModel):
216 class Group(Base, BaseModel):
217 __tablename__ = 'groups'
217 __tablename__ = 'groups'
218 __table_args__ = (UniqueConstraint('group_name'), {'useexisting':True},)
218 __table_args__ = (UniqueConstraint('group_name'), {'useexisting':True},)
219
219
220 group_id = Column("group_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
220 group_id = Column("group_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
221 group_name = Column("group_name", String(length=None, convert_unicode=False, assert_unicode=None), nullable=False, unique=True, default=None)
221 group_name = Column("group_name", String(length=None, convert_unicode=False, assert_unicode=None), nullable=False, unique=True, default=None)
222 group_parent_id = Column("group_parent_id", Integer(), ForeignKey('groups.group_id'), nullable=True, unique=None, default=None)
222 group_parent_id = Column("group_parent_id", Integer(), ForeignKey('groups.group_id'), nullable=True, unique=None, default=None)
223
223
224 parent_group = relationship('Group', remote_side=group_id)
224 parent_group = relationship('Group', remote_side=group_id)
225
225
226
226
227 def __init__(self, group_name='', parent_group=None):
227 def __init__(self, group_name='', parent_group=None):
228 self.group_name = group_name
228 self.group_name = group_name
229 self.parent_group = parent_group
229 self.parent_group = parent_group
230
230
231 def __repr__(self):
231 def __repr__(self):
232 return "<%s('%s:%s')>" % (self.__class__.__name__, self.group_id,
232 return "<%s('%s:%s')>" % (self.__class__.__name__, self.group_id,
233 self.group_name)
233 self.group_name)
234
234
235 class Permission(Base, BaseModel):
235 class Permission(Base, BaseModel):
236 __tablename__ = 'permissions'
236 __tablename__ = 'permissions'
237 __table_args__ = {'useexisting':True}
237 __table_args__ = {'useexisting':True}
238 permission_id = Column("permission_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
238 permission_id = Column("permission_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
239 permission_name = Column("permission_name", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
239 permission_name = Column("permission_name", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
240 permission_longname = Column("permission_longname", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
240 permission_longname = Column("permission_longname", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
241
241
242 def __repr__(self):
242 def __repr__(self):
243 return "<%s('%s:%s')>" % (self.__class__.__name__,
243 return "<%s('%s:%s')>" % (self.__class__.__name__,
244 self.permission_id, self.permission_name)
244 self.permission_id, self.permission_name)
245
245
246 class RepoToPerm(Base, BaseModel):
246 class RepoToPerm(Base, BaseModel):
247 __tablename__ = 'repo_to_perm'
247 __tablename__ = 'repo_to_perm'
248 __table_args__ = (UniqueConstraint('user_id', 'repository_id'), {'useexisting':True})
248 __table_args__ = (UniqueConstraint('user_id', 'repository_id'), {'useexisting':True})
249 repo_to_perm_id = Column("repo_to_perm_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
249 repo_to_perm_id = Column("repo_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)
250 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)
251 permission_id = Column("permission_id", Integer(), ForeignKey('permissions.permission_id'), nullable=False, unique=None, default=None)
252 repository_id = Column("repository_id", Integer(), ForeignKey('repositories.repo_id'), nullable=False, unique=None, default=None)
252 repository_id = Column("repository_id", Integer(), ForeignKey('repositories.repo_id'), nullable=False, unique=None, default=None)
253
253
254 user = relationship('User')
254 user = relationship('User')
255 permission = relationship('Permission')
255 permission = relationship('Permission')
256 repository = relationship('Repository')
256 repository = relationship('Repository')
257
257
258 class UserToPerm(Base, BaseModel):
258 class UserToPerm(Base, BaseModel):
259 __tablename__ = 'user_to_perm'
259 __tablename__ = 'user_to_perm'
260 __table_args__ = (UniqueConstraint('user_id', 'permission_id'), {'useexisting':True})
260 __table_args__ = (UniqueConstraint('user_id', 'permission_id'), {'useexisting':True})
261 user_to_perm_id = Column("user_to_perm_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
261 user_to_perm_id = Column("user_to_perm_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
262 user_id = Column("user_id", Integer(), ForeignKey('users.user_id'), nullable=False, unique=None, default=None)
262 user_id = Column("user_id", Integer(), ForeignKey('users.user_id'), nullable=False, unique=None, default=None)
263 permission_id = Column("permission_id", Integer(), ForeignKey('permissions.permission_id'), nullable=False, unique=None, default=None)
263 permission_id = Column("permission_id", Integer(), ForeignKey('permissions.permission_id'), nullable=False, unique=None, default=None)
264
264
265 user = relationship('User')
265 user = relationship('User')
266 permission = relationship('Permission')
266 permission = relationship('Permission')
267
267
268
268
269 class UsersGroupToPerm(Base, BaseModel):
269 class UsersGroupToPerm(Base, BaseModel):
270 __tablename__ = 'users_group_to_perm'
270 __tablename__ = 'users_group_to_perm'
271 __table_args__ = (UniqueConstraint('users_group_id', 'permission_id'), {'useexisting':True})
271 __table_args__ = (UniqueConstraint('users_group_id', 'permission_id'), {'useexisting':True})
272 users_group_to_perm_id = Column("users_group_to_perm_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
272 users_group_to_perm_id = Column("users_group_to_perm_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
273 users_group_id = Column("users_group_id", Integer(), ForeignKey('users_groups.users_group_id'), nullable=False, unique=None, default=None)
273 users_group_id = Column("users_group_id", Integer(), ForeignKey('users_groups.users_group_id'), nullable=False, unique=None, default=None)
274 permission_id = Column("permission_id", Integer(), ForeignKey('permissions.permission_id'), nullable=False, unique=None, default=None)
274 permission_id = Column("permission_id", Integer(), ForeignKey('permissions.permission_id'), nullable=False, unique=None, default=None)
275 repository_id = Column("repository_id", Integer(), ForeignKey('repositories.repo_id'), nullable=False, unique=None, default=None)
275 repository_id = Column("repository_id", Integer(), ForeignKey('repositories.repo_id'), nullable=False, unique=None, default=None)
276
276
277 users_group = relationship('UsersGroup')
277 users_group = relationship('UsersGroup')
278 permission = relationship('Permission')
278 permission = relationship('Permission')
279 repository = relationship('Repository')
279 repository = relationship('Repository')
280
280
281 class GroupToPerm(Base, BaseModel):
281 class GroupToPerm(Base, BaseModel):
282 __tablename__ = 'group_to_perm'
282 __tablename__ = 'group_to_perm'
283 __table_args__ = (UniqueConstraint('group_id', 'permission_id'), {'useexisting':True})
283 __table_args__ = (UniqueConstraint('group_id', 'permission_id'), {'useexisting':True})
284
284
285 group_to_perm_id = Column("group_to_perm_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
285 group_to_perm_id = Column("group_to_perm_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
286 user_id = Column("user_id", Integer(), ForeignKey('users.user_id'), nullable=False, unique=None, default=None)
286 user_id = Column("user_id", Integer(), ForeignKey('users.user_id'), nullable=False, unique=None, default=None)
287 permission_id = Column("permission_id", Integer(), ForeignKey('permissions.permission_id'), nullable=False, unique=None, default=None)
287 permission_id = Column("permission_id", Integer(), ForeignKey('permissions.permission_id'), nullable=False, unique=None, default=None)
288 group_id = Column("group_id", Integer(), ForeignKey('groups.group_id'), nullable=False, unique=None, default=None)
288 group_id = Column("group_id", Integer(), ForeignKey('groups.group_id'), nullable=False, unique=None, default=None)
289
289
290 user = relationship('User')
290 user = relationship('User')
291 permission = relationship('Permission')
291 permission = relationship('Permission')
292 group = relationship('Group')
292 group = relationship('Group')
293
293
294 class Statistics(Base, BaseModel):
294 class Statistics(Base, BaseModel):
295 __tablename__ = 'statistics'
295 __tablename__ = 'statistics'
296 __table_args__ = (UniqueConstraint('repository_id'), {'useexisting':True})
296 __table_args__ = (UniqueConstraint('repository_id'), {'useexisting':True})
297 stat_id = Column("stat_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
297 stat_id = Column("stat_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
298 repository_id = Column("repository_id", Integer(), ForeignKey('repositories.repo_id'), nullable=False, unique=True, default=None)
298 repository_id = Column("repository_id", Integer(), ForeignKey('repositories.repo_id'), nullable=False, unique=True, default=None)
299 stat_on_revision = Column("stat_on_revision", Integer(), nullable=False)
299 stat_on_revision = Column("stat_on_revision", Integer(), nullable=False)
300 commit_activity = Column("commit_activity", LargeBinary(), nullable=False)#JSON data
300 commit_activity = Column("commit_activity", LargeBinary(), nullable=False)#JSON data
301 commit_activity_combined = Column("commit_activity_combined", LargeBinary(), nullable=False)#JSON data
301 commit_activity_combined = Column("commit_activity_combined", LargeBinary(), nullable=False)#JSON data
302 languages = Column("languages", LargeBinary(), nullable=False)#JSON data
302 languages = Column("languages", LargeBinary(), nullable=False)#JSON data
303
303
304 repository = relationship('Repository', single_parent=True)
304 repository = relationship('Repository', single_parent=True)
305
305
306 class UserFollowing(Base, BaseModel):
306 class UserFollowing(Base, BaseModel):
307 __tablename__ = 'user_followings'
307 __tablename__ = 'user_followings'
308 __table_args__ = (UniqueConstraint('user_id', 'follows_repository_id'),
308 __table_args__ = (UniqueConstraint('user_id', 'follows_repository_id'),
309 UniqueConstraint('user_id', 'follows_user_id')
309 UniqueConstraint('user_id', 'follows_user_id')
310 , {'useexisting':True})
310 , {'useexisting':True})
311
311
312 user_following_id = Column("user_following_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
312 user_following_id = Column("user_following_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
313 user_id = Column("user_id", Integer(), ForeignKey('users.user_id'), nullable=False, unique=None, default=None)
313 user_id = Column("user_id", Integer(), ForeignKey('users.user_id'), nullable=False, unique=None, default=None)
314 follows_repo_id = Column("follows_repository_id", Integer(), ForeignKey('repositories.repo_id'), nullable=True, unique=None, default=None)
314 follows_repo_id = Column("follows_repository_id", Integer(), ForeignKey('repositories.repo_id'), nullable=True, unique=None, default=None)
315 follows_user_id = Column("follows_user_id", Integer(), ForeignKey('users.user_id'), nullable=True, unique=None, default=None)
315 follows_user_id = Column("follows_user_id", Integer(), ForeignKey('users.user_id'), nullable=True, unique=None, default=None)
316
316
317 user = relationship('User', primaryjoin='User.user_id==UserFollowing.user_id')
317 user = relationship('User', primaryjoin='User.user_id==UserFollowing.user_id')
318
318
319 follows_user = relationship('User', primaryjoin='User.user_id==UserFollowing.follows_user_id')
319 follows_user = relationship('User', primaryjoin='User.user_id==UserFollowing.follows_user_id')
320 follows_repository = relationship('Repository', order_by='Repository.repo_name')
320 follows_repository = relationship('Repository', order_by='Repository.repo_name')
321
321
322 class CacheInvalidation(Base, BaseModel):
322 class CacheInvalidation(Base, BaseModel):
323 __tablename__ = 'cache_invalidation'
323 __tablename__ = 'cache_invalidation'
324 __table_args__ = (UniqueConstraint('cache_key'), {'useexisting':True})
324 __table_args__ = (UniqueConstraint('cache_key'), {'useexisting':True})
325 cache_id = Column("cache_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
325 cache_id = Column("cache_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
326 cache_key = Column("cache_key", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
326 cache_key = Column("cache_key", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
327 cache_args = Column("cache_args", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
327 cache_args = Column("cache_args", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
328 cache_active = Column("cache_active", Boolean(), nullable=True, unique=None, default=False)
328 cache_active = Column("cache_active", Boolean(), nullable=True, unique=None, default=False)
329
329
330
330
331 def __init__(self, cache_key, cache_args=''):
331 def __init__(self, cache_key, cache_args=''):
332 self.cache_key = cache_key
332 self.cache_key = cache_key
333 self.cache_args = cache_args
333 self.cache_args = cache_args
334 self.cache_active = False
334 self.cache_active = False
335
335
336 def __repr__(self):
336 def __repr__(self):
337 return "<%s('%s:%s')>" % (self.__class__.__name__,
337 return "<%s('%s:%s')>" % (self.__class__.__name__,
338 self.cache_id, self.cache_key)
338 self.cache_id, self.cache_key)
339
339
340 class DbMigrateVersion(Base, BaseModel):
340 class DbMigrateVersion(Base, BaseModel):
341 __tablename__ = 'db_migrate_version'
341 __tablename__ = 'db_migrate_version'
342 __table_args__ = {'useexisting':True}
342 __table_args__ = {'useexisting':True}
343 repository_id = Column('repository_id', String(250), primary_key=True)
343 repository_id = Column('repository_id', String(250), primary_key=True)
344 repository_path = Column('repository_path', Text)
344 repository_path = Column('repository_path', Text)
345 version = Column('version', Integer)
345 version = Column('version', Integer)
346
346
General Comments 0
You need to be logged in to leave comments. Login now