annotate pylons_app/controllers/hg.py @ 447:70c2750531d3

rewrote sorting on main page, to clickable headers. Update my account with better repo list some css fixes
author Marcin Kuzminski <marcin@python-works.com>
date Fri, 03 Sep 2010 07:34:38 +0200
parents 07f50e9b308f
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
252
3782a6d698af licensing updates, code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents: 245
diff changeset
1 #!/usr/bin/env python
3782a6d698af licensing updates, code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents: 245
diff changeset
2 # encoding: utf-8
3782a6d698af licensing updates, code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents: 245
diff changeset
3 # hg controller for pylons
3782a6d698af licensing updates, code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents: 245
diff changeset
4 # Copyright (C) 2009-2010 Marcin Kuzminski <marcin@python-works.com>
353
07f50e9b308f fixed sorting bug.
Marcin Kuzminski <marcin@python-works.com>
parents: 338
diff changeset
5 #
252
3782a6d698af licensing updates, code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents: 245
diff changeset
6 # This program is free software; you can redistribute it and/or
3782a6d698af licensing updates, code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents: 245
diff changeset
7 # modify it under the terms of the GNU General Public License
3782a6d698af licensing updates, code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents: 245
diff changeset
8 # as published by the Free Software Foundation; version 2
3782a6d698af licensing updates, code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents: 245
diff changeset
9 # of the License or (at your opinion) any later version of the license.
3782a6d698af licensing updates, code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents: 245
diff changeset
10 #
3782a6d698af licensing updates, code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents: 245
diff changeset
11 # This program is distributed in the hope that it will be useful,
3782a6d698af licensing updates, code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents: 245
diff changeset
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
3782a6d698af licensing updates, code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents: 245
diff changeset
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3782a6d698af licensing updates, code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents: 245
diff changeset
14 # GNU General Public License for more details.
3782a6d698af licensing updates, code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents: 245
diff changeset
15 #
3782a6d698af licensing updates, code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents: 245
diff changeset
16 # You should have received a copy of the GNU General Public License
3782a6d698af licensing updates, code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents: 245
diff changeset
17 # along with this program; if not, write to the Free Software
3782a6d698af licensing updates, code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents: 245
diff changeset
18 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
3782a6d698af licensing updates, code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents: 245
diff changeset
19 # MA 02110-1301, USA.
3782a6d698af licensing updates, code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents: 245
diff changeset
20 """
3782a6d698af licensing updates, code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents: 245
diff changeset
21 Created on February 18, 2010
3782a6d698af licensing updates, code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents: 245
diff changeset
22 hg controller for pylons
3782a6d698af licensing updates, code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents: 245
diff changeset
23 @author: marcink
3782a6d698af licensing updates, code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents: 245
diff changeset
24 """
93
aec4c0071cb3 added empty controllers for branches tags files graph, routing and test for them
Marcin Kuzminski <marcin@python-works.com>
parents: 82
diff changeset
25 from operator import itemgetter
252
3782a6d698af licensing updates, code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents: 245
diff changeset
26 from pylons import tmpl_context as c, request
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
Marcin Kuzminski <marcin@python-works.com>
parents: 223
diff changeset
27 from pylons_app.lib.auth import LoginRequired
76
71401840ed86 refactoring update
Marcin Kuzminski <marcin@python-blog.com>
parents: 74
diff changeset
28 from pylons_app.lib.base import BaseController, render
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
Marcin Kuzminski <marcin@python-works.com>
parents: 223
diff changeset
29 from pylons_app.model.hg_model import HgModel
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
Marcin Kuzminski <marcin@python-works.com>
parents: 223
diff changeset
30 import logging
10
525ed90e4577 major app speedup moved the wsgi creation to app globals, in order to make it run only once.
Marcin Kuzminski
parents: 8
diff changeset
31 log = logging.getLogger(__name__)
0
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
32
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
33 class HgController(BaseController):
21
fac1f62a1d71 Wrapped into mako templates,
Marcin Kuzminski
parents: 20
diff changeset
34
191
b68b2246e5a6 Authenticated controller with LoginRequired decorator, and cleaned __before__ (used in baseController now). fixed User for clone url with logged in session user.
Marcin Kuzminski <marcin@python-works.com>
parents: 169
diff changeset
35 @LoginRequired()
21
fac1f62a1d71 Wrapped into mako templates,
Marcin Kuzminski
parents: 20
diff changeset
36 def __before__(self):
191
b68b2246e5a6 Authenticated controller with LoginRequired decorator, and cleaned __before__ (used in baseController now). fixed User for clone url with logged in session user.
Marcin Kuzminski <marcin@python-works.com>
parents: 169
diff changeset
37 super(HgController, self).__before__()
82
670713507d03 Moved summary to seperate controller,
Marcin Kuzminski <marcin@python-blog.com>
parents: 80
diff changeset
38
55
e00dccb6f211 Implemented index page using vcs
Marcin Kuzminski <marcin@python-blog.com>
parents: 43
diff changeset
39 def index(self):
338
1eb2267a5469 fixed bug when, sortables have wrong value
Marcin Kuzminski <marcin@python-works.com>
parents: 252
diff changeset
40 sortables = ['name', 'description', 'last_change', 'tip', 'contact']
447
70c2750531d3 rewrote sorting on main page, to clickable headers.
Marcin Kuzminski <marcin@python-works.com>
parents: 353
diff changeset
41 current_sort = request.GET.get('sort', 'name')
70c2750531d3 rewrote sorting on main page, to clickable headers.
Marcin Kuzminski <marcin@python-works.com>
parents: 353
diff changeset
42 current_sort_slug = current_sort.replace('-', '')
338
1eb2267a5469 fixed bug when, sortables have wrong value
Marcin Kuzminski <marcin@python-works.com>
parents: 252
diff changeset
43
447
70c2750531d3 rewrote sorting on main page, to clickable headers.
Marcin Kuzminski <marcin@python-works.com>
parents: 353
diff changeset
44 if current_sort_slug not in sortables:
70c2750531d3 rewrote sorting on main page, to clickable headers.
Marcin Kuzminski <marcin@python-works.com>
parents: 353
diff changeset
45 c.sort_by = 'name'
70c2750531d3 rewrote sorting on main page, to clickable headers.
Marcin Kuzminski <marcin@python-works.com>
parents: 353
diff changeset
46 current_sort_slug = c.sort_by
70c2750531d3 rewrote sorting on main page, to clickable headers.
Marcin Kuzminski <marcin@python-works.com>
parents: 353
diff changeset
47 else:
70c2750531d3 rewrote sorting on main page, to clickable headers.
Marcin Kuzminski <marcin@python-works.com>
parents: 353
diff changeset
48 c.sort_by = current_sort
70c2750531d3 rewrote sorting on main page, to clickable headers.
Marcin Kuzminski <marcin@python-works.com>
parents: 353
diff changeset
49 c.sort_slug = current_sort_slug
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
Marcin Kuzminski <marcin@python-works.com>
parents: 223
diff changeset
50 cached_repo_list = HgModel().get_repos()
353
07f50e9b308f fixed sorting bug.
Marcin Kuzminski <marcin@python-works.com>
parents: 338
diff changeset
51
447
70c2750531d3 rewrote sorting on main page, to clickable headers.
Marcin Kuzminski <marcin@python-works.com>
parents: 353
diff changeset
52 sort_key = current_sort_slug + '_sort'
70c2750531d3 rewrote sorting on main page, to clickable headers.
Marcin Kuzminski <marcin@python-works.com>
parents: 353
diff changeset
53 if c.sort_by.startswith('-'):
353
07f50e9b308f fixed sorting bug.
Marcin Kuzminski <marcin@python-works.com>
parents: 338
diff changeset
54 c.repos_list = sorted(cached_repo_list, key=itemgetter(sort_key), reverse=True)
07f50e9b308f fixed sorting bug.
Marcin Kuzminski <marcin@python-works.com>
parents: 338
diff changeset
55 else:
07f50e9b308f fixed sorting bug.
Marcin Kuzminski <marcin@python-works.com>
parents: 338
diff changeset
56 c.repos_list = sorted(cached_repo_list, key=itemgetter(sort_key), reverse=False)
57
e96bc5a01490 Implemented main page sorting
Marcin Kuzminski <marcin@python-blog.com>
parents: 56
diff changeset
57
55
e00dccb6f211 Implemented index page using vcs
Marcin Kuzminski <marcin@python-blog.com>
parents: 43
diff changeset
58 return render('/index.html')