comparison rhodecode/model/repo.py @ 692:cb0d9ce6ac5c beta

#50 on point cache invalidation changes. Created cacheInvalidation table cleaned up sa sessions from models, since it wasn't really needed.
author Marcin Kuzminski <marcin@python-works.com>
date Mon, 15 Nov 2010 02:26:19 +0100
parents dff6d5cb8bba
children b9bbc0d6e9f3
comparison
equal deleted inserted replaced
691:7486da5f0628 692:cb0d9ce6ac5c
34 import traceback 34 import traceback
35 log = logging.getLogger(__name__) 35 log = logging.getLogger(__name__)
36 36
37 class RepoModel(object): 37 class RepoModel(object):
38 38
39 def __init__(self, sa=None): 39 def __init__(self):
40 if not sa: 40 self.sa = Session()
41 self.sa = Session()
42 else:
43 self.sa = sa
44 41
45 def get(self, repo_id, cache=False): 42 def get(self, repo_id, cache=False):
46 repo = self.sa.query(Repository)\ 43 repo = self.sa.query(Repository)\
47 .filter(Repository.repo_name == repo_id) 44 .filter(Repository.repo_name == repo_id)
48 45
65 try: 62 try:
66 63
67 #update permissions 64 #update permissions
68 for username, perm in form_data['perms_updates']: 65 for username, perm in form_data['perms_updates']:
69 r2p = self.sa.query(RepoToPerm)\ 66 r2p = self.sa.query(RepoToPerm)\
70 .filter(RepoToPerm.user == UserModel(self.sa).get_by_username(username, cache=False))\ 67 .filter(RepoToPerm.user == UserModel().get_by_username(username, cache=False))\
71 .filter(RepoToPerm.repository == self.get(repo_name))\ 68 .filter(RepoToPerm.repository == self.get(repo_name))\
72 .one() 69 .one()
73 70
74 r2p.permission_id = self.sa.query(Permission).filter( 71 r2p.permission_id = self.sa.query(Permission).filter(
75 Permission.permission_name == 72 Permission.permission_name ==
78 75
79 #set new permissions 76 #set new permissions
80 for username, perm in form_data['perms_new']: 77 for username, perm in form_data['perms_new']:
81 r2p = RepoToPerm() 78 r2p = RepoToPerm()
82 r2p.repository = self.get(repo_name) 79 r2p.repository = self.get(repo_name)
83 r2p.user = UserModel(self.sa).get_by_username(username, cache=False) 80 r2p.user = UserModel().get_by_username(username, cache=False)
84 81
85 r2p.permission_id = self.sa.query(Permission).filter( 82 r2p.permission_id = self.sa.query(Permission).filter(
86 Permission.permission_name == perm)\ 83 Permission.permission_name == perm)\
87 .one().permission_id 84 .one().permission_id
88 self.sa.add(r2p) 85 self.sa.add(r2p)
132 self.sa.add(new_repo) 129 self.sa.add(new_repo)
133 130
134 #create default permission 131 #create default permission
135 repo_to_perm = RepoToPerm() 132 repo_to_perm = RepoToPerm()
136 default = 'repository.read' 133 default = 'repository.read'
137 for p in UserModel(self.sa).get_by_username('default', cache=False).user_perms: 134 for p in UserModel().get_by_username('default', cache=False).user_perms:
138 if p.permission.permission_name.startswith('repository.'): 135 if p.permission.permission_name.startswith('repository.'):
139 default = p.permission.permission_name 136 default = p.permission.permission_name
140 break 137 break
141 138
142 default_perm = 'repository.none' if form_data['private'] else default 139 default_perm = 'repository.none' if form_data['private'] else default
144 repo_to_perm.permission_id = self.sa.query(Permission)\ 141 repo_to_perm.permission_id = self.sa.query(Permission)\
145 .filter(Permission.permission_name == default_perm)\ 142 .filter(Permission.permission_name == default_perm)\
146 .one().permission_id 143 .one().permission_id
147 144
148 repo_to_perm.repository_id = new_repo.repo_id 145 repo_to_perm.repository_id = new_repo.repo_id
149 repo_to_perm.user_id = UserModel(self.sa).get_by_username('default', cache=False).user_id 146 repo_to_perm.user_id = UserModel().get_by_username('default', cache=False).user_id
150 147
151 self.sa.add(repo_to_perm) 148 self.sa.add(repo_to_perm)
152 self.sa.commit() 149 self.sa.commit()
153 if not just_db: 150 if not just_db:
154 self.__create_repo(repo_name, form_data['repo_type']) 151 self.__create_repo(repo_name, form_data['repo_type'])