comparison pylons_app/controllers/hg.py @ 245:a83a1799480c

Reimplemented way of caching repos list, hg model now get's repos objects right from cached dict, this way we skipp creating instances of MercurialRepository and gain performance. Some import cleanup
author Marcin Kuzminski <marcin@python-works.com>
date Thu, 03 Jun 2010 00:04:48 +0200
parents 4cf00c939e88
children 3782a6d698af
comparison
equal deleted inserted replaced
244:782f0692b29c 245:a83a1799480c
1 #!/usr/bin/python 1 #!/usr/bin/python
2 # -*- coding: utf-8 -*- 2 # -*- coding: utf-8 -*-
3 import logging
4 from operator import itemgetter 3 from operator import itemgetter
5 from pylons import tmpl_context as c, request, config 4 from pylons import tmpl_context as c, request, config
5 from pylons_app.lib.auth import LoginRequired
6 from pylons_app.lib.base import BaseController, render 6 from pylons_app.lib.base import BaseController, render
7 from pylons_app.lib.auth import LoginRequired 7 from pylons_app.model.hg_model import HgModel
8 import logging
8 log = logging.getLogger(__name__) 9 log = logging.getLogger(__name__)
9 10
10 class HgController(BaseController): 11 class HgController(BaseController):
11 12
12 @LoginRequired() 13 @LoginRequired()
16 def index(self): 17 def index(self):
17 c.current_sort = request.GET.get('sort', 'name') 18 c.current_sort = request.GET.get('sort', 'name')
18 cs = c.current_sort 19 cs = c.current_sort
19 c.cs_slug = cs.replace('-', '') 20 c.cs_slug = cs.replace('-', '')
20 sortables = ['name', 'description', 'last_change', 'tip', 'contact'] 21 sortables = ['name', 'description', 'last_change', 'tip', 'contact']
21 22 cached_repo_list = HgModel().get_repos()
22 if cs and c.cs_slug in sortables: 23 if cs and c.cs_slug in sortables:
23 sort_key = c.cs_slug + '_sort' 24 sort_key = c.cs_slug + '_sort'
24 if cs.startswith('-'): 25 if cs.startswith('-'):
25 c.repos_list = sorted(c.cached_repo_list, key=itemgetter(sort_key), reverse=True) 26 c.repos_list = sorted(cached_repo_list, key=itemgetter(sort_key), reverse=True)
26 else: 27 else:
27 c.repos_list = sorted(c.cached_repo_list, key=itemgetter(sort_key), reverse=False) 28 c.repos_list = sorted(cached_repo_list, key=itemgetter(sort_key), reverse=False)
28 29
29 return render('/index.html') 30 return render('/index.html')