Mercurial > public > src > rhodecode
comparison pylons_app/controllers/hg.py @ 169:8e01265fb586
added long term caching of repo_list to the base controller. changed hg and repos to use that cached list.
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Fri, 21 May 2010 02:17:13 +0200 |
parents | 28f28d423268 |
children | b68b2246e5a6 |
comparison
equal
deleted
inserted
replaced
168:e35210568664 | 169:8e01265fb586 |
---|---|
4 from operator import itemgetter | 4 from operator import itemgetter |
5 from pylons import tmpl_context as c, request, config | 5 from pylons import tmpl_context as c, request, config |
6 from pylons_app.lib.base import BaseController, render | 6 from pylons_app.lib.base import BaseController, render |
7 from pylons_app.lib.utils import get_repo_slug | 7 from pylons_app.lib.utils import get_repo_slug |
8 from pylons_app.model.hg_model import HgModel | 8 from pylons_app.model.hg_model import HgModel |
9 from beaker.cache import cache_region | |
10 log = logging.getLogger(__name__) | 9 log = logging.getLogger(__name__) |
11 | 10 |
12 class HgController(BaseController): | 11 class HgController(BaseController): |
13 | 12 |
14 def __before__(self): | 13 def __before__(self): |
15 c.repos_prefix = config['repos_name'] | 14 c.repos_prefix = config['repos_name'] |
16 c.repo_name = get_repo_slug(request) | 15 c.repo_name = get_repo_slug(request) |
17 | 16 |
18 def index(self): | 17 def index(self): |
19 | |
20 hg_model = HgModel() | |
21 @cache_region('short_term', 'repo_list') | |
22 def _list(): | |
23 return list(hg_model.get_repos()) | |
24 | |
25 c.repos_list = _list() | |
26 c.current_sort = request.GET.get('sort', 'name') | 18 c.current_sort = request.GET.get('sort', 'name') |
27 | |
28 cs = c.current_sort | 19 cs = c.current_sort |
29 c.cs_slug = cs.replace('-', '') | 20 c.cs_slug = cs.replace('-', '') |
30 sortables = ['name', 'description', 'last_change', 'tip', 'contact'] | 21 sortables = ['name', 'description', 'last_change', 'tip', 'contact'] |
31 | 22 |
32 if cs and c.cs_slug in sortables: | 23 if cs and c.cs_slug in sortables: |
33 sort_key = c.cs_slug + '_sort' | 24 sort_key = c.cs_slug + '_sort' |
34 if cs.startswith('-'): | 25 if cs.startswith('-'): |
35 c.repos_list.sort(key=itemgetter(sort_key), reverse=True) | 26 c.repos_list = sorted(c.cached_repo_list, key=itemgetter(sort_key), reverse=True) |
36 else: | 27 else: |
37 c.repos_list.sort(key=itemgetter(sort_key), reverse=False) | 28 c.repos_list = sorted(c.cached_repo_list, key=itemgetter(sort_key), reverse=False) |
38 | 29 |
39 return render('/index.html') | 30 return render('/index.html') |