# HG changeset patch # User Marcin Kuzminski # Date 1274401033 -7200 # Node ID 8e01265fb5863475f6f188f6828ddd3d9db285ae # Parent e35210568664290db6bf57bb42dc9ff6ade15cc4 added long term caching of repo_list to the base controller. changed hg and repos to use that cached list. diff -r e35210568664 -r 8e01265fb586 pylons_app/controllers/hg.py --- a/pylons_app/controllers/hg.py Fri May 21 02:13:34 2010 +0200 +++ b/pylons_app/controllers/hg.py Fri May 21 02:17:13 2010 +0200 @@ -6,7 +6,6 @@ from pylons_app.lib.base import BaseController, render from pylons_app.lib.utils import get_repo_slug from pylons_app.model.hg_model import HgModel -from beaker.cache import cache_region log = logging.getLogger(__name__) class HgController(BaseController): @@ -16,15 +15,7 @@ c.repo_name = get_repo_slug(request) def index(self): - - hg_model = HgModel() - @cache_region('short_term', 'repo_list') - def _list(): - return list(hg_model.get_repos()) - - c.repos_list = _list() c.current_sort = request.GET.get('sort', 'name') - cs = c.current_sort c.cs_slug = cs.replace('-', '') sortables = ['name', 'description', 'last_change', 'tip', 'contact'] @@ -32,8 +23,8 @@ if cs and c.cs_slug in sortables: sort_key = c.cs_slug + '_sort' if cs.startswith('-'): - c.repos_list.sort(key=itemgetter(sort_key), reverse=True) + c.repos_list = sorted(c.cached_repo_list, key=itemgetter(sort_key), reverse=True) else: - c.repos_list.sort(key=itemgetter(sort_key), reverse=False) + c.repos_list = sorted(c.cached_repo_list, key=itemgetter(sort_key), reverse=False) return render('/index.html') diff -r e35210568664 -r 8e01265fb586 pylons_app/controllers/repos.py --- a/pylons_app/controllers/repos.py Fri May 21 02:13:34 2010 +0200 +++ b/pylons_app/controllers/repos.py Fri May 21 02:17:13 2010 +0200 @@ -26,9 +26,7 @@ def index(self, format='html'): """GET /repos: All items in the collection""" # url('repos') - hg_model = HgModel() - c.repos_list = list(hg_model.get_repos()) - c.repos_list.sort(key=itemgetter('name')) + c.repos_list = c.cached_repo_list return render('admin/repos/repos.html') def create(self): @@ -64,7 +62,7 @@ shutil.move(rm_path, os.path.join(path, 'rm__%s-%s' % (datetime.today(), id))) #clear our cached list for refresh with new repo - invalidate_cache('repo_list_2') + invalidate_cache('cached_repo_list') return redirect(url('repos')) diff -r e35210568664 -r 8e01265fb586 pylons_app/lib/base.py --- a/pylons_app/lib/base.py Fri May 21 02:13:34 2010 +0200 +++ b/pylons_app/lib/base.py Fri May 21 02:17:13 2010 +0200 @@ -9,9 +9,9 @@ from pylons import tmpl_context as c from pylons_app.model.hg_model import HgModel -@cache_region('long_term', 'repo_list_2') -def _get_repos(): - return [rep['name'] for rep in HgModel().get_repos()] +@cache_region('long_term', 'cached_repo_list') +def _get_repos_cached(): + return [rep for rep in HgModel().get_repos()] class BaseController(WSGIController): @@ -20,7 +20,7 @@ # WSGIController.__call__ dispatches to the Controller method # the request is routed to. This routing information is # available in environ['pylons.routes_dict'] - c.repo_list = _get_repos() + c.cached_repo_list = _get_repos_cached() self.sa = meta.Session try: return WSGIController.__call__(self, environ, start_response)