comparison rhodecode/model/db.py @ 2356:2da7b5984ae5 beta

typo fix + code garden
author Marcin Kuzminski <marcin@python-works.com>
date Mon, 28 May 2012 23:31:17 +0200
parents 90e06f53af8c
children ea079c9b62b5 e87c6aa9c5e7
comparison
equal deleted inserted replaced
2354:f3417f0d54b5 2356:2da7b5984ae5
25 25
26 import os 26 import os
27 import logging 27 import logging
28 import datetime 28 import datetime
29 import traceback 29 import traceback
30 import hashlib
30 from collections import defaultdict 31 from collections import defaultdict
31 32
32 from sqlalchemy import * 33 from sqlalchemy import *
33 from sqlalchemy.ext.hybrid import hybrid_property 34 from sqlalchemy.ext.hybrid import hybrid_property
34 from sqlalchemy.orm import relationship, joinedload, class_mapper, validates 35 from sqlalchemy.orm import relationship, joinedload, class_mapper, validates
41 42
42 from rhodecode.lib.utils2 import str2bool, safe_str, get_changeset_safe, \ 43 from rhodecode.lib.utils2 import str2bool, safe_str, get_changeset_safe, \
43 safe_unicode 44 safe_unicode
44 from rhodecode.lib.compat import json 45 from rhodecode.lib.compat import json
45 from rhodecode.lib.caching_query import FromCache 46 from rhodecode.lib.caching_query import FromCache
46
47 from rhodecode.model.meta import Base, Session 47 from rhodecode.model.meta import Base, Session
48 import hashlib 48
49 49
50 URL_SEP = '/' 50 URL_SEP = '/'
51 log = logging.getLogger(__name__) 51 log = logging.getLogger(__name__)
52 52
53 #============================================================================== 53 #==============================================================================
150 if hasattr(self, '__unicode__'): 150 if hasattr(self, '__unicode__'):
151 # python repr needs to return str 151 # python repr needs to return str
152 return safe_str(self.__unicode__()) 152 return safe_str(self.__unicode__())
153 return '<DB:%s>' % (self.__class__.__name__) 153 return '<DB:%s>' % (self.__class__.__name__)
154 154
155
155 class RhodeCodeSetting(Base, BaseModel): 156 class RhodeCodeSetting(Base, BaseModel):
156 __tablename__ = 'rhodecode_settings' 157 __tablename__ = 'rhodecode_settings'
157 __table_args__ = ( 158 __table_args__ = (
158 UniqueConstraint('app_settings_name'), 159 UniqueConstraint('app_settings_name'),
159 {'extend_existing': True, 'mysql_engine':'InnoDB', 160 {'extend_existing': True, 'mysql_engine': 'InnoDB',
160 'mysql_charset': 'utf8'} 161 'mysql_charset': 'utf8'}
161 ) 162 )
162 app_settings_id = Column("app_settings_id", Integer(), nullable=False, unique=True, default=None, primary_key=True) 163 app_settings_id = Column("app_settings_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
163 app_settings_name = Column("app_settings_name", String(length=255, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None) 164 app_settings_name = Column("app_settings_name", String(length=255, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
164 _app_settings_value = Column("app_settings_value", String(length=255, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None) 165 _app_settings_value = Column("app_settings_value", String(length=255, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
220 def get_ldap_settings(cls, cache=False): 221 def get_ldap_settings(cls, cache=False):
221 ret = cls.query()\ 222 ret = cls.query()\
222 .filter(cls.app_settings_name.startswith('ldap_')).all() 223 .filter(cls.app_settings_name.startswith('ldap_')).all()
223 fd = {} 224 fd = {}
224 for row in ret: 225 for row in ret:
225 fd.update({row.app_settings_name:row.app_settings_value}) 226 fd.update({row.app_settings_name: row.app_settings_value})
226 227
227 return fd 228 return fd
228 229
229 230
230 class RhodeCodeUi(Base, BaseModel): 231 class RhodeCodeUi(Base, BaseModel):
231 __tablename__ = 'rhodecode_ui' 232 __tablename__ = 'rhodecode_ui'
232 __table_args__ = ( 233 __table_args__ = (
233 UniqueConstraint('ui_key'), 234 UniqueConstraint('ui_key'),
234 {'extend_existing': True, 'mysql_engine':'InnoDB', 235 {'extend_existing': True, 'mysql_engine': 'InnoDB',
235 'mysql_charset': 'utf8'} 236 'mysql_charset': 'utf8'}
236 ) 237 )
237 238
238 HOOK_UPDATE = 'changegroup.update' 239 HOOK_UPDATE = 'changegroup.update'
239 HOOK_REPO_SIZE = 'changegroup.repo_size' 240 HOOK_REPO_SIZE = 'changegroup.repo_size'
280 281
281 class User(Base, BaseModel): 282 class User(Base, BaseModel):
282 __tablename__ = 'users' 283 __tablename__ = 'users'
283 __table_args__ = ( 284 __table_args__ = (
284 UniqueConstraint('username'), UniqueConstraint('email'), 285 UniqueConstraint('username'), UniqueConstraint('email'),
285 {'extend_existing': True, 'mysql_engine':'InnoDB', 286 {'extend_existing': True, 'mysql_engine': 'InnoDB',
286 'mysql_charset': 'utf8'} 287 'mysql_charset': 'utf8'}
287 ) 288 )
288 user_id = Column("user_id", Integer(), nullable=False, unique=True, default=None, primary_key=True) 289 user_id = Column("user_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
289 username = Column("username", String(length=255, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None) 290 username = Column("username", String(length=255, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
290 password = Column("password", String(length=255, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None) 291 password = Column("password", String(length=255, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
402 403
403 404
404 class UserLog(Base, BaseModel): 405 class UserLog(Base, BaseModel):
405 __tablename__ = 'user_logs' 406 __tablename__ = 'user_logs'
406 __table_args__ = ( 407 __table_args__ = (
407 {'extend_existing': True, 'mysql_engine':'InnoDB', 408 {'extend_existing': True, 'mysql_engine': 'InnoDB',
408 'mysql_charset': 'utf8'}, 409 'mysql_charset': 'utf8'},
409 ) 410 )
410 user_log_id = Column("user_log_id", Integer(), nullable=False, unique=True, default=None, primary_key=True) 411 user_log_id = Column("user_log_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
411 user_id = Column("user_id", Integer(), ForeignKey('users.user_id'), nullable=False, unique=None, default=None) 412 user_id = Column("user_id", Integer(), ForeignKey('users.user_id'), nullable=False, unique=None, default=None)
412 repository_id = Column("repository_id", Integer(), ForeignKey('repositories.repo_id'), nullable=True) 413 repository_id = Column("repository_id", Integer(), ForeignKey('repositories.repo_id'), nullable=True)
424 425
425 426
426 class UsersGroup(Base, BaseModel): 427 class UsersGroup(Base, BaseModel):
427 __tablename__ = 'users_groups' 428 __tablename__ = 'users_groups'
428 __table_args__ = ( 429 __table_args__ = (
429 {'extend_existing': True, 'mysql_engine':'InnoDB', 430 {'extend_existing': True, 'mysql_engine': 'InnoDB',
430 'mysql_charset': 'utf8'}, 431 'mysql_charset': 'utf8'},
431 ) 432 )
432 433
433 users_group_id = Column("users_group_id", Integer(), nullable=False, unique=True, default=None, primary_key=True) 434 users_group_id = Column("users_group_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
434 users_group_name = Column("users_group_name", String(length=255, convert_unicode=False, assert_unicode=None), nullable=False, unique=True, default=None) 435 users_group_name = Column("users_group_name", String(length=255, convert_unicode=False, assert_unicode=None), nullable=False, unique=True, default=None)
466 467
467 468
468 class UsersGroupMember(Base, BaseModel): 469 class UsersGroupMember(Base, BaseModel):
469 __tablename__ = 'users_groups_members' 470 __tablename__ = 'users_groups_members'
470 __table_args__ = ( 471 __table_args__ = (
471 {'extend_existing': True, 'mysql_engine':'InnoDB', 472 {'extend_existing': True, 'mysql_engine': 'InnoDB',
472 'mysql_charset': 'utf8'}, 473 'mysql_charset': 'utf8'},
473 ) 474 )
474 475
475 users_group_member_id = Column("users_group_member_id", Integer(), nullable=False, unique=True, default=None, primary_key=True) 476 users_group_member_id = Column("users_group_member_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
476 users_group_id = Column("users_group_id", Integer(), ForeignKey('users_groups.users_group_id'), nullable=False, unique=None, default=None) 477 users_group_id = Column("users_group_id", Integer(), ForeignKey('users_groups.users_group_id'), nullable=False, unique=None, default=None)
486 487
487 class Repository(Base, BaseModel): 488 class Repository(Base, BaseModel):
488 __tablename__ = 'repositories' 489 __tablename__ = 'repositories'
489 __table_args__ = ( 490 __table_args__ = (
490 UniqueConstraint('repo_name'), 491 UniqueConstraint('repo_name'),
491 {'extend_existing': True, 'mysql_engine':'InnoDB', 492 {'extend_existing': True, 'mysql_engine': 'InnoDB',
492 'mysql_charset': 'utf8'}, 493 'mysql_charset': 'utf8'},
493 ) 494 )
494 495
495 repo_id = Column("repo_id", Integer(), nullable=False, unique=True, default=None, primary_key=True) 496 repo_id = Column("repo_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
496 repo_name = Column("repo_name", String(length=255, convert_unicode=False, assert_unicode=None), nullable=False, unique=True, default=None) 497 repo_name = Column("repo_name", String(length=255, convert_unicode=False, assert_unicode=None), nullable=False, unique=True, default=None)
702 703
703 if cache_map: 704 if cache_map:
704 # get using prefilled cache_map 705 # get using prefilled cache_map
705 invalidate_repo = cache_map[self.repo_name] 706 invalidate_repo = cache_map[self.repo_name]
706 if invalidate_repo: 707 if invalidate_repo:
707 invalidate_repo = (None if invalidate_repo.cache_active 708 invalidate_repo = (None if invalidate_repo.cache_active
708 else invalidate_repo) 709 else invalidate_repo)
709 else: 710 else:
710 # get from invalidate 711 # get from invalidate
711 invalidate_repo = self.invalidate 712 invalidate_repo = self.invalidate
712 713
745 class RepoGroup(Base, BaseModel): 746 class RepoGroup(Base, BaseModel):
746 __tablename__ = 'groups' 747 __tablename__ = 'groups'
747 __table_args__ = ( 748 __table_args__ = (
748 UniqueConstraint('group_name', 'group_parent_id'), 749 UniqueConstraint('group_name', 'group_parent_id'),
749 CheckConstraint('group_id != group_parent_id'), 750 CheckConstraint('group_id != group_parent_id'),
750 {'extend_existing': True, 'mysql_engine':'InnoDB', 751 {'extend_existing': True, 'mysql_engine': 'InnoDB',
751 'mysql_charset': 'utf8'}, 752 'mysql_charset': 'utf8'},
752 ) 753 )
753 __mapper_args__ = {'order_by': 'group_name'} 754 __mapper_args__ = {'order_by': 'group_name'}
754 755
755 group_id = Column("group_id", Integer(), nullable=False, unique=True, default=None, primary_key=True) 756 group_id = Column("group_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
874 875
875 876
876 class Permission(Base, BaseModel): 877 class Permission(Base, BaseModel):
877 __tablename__ = 'permissions' 878 __tablename__ = 'permissions'
878 __table_args__ = ( 879 __table_args__ = (
879 {'extend_existing': True, 'mysql_engine':'InnoDB', 880 {'extend_existing': True, 'mysql_engine': 'InnoDB',
880 'mysql_charset': 'utf8'}, 881 'mysql_charset': 'utf8'},
881 ) 882 )
882 permission_id = Column("permission_id", Integer(), nullable=False, unique=True, default=None, primary_key=True) 883 permission_id = Column("permission_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
883 permission_name = Column("permission_name", String(length=255, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None) 884 permission_name = Column("permission_name", String(length=255, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
884 permission_longname = Column("permission_longname", String(length=255, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None) 885 permission_longname = Column("permission_longname", String(length=255, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
913 914
914 class UserRepoToPerm(Base, BaseModel): 915 class UserRepoToPerm(Base, BaseModel):
915 __tablename__ = 'repo_to_perm' 916 __tablename__ = 'repo_to_perm'
916 __table_args__ = ( 917 __table_args__ = (
917 UniqueConstraint('user_id', 'repository_id', 'permission_id'), 918 UniqueConstraint('user_id', 'repository_id', 'permission_id'),
918 {'extend_existing': True, 'mysql_engine':'InnoDB', 919 {'extend_existing': True, 'mysql_engine': 'InnoDB',
919 'mysql_charset': 'utf8'} 920 'mysql_charset': 'utf8'}
920 ) 921 )
921 repo_to_perm_id = Column("repo_to_perm_id", Integer(), nullable=False, unique=True, default=None, primary_key=True) 922 repo_to_perm_id = Column("repo_to_perm_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
922 user_id = Column("user_id", Integer(), ForeignKey('users.user_id'), nullable=False, unique=None, default=None) 923 user_id = Column("user_id", Integer(), ForeignKey('users.user_id'), nullable=False, unique=None, default=None)
923 permission_id = Column("permission_id", Integer(), ForeignKey('permissions.permission_id'), nullable=False, unique=None, default=None) 924 permission_id = Column("permission_id", Integer(), ForeignKey('permissions.permission_id'), nullable=False, unique=None, default=None)
942 943
943 class UserToPerm(Base, BaseModel): 944 class UserToPerm(Base, BaseModel):
944 __tablename__ = 'user_to_perm' 945 __tablename__ = 'user_to_perm'
945 __table_args__ = ( 946 __table_args__ = (
946 UniqueConstraint('user_id', 'permission_id'), 947 UniqueConstraint('user_id', 'permission_id'),
947 {'extend_existing': True, 'mysql_engine':'InnoDB', 948 {'extend_existing': True, 'mysql_engine': 'InnoDB',
948 'mysql_charset': 'utf8'} 949 'mysql_charset': 'utf8'}
949 ) 950 )
950 user_to_perm_id = Column("user_to_perm_id", Integer(), nullable=False, unique=True, default=None, primary_key=True) 951 user_to_perm_id = Column("user_to_perm_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
951 user_id = Column("user_id", Integer(), ForeignKey('users.user_id'), nullable=False, unique=None, default=None) 952 user_id = Column("user_id", Integer(), ForeignKey('users.user_id'), nullable=False, unique=None, default=None)
952 permission_id = Column("permission_id", Integer(), ForeignKey('permissions.permission_id'), nullable=False, unique=None, default=None) 953 permission_id = Column("permission_id", Integer(), ForeignKey('permissions.permission_id'), nullable=False, unique=None, default=None)
957 958
958 class UsersGroupRepoToPerm(Base, BaseModel): 959 class UsersGroupRepoToPerm(Base, BaseModel):
959 __tablename__ = 'users_group_repo_to_perm' 960 __tablename__ = 'users_group_repo_to_perm'
960 __table_args__ = ( 961 __table_args__ = (
961 UniqueConstraint('repository_id', 'users_group_id', 'permission_id'), 962 UniqueConstraint('repository_id', 'users_group_id', 'permission_id'),
962 {'extend_existing': True, 'mysql_engine':'InnoDB', 963 {'extend_existing': True, 'mysql_engine': 'InnoDB',
963 'mysql_charset': 'utf8'} 964 'mysql_charset': 'utf8'}
964 ) 965 )
965 users_group_to_perm_id = Column("users_group_to_perm_id", Integer(), nullable=False, unique=True, default=None, primary_key=True) 966 users_group_to_perm_id = Column("users_group_to_perm_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
966 users_group_id = Column("users_group_id", Integer(), ForeignKey('users_groups.users_group_id'), nullable=False, unique=None, default=None) 967 users_group_id = Column("users_group_id", Integer(), ForeignKey('users_groups.users_group_id'), nullable=False, unique=None, default=None)
967 permission_id = Column("permission_id", Integer(), ForeignKey('permissions.permission_id'), nullable=False, unique=None, default=None) 968 permission_id = Column("permission_id", Integer(), ForeignKey('permissions.permission_id'), nullable=False, unique=None, default=None)
986 987
987 class UsersGroupToPerm(Base, BaseModel): 988 class UsersGroupToPerm(Base, BaseModel):
988 __tablename__ = 'users_group_to_perm' 989 __tablename__ = 'users_group_to_perm'
989 __table_args__ = ( 990 __table_args__ = (
990 UniqueConstraint('users_group_id', 'permission_id',), 991 UniqueConstraint('users_group_id', 'permission_id',),
991 {'extend_existing': True, 'mysql_engine':'InnoDB', 992 {'extend_existing': True, 'mysql_engine': 'InnoDB',
992 'mysql_charset': 'utf8'} 993 'mysql_charset': 'utf8'}
993 ) 994 )
994 users_group_to_perm_id = Column("users_group_to_perm_id", Integer(), nullable=False, unique=True, default=None, primary_key=True) 995 users_group_to_perm_id = Column("users_group_to_perm_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
995 users_group_id = Column("users_group_id", Integer(), ForeignKey('users_groups.users_group_id'), nullable=False, unique=None, default=None) 996 users_group_id = Column("users_group_id", Integer(), ForeignKey('users_groups.users_group_id'), nullable=False, unique=None, default=None)
996 permission_id = Column("permission_id", Integer(), ForeignKey('permissions.permission_id'), nullable=False, unique=None, default=None) 997 permission_id = Column("permission_id", Integer(), ForeignKey('permissions.permission_id'), nullable=False, unique=None, default=None)
1001 1002
1002 class UserRepoGroupToPerm(Base, BaseModel): 1003 class UserRepoGroupToPerm(Base, BaseModel):
1003 __tablename__ = 'user_repo_group_to_perm' 1004 __tablename__ = 'user_repo_group_to_perm'
1004 __table_args__ = ( 1005 __table_args__ = (
1005 UniqueConstraint('user_id', 'group_id', 'permission_id'), 1006 UniqueConstraint('user_id', 'group_id', 'permission_id'),
1006 {'extend_existing': True, 'mysql_engine':'InnoDB', 1007 {'extend_existing': True, 'mysql_engine': 'InnoDB',
1007 'mysql_charset': 'utf8'} 1008 'mysql_charset': 'utf8'}
1008 ) 1009 )
1009 1010
1010 group_to_perm_id = Column("group_to_perm_id", Integer(), nullable=False, unique=True, default=None, primary_key=True) 1011 group_to_perm_id = Column("group_to_perm_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
1011 user_id = Column("user_id", Integer(), ForeignKey('users.user_id'), nullable=False, unique=None, default=None) 1012 user_id = Column("user_id", Integer(), ForeignKey('users.user_id'), nullable=False, unique=None, default=None)
1019 1020
1020 class UsersGroupRepoGroupToPerm(Base, BaseModel): 1021 class UsersGroupRepoGroupToPerm(Base, BaseModel):
1021 __tablename__ = 'users_group_repo_group_to_perm' 1022 __tablename__ = 'users_group_repo_group_to_perm'
1022 __table_args__ = ( 1023 __table_args__ = (
1023 UniqueConstraint('users_group_id', 'group_id'), 1024 UniqueConstraint('users_group_id', 'group_id'),
1024 {'extend_existing': True, 'mysql_engine':'InnoDB', 1025 {'extend_existing': True, 'mysql_engine': 'InnoDB',
1025 'mysql_charset': 'utf8'} 1026 'mysql_charset': 'utf8'}
1026 ) 1027 )
1027 1028
1028 users_group_repo_group_to_perm_id = Column("users_group_repo_group_to_perm_id", Integer(), nullable=False, unique=True, default=None, primary_key=True) 1029 users_group_repo_group_to_perm_id = Column("users_group_repo_group_to_perm_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
1029 users_group_id = Column("users_group_id", Integer(), ForeignKey('users_groups.users_group_id'), nullable=False, unique=None, default=None) 1030 users_group_id = Column("users_group_id", Integer(), ForeignKey('users_groups.users_group_id'), nullable=False, unique=None, default=None)
1037 1038
1038 class Statistics(Base, BaseModel): 1039 class Statistics(Base, BaseModel):
1039 __tablename__ = 'statistics' 1040 __tablename__ = 'statistics'
1040 __table_args__ = ( 1041 __table_args__ = (
1041 UniqueConstraint('repository_id'), 1042 UniqueConstraint('repository_id'),
1042 {'extend_existing': True, 'mysql_engine':'InnoDB', 1043 {'extend_existing': True, 'mysql_engine': 'InnoDB',
1043 'mysql_charset': 'utf8'} 1044 'mysql_charset': 'utf8'}
1044 ) 1045 )
1045 stat_id = Column("stat_id", Integer(), nullable=False, unique=True, default=None, primary_key=True) 1046 stat_id = Column("stat_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
1046 repository_id = Column("repository_id", Integer(), ForeignKey('repositories.repo_id'), nullable=False, unique=True, default=None) 1047 repository_id = Column("repository_id", Integer(), ForeignKey('repositories.repo_id'), nullable=False, unique=True, default=None)
1047 stat_on_revision = Column("stat_on_revision", Integer(), nullable=False) 1048 stat_on_revision = Column("stat_on_revision", Integer(), nullable=False)
1055 class UserFollowing(Base, BaseModel): 1056 class UserFollowing(Base, BaseModel):
1056 __tablename__ = 'user_followings' 1057 __tablename__ = 'user_followings'
1057 __table_args__ = ( 1058 __table_args__ = (
1058 UniqueConstraint('user_id', 'follows_repository_id'), 1059 UniqueConstraint('user_id', 'follows_repository_id'),
1059 UniqueConstraint('user_id', 'follows_user_id'), 1060 UniqueConstraint('user_id', 'follows_user_id'),
1060 {'extend_existing': True, 'mysql_engine':'InnoDB', 1061 {'extend_existing': True, 'mysql_engine': 'InnoDB',
1061 'mysql_charset': 'utf8'} 1062 'mysql_charset': 'utf8'}
1062 ) 1063 )
1063 1064
1064 user_following_id = Column("user_following_id", Integer(), nullable=False, unique=True, default=None, primary_key=True) 1065 user_following_id = Column("user_following_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
1065 user_id = Column("user_id", Integer(), ForeignKey('users.user_id'), nullable=False, unique=None, default=None) 1066 user_id = Column("user_id", Integer(), ForeignKey('users.user_id'), nullable=False, unique=None, default=None)
1080 class CacheInvalidation(Base, BaseModel): 1081 class CacheInvalidation(Base, BaseModel):
1081 __tablename__ = 'cache_invalidation' 1082 __tablename__ = 'cache_invalidation'
1082 __table_args__ = ( 1083 __table_args__ = (
1083 UniqueConstraint('cache_key'), 1084 UniqueConstraint('cache_key'),
1084 Index('key_idx', 'cache_key'), 1085 Index('key_idx', 'cache_key'),
1085 {'extend_existing': True, 'mysql_engine':'InnoDB', 1086 {'extend_existing': True, 'mysql_engine': 'InnoDB',
1086 'mysql_charset': 'utf8'}, 1087 'mysql_charset': 'utf8'},
1087 ) 1088 )
1088 cache_id = Column("cache_id", Integer(), nullable=False, unique=True, default=None, primary_key=True) 1089 cache_id = Column("cache_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
1089 cache_key = Column("cache_key", String(length=255, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None) 1090 cache_key = Column("cache_key", String(length=255, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
1090 cache_args = Column("cache_args", String(length=255, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None) 1091 cache_args = Column("cache_args", String(length=255, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
1126 inv_obj = Session.query(cls).filter(cls.cache_key == key).scalar() 1127 inv_obj = Session.query(cls).filter(cls.cache_key == key).scalar()
1127 if not inv_obj: 1128 if not inv_obj:
1128 try: 1129 try:
1129 inv_obj = CacheInvalidation(key, org_key) 1130 inv_obj = CacheInvalidation(key, org_key)
1130 Session.add(inv_obj) 1131 Session.add(inv_obj)
1131 #Session.commit() 1132 Session.commit()
1132 except Exception: 1133 except Exception:
1133 log.error(traceback.format_exc()) 1134 log.error(traceback.format_exc())
1134 Session.rollback() 1135 Session.rollback()
1135 return inv_obj 1136 return inv_obj
1136 1137
1192 1193
1193 def __init__(self, *args, **kwargs): 1194 def __init__(self, *args, **kwargs):
1194 fixkey = kwargs.get('fixkey') 1195 fixkey = kwargs.get('fixkey')
1195 if fixkey: 1196 if fixkey:
1196 del kwargs['fixkey'] 1197 del kwargs['fixkey']
1197 self.fixkey = fixkey 1198 self.fixkey = fixkey
1198 super(cachemapdict, self).__init__(*args, **kwargs) 1199 super(cachemapdict, self).__init__(*args, **kwargs)
1199 1200
1200 def __getattr__(self, name): 1201 def __getattr__(self, name):
1201 key = name 1202 key = name
1202 if self.fixkey: 1203 if self.fixkey:
1221 1222
1222 1223
1223 class ChangesetComment(Base, BaseModel): 1224 class ChangesetComment(Base, BaseModel):
1224 __tablename__ = 'changeset_comments' 1225 __tablename__ = 'changeset_comments'
1225 __table_args__ = ( 1226 __table_args__ = (
1226 {'extend_existing': True, 'mysql_engine':'InnoDB', 1227 {'extend_existing': True, 'mysql_engine': 'InnoDB',
1227 'mysql_charset': 'utf8'}, 1228 'mysql_charset': 'utf8'},
1228 ) 1229 )
1229 comment_id = Column('comment_id', Integer(), nullable=False, primary_key=True) 1230 comment_id = Column('comment_id', Integer(), nullable=False, primary_key=True)
1230 repo_id = Column('repo_id', Integer(), ForeignKey('repositories.repo_id'), nullable=False) 1231 repo_id = Column('repo_id', Integer(), ForeignKey('repositories.repo_id'), nullable=False)
1231 revision = Column('revision', String(40), nullable=False) 1232 revision = Column('revision', String(40), nullable=False)
1253 1254
1254 1255
1255 class Notification(Base, BaseModel): 1256 class Notification(Base, BaseModel):
1256 __tablename__ = 'notifications' 1257 __tablename__ = 'notifications'
1257 __table_args__ = ( 1258 __table_args__ = (
1258 {'extend_existing': True, 'mysql_engine':'InnoDB', 1259 {'extend_existing': True, 'mysql_engine': 'InnoDB',
1259 'mysql_charset': 'utf8'}, 1260 'mysql_charset': 'utf8'},
1260 ) 1261 )
1261 1262
1262 TYPE_CHANGESET_COMMENT = u'cs_comment' 1263 TYPE_CHANGESET_COMMENT = u'cs_comment'
1263 TYPE_MESSAGE = u'message' 1264 TYPE_MESSAGE = u'message'
1308 1309
1309 class UserNotification(Base, BaseModel): 1310 class UserNotification(Base, BaseModel):
1310 __tablename__ = 'user_to_notification' 1311 __tablename__ = 'user_to_notification'
1311 __table_args__ = ( 1312 __table_args__ = (
1312 UniqueConstraint('user_id', 'notification_id'), 1313 UniqueConstraint('user_id', 'notification_id'),
1313 {'extend_existing': True, 'mysql_engine':'InnoDB', 1314 {'extend_existing': True, 'mysql_engine': 'InnoDB',
1314 'mysql_charset': 'utf8'} 1315 'mysql_charset': 'utf8'}
1315 ) 1316 )
1316 user_id = Column('user_id', Integer(), ForeignKey('users.user_id'), primary_key=True) 1317 user_id = Column('user_id', Integer(), ForeignKey('users.user_id'), primary_key=True)
1317 notification_id = Column("notification_id", Integer(), ForeignKey('notifications.notification_id'), primary_key=True) 1318 notification_id = Column("notification_id", Integer(), ForeignKey('notifications.notification_id'), primary_key=True)
1318 read = Column('read', Boolean, default=False) 1319 read = Column('read', Boolean, default=False)
1328 1329
1329 1330
1330 class DbMigrateVersion(Base, BaseModel): 1331 class DbMigrateVersion(Base, BaseModel):
1331 __tablename__ = 'db_migrate_version' 1332 __tablename__ = 'db_migrate_version'
1332 __table_args__ = ( 1333 __table_args__ = (
1333 {'extend_existing': True, 'mysql_engine':'InnoDB', 1334 {'extend_existing': True, 'mysql_engine': 'InnoDB',
1334 'mysql_charset': 'utf8'}, 1335 'mysql_charset': 'utf8'},
1335 ) 1336 )
1336 repository_id = Column('repository_id', String(250), primary_key=True) 1337 repository_id = Column('repository_id', String(250), primary_key=True)
1337 repository_path = Column('repository_path', Text) 1338 repository_path = Column('repository_path', Text)
1338 version = Column('version', Integer) 1339 version = Column('version', Integer)