changeset 3693:6843cabe9925 beta

removed duplicated logic of how we invalidate caches for repos
author Marcin Kuzminski <marcin@python-works.com>
date Wed, 03 Apr 2013 02:35:01 +0200
parents 5f9f4ece4b52
children 34093903b505
files rhodecode/controllers/admin/repos.py rhodecode/controllers/admin/settings.py rhodecode/lib/base.py rhodecode/lib/utils.py rhodecode/tests/functional/test_summary.py
diffstat 5 files changed, 10 insertions(+), 24 deletions(-) [+]
line wrap: on
line diff
--- a/rhodecode/controllers/admin/repos.py	Fri Apr 05 19:42:07 2013 +0200
+++ b/rhodecode/controllers/admin/repos.py	Wed Apr 03 02:35:01 2013 +0200
@@ -40,7 +40,7 @@
     HasPermissionAnyDecorator, HasRepoPermissionAllDecorator, NotAnonymous,\
     HasPermissionAny, HasReposGroupPermissionAny, HasRepoPermissionAnyDecorator
 from rhodecode.lib.base import BaseRepoController, render
-from rhodecode.lib.utils import invalidate_cache, action_logger, repo_name_slug
+from rhodecode.lib.utils import action_logger, repo_name_slug
 from rhodecode.lib.helpers import get_token
 from rhodecode.model.meta import Session
 from rhodecode.model.db import User, Repository, UserFollowing, RepoGroup,\
@@ -262,7 +262,7 @@
         try:
             form_result = _form.to_python(dict(request.POST))
             repo = repo_model.update(repo_name, **form_result)
-            invalidate_cache('get_repo_cached_%s' % repo_name)
+            ScmModel().mark_for_invalidation(repo_name)
             h.flash(_('Repository %s updated successfully') % repo_name,
                     category='success')
             changed_name = repo.repo_name
@@ -315,7 +315,7 @@
             repo_model.delete(repo, forks=handle_forks)
             action_logger(self.rhodecode_user, 'admin_deleted_repo',
                   repo_name, self.ip_addr, self.sa)
-            invalidate_cache('get_repo_cached_%s' % repo_name)
+            ScmModel().mark_for_invalidation(repo_name)
             h.flash(_('Deleted repository %s') % repo_name, category='success')
             Session().commit()
         except AttachedForksError:
--- a/rhodecode/controllers/admin/settings.py	Fri Apr 05 19:42:07 2013 +0200
+++ b/rhodecode/controllers/admin/settings.py	Wed Apr 03 02:35:01 2013 +0200
@@ -41,8 +41,8 @@
     HasReposGroupPermissionAll, HasReposGroupPermissionAny, AuthUser
 from rhodecode.lib.base import BaseController, render
 from rhodecode.lib.celerylib import tasks, run_task
-from rhodecode.lib.utils import repo2db_mapper, invalidate_cache, \
-    set_rhodecode_config, repo_name_slug, check_git_version
+from rhodecode.lib.utils import repo2db_mapper, set_rhodecode_config, \
+    check_git_version
 from rhodecode.model.db import RhodeCodeUi, Repository, RepoGroup, \
     RhodeCodeSetting, PullRequest, PullRequestReviewers
 from rhodecode.model.forms import UserForm, ApplicationSettingsForm, \
@@ -55,7 +55,6 @@
 from rhodecode.model.meta import Session
 from rhodecode.lib.utils2 import str2bool, safe_unicode
 from rhodecode.lib.compat import json
-from webob.exc import HTTPForbidden
 log = logging.getLogger(__name__)
 
 
@@ -119,7 +118,7 @@
             initial = ScmModel().repo_scan()
             log.debug('invalidating all repositories')
             for repo_name in initial.keys():
-                invalidate_cache('get_repo_cached_%s' % repo_name)
+                ScmModel().mark_for_invalidation(repo_name)
 
             added, removed = repo2db_mapper(initial, rm_obsolete)
             _repr = lambda l: ', '.join(map(safe_unicode, l)) or '-'
--- a/rhodecode/lib/base.py	Fri Apr 05 19:42:07 2013 +0200
+++ b/rhodecode/lib/base.py	Wed Apr 03 02:35:01 2013 +0200
@@ -21,7 +21,7 @@
     safe_str, safe_int
 from rhodecode.lib.auth import AuthUser, get_container_username, authfunc,\
     HasPermissionAnyMiddleware, CookieStoreWrapper
-from rhodecode.lib.utils import get_repo_slug, invalidate_cache
+from rhodecode.lib.utils import get_repo_slug
 from rhodecode.model import meta
 
 from rhodecode.model.db import Repository, RhodeCodeUi, User, RhodeCodeSetting
@@ -149,7 +149,7 @@
 
         :param repo_name: full repo name, also a cache key
         """
-        invalidate_cache('get_repo_cached_%s' % repo_name)
+        ScmModel().mark_for_invalidation(repo_name)
 
     def _check_permission(self, action, user, repo_name, ip_addr=None):
         """
--- a/rhodecode/lib/utils.py	Fri Apr 05 19:42:07 2013 +0200
+++ b/rhodecode/lib/utils.py	Wed Apr 03 02:35:01 2013 +0200
@@ -356,19 +356,6 @@
         config[k] = v
 
 
-def invalidate_cache(cache_key, *args):
-    """
-    Puts cache invalidation task into db for
-    further global cache invalidation
-    """
-
-    from rhodecode.model.scm import ScmModel
-
-    if cache_key.startswith('get_repo_cached_'):
-        name = cache_key.split('get_repo_cached_')[-1]
-        ScmModel().mark_for_invalidation(name)
-
-
 def map_groups(path):
     """
     Given a full path to a repository, create all nested groups that this
--- a/rhodecode/tests/functional/test_summary.py	Fri Apr 05 19:42:07 2013 +0200
+++ b/rhodecode/tests/functional/test_summary.py	Wed Apr 03 02:35:01 2013 +0200
@@ -1,9 +1,9 @@
 from rhodecode.tests import *
 from rhodecode.tests.fixture import Fixture
 from rhodecode.model.db import Repository
-from rhodecode.lib.utils import invalidate_cache
 from rhodecode.model.repo import RepoModel
 from rhodecode.model.meta import Session
+from rhodecode.model.scm import ScmModel
 
 fixture = Fixture()
 
@@ -32,7 +32,7 @@
         #codes stats
         self._enable_stats()
 
-        invalidate_cache('get_repo_cached_%s' % HG_REPO)
+        ScmModel().mark_for_invalidation(HG_REPO)
         response = self.app.get(url(controller='summary', action='index',
                                     repo_name=HG_REPO))
         response.mustcontain(