Mercurial > kallithea
comparison rhodecode/model/db.py @ 1136:93b980ebee55
changes for release 1.1.5
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Thu, 17 Mar 2011 01:13:48 +0100 |
parents | af6ca51fb80f |
children | a3b2b4b4e440 |
comparison
equal
deleted
inserted
replaced
1095:3cdacd152b24 | 1136:93b980ebee55 |
---|---|
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 |
34 from sqlalchemy.orm.session import Session | 34 from sqlalchemy.orm.interfaces import MapperExtension |
35 | 35 |
36 from rhodecode.model.meta import Base | 36 from rhodecode.model.meta import Base, Session |
37 | 37 |
38 log = logging.getLogger(__name__) | 38 log = logging.getLogger(__name__) |
39 | 39 |
40 class BaseModel(object): | 40 |
41 | 41 class RhodeCodeSettings(Base): |
42 @classmethod | |
43 def _get_keys(cls): | |
44 """return column names for this model """ | |
45 return class_mapper(cls).c.keys() | |
46 | |
47 def get_dict(self): | |
48 """return dict with keys and values corresponding | |
49 to this model data """ | |
50 | |
51 d = {} | |
52 for k in self._get_keys(): | |
53 d[k] = getattr(self, k) | |
54 return d | |
55 | |
56 def get_appstruct(self): | |
57 """return list with keys and values tupples corresponding | |
58 to this model data """ | |
59 | |
60 l = [] | |
61 for k in self._get_keys(): | |
62 l.append((k, getattr(self, k),)) | |
63 return l | |
64 | |
65 def populate_obj(self, populate_dict): | |
66 """populate model with data from given populate_dict""" | |
67 | |
68 for k in self._get_keys(): | |
69 if k in populate_dict: | |
70 setattr(self, k, populate_dict[k]) | |
71 | |
72 class RhodeCodeSettings(Base, BaseModel): | |
73 __tablename__ = 'rhodecode_settings' | 42 __tablename__ = 'rhodecode_settings' |
74 __table_args__ = (UniqueConstraint('app_settings_name'), {'useexisting':True}) | 43 __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) | 44 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) | 45 app_settings_name = Column("app_settings_name", String(length=255, 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) | 46 app_settings_value = Column("app_settings_value", String(length=255, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None) |
78 | 47 |
79 def __init__(self, k='', v=''): | 48 def __init__(self, k='', v=''): |
80 self.app_settings_name = k | 49 self.app_settings_name = k |
81 self.app_settings_value = v | 50 self.app_settings_value = v |
82 | 51 |
83 def __repr__(self): | 52 def __repr__(self): |
84 return "<%s('%s:%s')>" % (self.__class__.__name__, | 53 return "<%s('%s:%s')>" % (self.__class__.__name__, |
85 self.app_settings_name, self.app_settings_value) | 54 self.app_settings_name, self.app_settings_value) |
86 | 55 |
87 class RhodeCodeUi(Base, BaseModel): | 56 class RhodeCodeUi(Base): |
88 __tablename__ = 'rhodecode_ui' | 57 __tablename__ = 'rhodecode_ui' |
89 __table_args__ = {'useexisting':True} | 58 __table_args__ = {'useexisting':True} |
90 ui_id = Column("ui_id", Integer(), nullable=False, unique=True, default=None, primary_key=True) | 59 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) | 60 ui_section = Column("ui_section", String(length=255, 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) | 61 ui_key = Column("ui_key", String(length=255, 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) | 62 ui_value = Column("ui_value", String(length=255, 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) | 63 ui_active = Column("ui_active", Boolean(), nullable=True, unique=None, default=True) |
95 | 64 |
96 | 65 |
97 class User(Base, BaseModel): | 66 class User(Base): |
98 __tablename__ = 'users' | 67 __tablename__ = 'users' |
99 __table_args__ = (UniqueConstraint('username'), UniqueConstraint('email'), {'useexisting':True}) | 68 __table_args__ = (UniqueConstraint('username'), UniqueConstraint('email'), {'useexisting':True}) |
100 user_id = Column("user_id", Integer(), nullable=False, unique=True, default=None, primary_key=True) | 69 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) | 70 username = Column("username", String(length=255, 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) | 71 password = Column("password", String(length=255, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None) |
103 active = Column("active", Boolean(), nullable=True, unique=None, default=None) | 72 active = Column("active", Boolean(), nullable=True, unique=None, default=None) |
104 admin = Column("admin", Boolean(), nullable=True, unique=None, default=False) | 73 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) | 74 name = Column("name", String(length=255, 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) | 75 lastname = Column("lastname", String(length=255, 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) | 76 email = Column("email", String(length=255, 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) | 77 last_login = Column("last_login", DateTime(timezone=False), nullable=True, unique=None, default=None) |
109 is_ldap = Column("is_ldap", Boolean(), nullable=False, unique=None, default=False) | 78 is_ldap = Column("is_ldap", Boolean(), nullable=False, unique=None, default=False) |
110 | 79 |
111 user_log = relationship('UserLog', cascade='all') | 80 user_log = relationship('UserLog', cascade='all') |
112 user_perms = relationship('UserToPerm', primaryjoin="User.user_id==UserToPerm.user_id", cascade='all') | 81 user_perms = relationship('UserToPerm', primaryjoin="User.user_id==UserToPerm.user_id", cascade='all') |
116 | 85 |
117 @property | 86 @property |
118 def full_contact(self): | 87 def full_contact(self): |
119 return '%s %s <%s>' % (self.name, self.lastname, self.email) | 88 return '%s %s <%s>' % (self.name, self.lastname, self.email) |
120 | 89 |
90 @property | |
91 def short_contact(self): | |
92 return '%s %s' % (self.name, self.lastname) | |
93 | |
121 | 94 |
122 @property | 95 @property |
123 def is_admin(self): | 96 def is_admin(self): |
124 return self.admin | 97 return self.admin |
125 | 98 |
126 def __repr__(self): | 99 def __repr__(self): |
127 return "<%s('id:%s:%s')>" % (self.__class__.__name__, | 100 return "<%s('id:%s:%s')>" % (self.__class__.__name__, |
128 self.user_id, self.username) | 101 self.user_id, self.username) |
102 | |
103 @classmethod | |
104 def by_username(cls, username): | |
105 return Session.query(cls).filter(cls.username == username).one() | |
106 | |
129 | 107 |
130 def update_lastlogin(self): | 108 def update_lastlogin(self): |
131 """Update user lastlogin""" | 109 """Update user lastlogin""" |
132 | 110 |
133 try: | 111 try: |
138 log.debug('updated user %s lastlogin', self.username) | 116 log.debug('updated user %s lastlogin', self.username) |
139 except (DatabaseError,): | 117 except (DatabaseError,): |
140 session.rollback() | 118 session.rollback() |
141 | 119 |
142 | 120 |
143 class UserLog(Base, BaseModel): | 121 class UserLog(Base): |
144 __tablename__ = 'user_logs' | 122 __tablename__ = 'user_logs' |
145 __table_args__ = {'useexisting':True} | 123 __table_args__ = {'useexisting':True} |
146 user_log_id = Column("user_log_id", Integer(), nullable=False, unique=True, default=None, primary_key=True) | 124 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) | 125 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) | 126 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) | 127 repository_name = Column("repository_name", String(length=255, 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) | 128 user_ip = Column("user_ip", String(length=255, 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) | 129 action = Column("action", UnicodeText(length=1200000, 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) | 130 action_date = Column("action_date", DateTime(timezone=False), nullable=True, unique=None, default=None) |
153 | 131 |
154 @property | 132 @property |
155 def action_as_day(self): | 133 def action_as_day(self): |
156 return date(*self.action_date.timetuple()[:3]) | 134 return date(*self.action_date.timetuple()[:3]) |
157 | 135 |
158 user = relationship('User') | 136 user = relationship('User') |
159 repository = relationship('Repository') | 137 repository = relationship('Repository') |
160 | 138 |
161 class Repository(Base, BaseModel): | 139 class Repository(Base): |
162 __tablename__ = 'repositories' | 140 __tablename__ = 'repositories' |
163 __table_args__ = (UniqueConstraint('repo_name'), {'useexisting':True},) | 141 __table_args__ = (UniqueConstraint('repo_name'), {'useexisting':True},) |
164 repo_id = Column("repo_id", Integer(), nullable=False, unique=True, default=None, primary_key=True) | 142 repo_id = Column("repo_id", Integer(), nullable=False, unique=True, default=None, primary_key=True) |
165 repo_name = Column("repo_name", String(length=None, convert_unicode=False, assert_unicode=None), nullable=False, unique=True, default=None) | 143 repo_name = Column("repo_name", String(length=255, convert_unicode=False, assert_unicode=None), nullable=False, unique=True, default=None) |
166 repo_type = Column("repo_type", String(length=None, convert_unicode=False, assert_unicode=None), nullable=False, unique=False, default='hg') | 144 repo_type = Column("repo_type", String(length=255, convert_unicode=False, assert_unicode=None), nullable=False, unique=False, default='hg') |
167 user_id = Column("user_id", Integer(), ForeignKey('users.user_id'), nullable=False, unique=False, default=None) | 145 user_id = Column("user_id", Integer(), ForeignKey('users.user_id'), nullable=False, unique=False, default=None) |
168 private = Column("private", Boolean(), nullable=True, unique=None, default=None) | 146 private = Column("private", Boolean(), nullable=True, unique=None, default=None) |
169 enable_statistics = Column("statistics", Boolean(), nullable=True, unique=None, default=True) | 147 enable_statistics = Column("statistics", Boolean(), nullable=True, unique=None, default=True) |
170 description = Column("description", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None) | 148 description = Column("description", String(length=10000, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None) |
171 fork_id = Column("fork_id", Integer(), ForeignKey('repositories.repo_id'), nullable=True, unique=False, default=None) | 149 fork_id = Column("fork_id", Integer(), ForeignKey('repositories.repo_id'), nullable=True, unique=False, default=None) |
172 | 150 |
173 user = relationship('User') | 151 user = relationship('User') |
174 fork = relationship('Repository', remote_side=repo_id) | 152 fork = relationship('Repository', remote_side=repo_id) |
175 repo_to_perm = relationship('RepoToPerm', cascade='all') | 153 repo_to_perm = relationship('RepoToPerm', cascade='all') |
176 stats = relationship('Statistics', cascade='all', uselist=False) | 154 stats = relationship('Statistics', cascade='all', uselist=False) |
177 | 155 |
178 repo_followers = relationship('UserFollowing', primaryjoin='UserFollowing.follows_repo_id==Repository.repo_id', cascade='all') | 156 repo_followers = relationship('UserFollowing', primaryjoin='UserFollowing.follows_repo_id==Repository.repo_id', cascade='all') |
179 | 157 |
180 logs = relationship('UserLog', cascade='all') | 158 logs = relationship('UserLog', cascade='all') |
181 | 159 |
182 def __repr__(self): | 160 def __repr__(self): |
183 return "<%s('%s:%s')>" % (self.__class__.__name__, | 161 return "<%s('%s:%s')>" % (self.__class__.__name__, |
184 self.repo_id, self.repo_name) | 162 self.repo_id, self.repo_name) |
185 | 163 |
186 class Permission(Base, BaseModel): | 164 class Permission(Base): |
187 __tablename__ = 'permissions' | 165 __tablename__ = 'permissions' |
188 __table_args__ = {'useexisting':True} | 166 __table_args__ = {'useexisting':True} |
189 permission_id = Column("permission_id", Integer(), nullable=False, unique=True, default=None, primary_key=True) | 167 permission_id = Column("permission_id", Integer(), nullable=False, unique=True, default=None, primary_key=True) |
190 permission_name = Column("permission_name", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None) | 168 permission_name = Column("permission_name", String(length=255, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None) |
191 permission_longname = Column("permission_longname", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None) | 169 permission_longname = Column("permission_longname", String(length=255, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None) |
192 | 170 |
193 def __repr__(self): | 171 def __repr__(self): |
194 return "<%s('%s:%s')>" % (self.__class__.__name__, | 172 return "<%s('%s:%s')>" % (self.__class__.__name__, |
195 self.permission_id, self.permission_name) | 173 self.permission_id, self.permission_name) |
196 | 174 |
197 class RepoToPerm(Base, BaseModel): | 175 class RepoToPerm(Base): |
198 __tablename__ = 'repo_to_perm' | 176 __tablename__ = 'repo_to_perm' |
199 __table_args__ = (UniqueConstraint('user_id', 'repository_id'), {'useexisting':True}) | 177 __table_args__ = (UniqueConstraint('user_id', 'repository_id'), {'useexisting':True}) |
200 repo_to_perm_id = Column("repo_to_perm_id", Integer(), nullable=False, unique=True, default=None, primary_key=True) | 178 repo_to_perm_id = Column("repo_to_perm_id", Integer(), nullable=False, unique=True, default=None, primary_key=True) |
201 user_id = Column("user_id", Integer(), ForeignKey('users.user_id'), nullable=False, unique=None, default=None) | 179 user_id = Column("user_id", Integer(), ForeignKey('users.user_id'), nullable=False, unique=None, default=None) |
202 permission_id = Column("permission_id", Integer(), ForeignKey('permissions.permission_id'), nullable=False, unique=None, default=None) | 180 permission_id = Column("permission_id", Integer(), ForeignKey('permissions.permission_id'), nullable=False, unique=None, default=None) |
204 | 182 |
205 user = relationship('User') | 183 user = relationship('User') |
206 permission = relationship('Permission') | 184 permission = relationship('Permission') |
207 repository = relationship('Repository') | 185 repository = relationship('Repository') |
208 | 186 |
209 class UserToPerm(Base, BaseModel): | 187 class UserToPerm(Base): |
210 __tablename__ = 'user_to_perm' | 188 __tablename__ = 'user_to_perm' |
211 __table_args__ = (UniqueConstraint('user_id', 'permission_id'), {'useexisting':True}) | 189 __table_args__ = (UniqueConstraint('user_id', 'permission_id'), {'useexisting':True}) |
212 user_to_perm_id = Column("user_to_perm_id", Integer(), nullable=False, unique=True, default=None, primary_key=True) | 190 user_to_perm_id = Column("user_to_perm_id", Integer(), nullable=False, unique=True, default=None, primary_key=True) |
213 user_id = Column("user_id", Integer(), ForeignKey('users.user_id'), nullable=False, unique=None, default=None) | 191 user_id = Column("user_id", Integer(), ForeignKey('users.user_id'), nullable=False, unique=None, default=None) |
214 permission_id = Column("permission_id", Integer(), ForeignKey('permissions.permission_id'), nullable=False, unique=None, default=None) | 192 permission_id = Column("permission_id", Integer(), ForeignKey('permissions.permission_id'), nullable=False, unique=None, default=None) |
215 | 193 |
216 user = relationship('User') | 194 user = relationship('User') |
217 permission = relationship('Permission') | 195 permission = relationship('Permission') |
218 | 196 |
219 class Statistics(Base, BaseModel): | 197 class Statistics(Base): |
220 __tablename__ = 'statistics' | 198 __tablename__ = 'statistics' |
221 __table_args__ = (UniqueConstraint('repository_id'), {'useexisting':True}) | 199 __table_args__ = (UniqueConstraint('repository_id'), {'useexisting':True}) |
222 stat_id = Column("stat_id", Integer(), nullable=False, unique=True, default=None, primary_key=True) | 200 stat_id = Column("stat_id", Integer(), nullable=False, unique=True, default=None, primary_key=True) |
223 repository_id = Column("repository_id", Integer(), ForeignKey(u'repositories.repo_id'), nullable=False, unique=True, default=None) | 201 repository_id = Column("repository_id", Integer(), ForeignKey('repositories.repo_id'), nullable=False, unique=True, default=None) |
224 stat_on_revision = Column("stat_on_revision", Integer(), nullable=False) | 202 stat_on_revision = Column("stat_on_revision", Integer(), nullable=False) |
225 commit_activity = Column("commit_activity", LargeBinary(), nullable=False)#JSON data | 203 commit_activity = Column("commit_activity", LargeBinary(1000000), nullable=False)#JSON data |
226 commit_activity_combined = Column("commit_activity_combined", LargeBinary(), nullable=False)#JSON data | 204 commit_activity_combined = Column("commit_activity_combined", LargeBinary(), nullable=False)#JSON data |
227 languages = Column("languages", LargeBinary(), nullable=False)#JSON data | 205 languages = Column("languages", LargeBinary(1000000), nullable=False)#JSON data |
228 | 206 |
229 repository = relationship('Repository', single_parent=True) | 207 repository = relationship('Repository', single_parent=True) |
230 | 208 |
231 class UserFollowing(Base, BaseModel): | 209 class UserFollowing(Base): |
232 __tablename__ = 'user_followings' | 210 __tablename__ = 'user_followings' |
233 __table_args__ = (UniqueConstraint('user_id', 'follows_repository_id'), | 211 __table_args__ = (UniqueConstraint('user_id', 'follows_repository_id'), |
234 UniqueConstraint('user_id', 'follows_user_id') | 212 UniqueConstraint('user_id', 'follows_user_id') |
235 , {'useexisting':True}) | 213 , {'useexisting':True}) |
236 | 214 |
242 user = relationship('User', primaryjoin='User.user_id==UserFollowing.user_id') | 220 user = relationship('User', primaryjoin='User.user_id==UserFollowing.user_id') |
243 | 221 |
244 follows_user = relationship('User', primaryjoin='User.user_id==UserFollowing.follows_user_id') | 222 follows_user = relationship('User', primaryjoin='User.user_id==UserFollowing.follows_user_id') |
245 follows_repository = relationship('Repository', order_by='Repository.repo_name') | 223 follows_repository = relationship('Repository', order_by='Repository.repo_name') |
246 | 224 |
247 class CacheInvalidation(Base, BaseModel): | 225 class CacheInvalidation(Base): |
248 __tablename__ = 'cache_invalidation' | 226 __tablename__ = 'cache_invalidation' |
249 __table_args__ = (UniqueConstraint('cache_key'), {'useexisting':True}) | 227 __table_args__ = (UniqueConstraint('cache_key'), {'useexisting':True}) |
250 cache_id = Column("cache_id", Integer(), nullable=False, unique=True, default=None, primary_key=True) | 228 cache_id = Column("cache_id", Integer(), nullable=False, unique=True, default=None, primary_key=True) |
251 cache_key = Column("cache_key", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None) | 229 cache_key = Column("cache_key", String(length=255, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None) |
252 cache_args = Column("cache_args", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None) | 230 cache_args = Column("cache_args", String(length=255, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None) |
253 cache_active = Column("cache_active", Boolean(), nullable=True, unique=None, default=False) | 231 cache_active = Column("cache_active", Boolean(), nullable=True, unique=None, default=False) |
254 | 232 |
255 | 233 |
256 def __init__(self, cache_key, cache_args=''): | 234 def __init__(self, cache_key, cache_args=''): |
257 self.cache_key = cache_key | 235 self.cache_key = cache_key |
260 | 238 |
261 def __repr__(self): | 239 def __repr__(self): |
262 return "<%s('%s:%s')>" % (self.__class__.__name__, | 240 return "<%s('%s:%s')>" % (self.__class__.__name__, |
263 self.cache_id, self.cache_key) | 241 self.cache_id, self.cache_key) |
264 | 242 |
265 class DbMigrateVersion(Base, BaseModel): | 243 class DbMigrateVersion(Base): |
266 __tablename__ = 'db_migrate_version' | 244 __tablename__ = 'db_migrate_version' |
267 __table_args__ = {'useexisting':True} | 245 __table_args__ = {'useexisting':True} |
268 repository_id = Column('repository_id', String(250), primary_key=True) | 246 repository_id = Column('repository_id', String(255), primary_key=True) |
269 repository_path = Column('repository_path', Text) | 247 repository_path = Column('repository_path', Text) |
270 version = Column('version', Integer) | 248 version = Column('version', Integer) |
271 | 249 |