comparison rhodecode/lib/utils.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 ecc566f8b69f
children a9bc513a1fe3
comparison
equal deleted inserted replaced
691:7486da5f0628 692:cb0d9ce6ac5c
87 87
88 try: 88 try:
89 if hasattr(user, 'user_id'): 89 if hasattr(user, 'user_id'):
90 user_obj = user 90 user_obj = user
91 elif isinstance(user, basestring): 91 elif isinstance(user, basestring):
92 user_obj = UserModel(sa).get_by_username(user, cache=False) 92 user_obj = UserModel().get_by_username(user, cache=False)
93 else: 93 else:
94 raise Exception('You have to provide user object or username') 94 raise Exception('You have to provide user object or username')
95 95
96 96
97 if repo: 97 if repo:
98 repo_name = repo.lstrip('/') 98 repo_name = repo.lstrip('/')
99 99
100 repository = RepoModel(sa).get(repo_name, cache=False) 100 repository = RepoModel().get(repo_name, cache=False)
101 if not repository: 101 if not repository:
102 raise Exception('You have to provide valid repository') 102 raise Exception('You have to provide valid repository')
103 else: 103 else:
104 raise Exception('You have to provide repository to action logger') 104 raise Exception('You have to provide repository to action logger')
105 105
291 hgsettings = get_hg_settings() 291 hgsettings = get_hg_settings()
292 292
293 for k, v in hgsettings.items(): 293 for k, v in hgsettings.items():
294 config[k] = v 294 config[k] = v
295 295
296 def invalidate_cache(name, *args): 296 def invalidate_cache(cache_key, *args):
297 """ 297 """
298 Puts cache invalidation task into db for 298 Puts cache invalidation task into db for
299 further global cache invalidation 299 further global cache invalidation
300 """ 300 """
301 pass 301 from rhodecode.model.scm import ScmModel
302
303 if cache_key.startswith('get_repo_cached_'):
304 name = cache_key.split('get_repo_cached_')[-1]
305 ScmModel().mark_for_invalidation(name)
302 306
303 class EmptyChangeset(BaseChangeset): 307 class EmptyChangeset(BaseChangeset):
304 """ 308 """
305 An dummy empty changeset. It's possible to pass hash when creating 309 An dummy empty changeset. It's possible to pass hash when creating
306 an EmptyChangeset 310 an EmptyChangeset
338 """ 342 """
339 maps all found repositories into db 343 maps all found repositories into db
340 """ 344 """
341 345
342 sa = meta.Session() 346 sa = meta.Session()
343 rm = RepoModel(sa) 347 rm = RepoModel()
344 user = sa.query(User).filter(User.admin == True).first() 348 user = sa.query(User).filter(User.admin == True).first()
345 349
346 for name, repo in initial_repo_list.items(): 350 for name, repo in initial_repo_list.items():
347 if not rm.get(name, cache=False): 351 if not rm.get(name, cache=False):
348 log.info('repository %s not found creating default', name) 352 log.info('repository %s not found creating default', name)