annotate rhodecode/controllers/home.py @ 1366:9c0f5d558789 beta

fixes #200, rewrote the whole caching mechanism to get rid of such problems. Now cached instances are attached to db repository instance, and then fetched from cache. Also made all current test work.
author Marcin Kuzminski <marcin@python-works.com>
date Tue, 07 Jun 2011 17:58:51 +0200
parents 3bce31f026b8
children eee3cb592099
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
861
fd2ea6ceadc8 updated docs on every controller
Marcin Kuzminski <marcin@python-works.com>
parents: 691
diff changeset
1 # -*- coding: utf-8 -*-
fd2ea6ceadc8 updated docs on every controller
Marcin Kuzminski <marcin@python-works.com>
parents: 691
diff changeset
2 """
fd2ea6ceadc8 updated docs on every controller
Marcin Kuzminski <marcin@python-works.com>
parents: 691
diff changeset
3 rhodecode.controllers.home
fd2ea6ceadc8 updated docs on every controller
Marcin Kuzminski <marcin@python-works.com>
parents: 691
diff changeset
4 ~~~~~~~~~~~~~~~~~~~~~~~~~~
fd2ea6ceadc8 updated docs on every controller
Marcin Kuzminski <marcin@python-works.com>
parents: 691
diff changeset
5
fd2ea6ceadc8 updated docs on every controller
Marcin Kuzminski <marcin@python-works.com>
parents: 691
diff changeset
6 Home controller for Rhodecode
1203
6832ef664673 source code cleanup: remove trailing white space, normalize file endings
Marcin Kuzminski <marcin@python-works.com>
parents: 1192
diff changeset
7
861
fd2ea6ceadc8 updated docs on every controller
Marcin Kuzminski <marcin@python-works.com>
parents: 691
diff changeset
8 :created_on: Feb 18, 2010
fd2ea6ceadc8 updated docs on every controller
Marcin Kuzminski <marcin@python-works.com>
parents: 691
diff changeset
9 :author: marcink
1203
6832ef664673 source code cleanup: remove trailing white space, normalize file endings
Marcin Kuzminski <marcin@python-works.com>
parents: 1192
diff changeset
10 :copyright: (C) 2009-2011 Marcin Kuzminski <marcin@python-works.com>
861
fd2ea6ceadc8 updated docs on every controller
Marcin Kuzminski <marcin@python-works.com>
parents: 691
diff changeset
11 :license: GPLv3, see COPYING for more details.
fd2ea6ceadc8 updated docs on every controller
Marcin Kuzminski <marcin@python-works.com>
parents: 691
diff changeset
12 """
1206
a671db5bdd58 fixed license issue #149
Marcin Kuzminski <marcin@python-works.com>
parents: 1203
diff changeset
13 # This program is free software: you can redistribute it and/or modify
a671db5bdd58 fixed license issue #149
Marcin Kuzminski <marcin@python-works.com>
parents: 1203
diff changeset
14 # it under the terms of the GNU General Public License as published by
a671db5bdd58 fixed license issue #149
Marcin Kuzminski <marcin@python-works.com>
parents: 1203
diff changeset
15 # the Free Software Foundation, either version 3 of the License, or
a671db5bdd58 fixed license issue #149
Marcin Kuzminski <marcin@python-works.com>
parents: 1203
diff changeset
16 # (at your option) any later version.
1203
6832ef664673 source code cleanup: remove trailing white space, normalize file endings
Marcin Kuzminski <marcin@python-works.com>
parents: 1192
diff changeset
17 #
252
3782a6d698af licensing updates, code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents: 245
diff changeset
18 # 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
19 # 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
20 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3782a6d698af licensing updates, code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents: 245
diff changeset
21 # GNU General Public License for more details.
1203
6832ef664673 source code cleanup: remove trailing white space, normalize file endings
Marcin Kuzminski <marcin@python-works.com>
parents: 1192
diff changeset
22 #
252
3782a6d698af licensing updates, code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents: 245
diff changeset
23 # You should have received a copy of the GNU General Public License
1206
a671db5bdd58 fixed license issue #149
Marcin Kuzminski <marcin@python-works.com>
parents: 1203
diff changeset
24 # along with this program. If not, see <http://www.gnu.org/licenses/>.
861
fd2ea6ceadc8 updated docs on every controller
Marcin Kuzminski <marcin@python-works.com>
parents: 691
diff changeset
25
fd2ea6ceadc8 updated docs on every controller
Marcin Kuzminski <marcin@python-works.com>
parents: 691
diff changeset
26 import logging
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
27 from operator import itemgetter
861
fd2ea6ceadc8 updated docs on every controller
Marcin Kuzminski <marcin@python-works.com>
parents: 691
diff changeset
28
252
3782a6d698af licensing updates, code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents: 245
diff changeset
29 from pylons import tmpl_context as c, request
1158
f63cc1cbce27 implemented repo switcher list as dynamically loaded by xhr requestt.
Marcin Kuzminski <marcin@python-works.com>
parents: 1045
diff changeset
30 from paste.httpexceptions import HTTPBadRequest
861
fd2ea6ceadc8 updated docs on every controller
Marcin Kuzminski <marcin@python-works.com>
parents: 691
diff changeset
31
547
1e757ac98988 renamed project to rhodecode
Marcin Kuzminski <marcin@python-works.com>
parents: 447
diff changeset
32 from rhodecode.lib.auth import LoginRequired
1e757ac98988 renamed project to rhodecode
Marcin Kuzminski <marcin@python-works.com>
parents: 447
diff changeset
33 from rhodecode.lib.base import BaseController, render
1366
9c0f5d558789 fixes #200, rewrote the whole caching mechanism to get rid of such problems. Now cached instances are attached
Marcin Kuzminski <marcin@python-works.com>
parents: 1345
diff changeset
34 from rhodecode.model.db import Group, Repository
1158
f63cc1cbce27 implemented repo switcher list as dynamically loaded by xhr requestt.
Marcin Kuzminski <marcin@python-works.com>
parents: 1045
diff changeset
35
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
36 log = logging.getLogger(__name__)
0
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
37
1212
50e41777675d pep8ify
Marcin Kuzminski <marcin@python-works.com>
parents: 1206
diff changeset
38
636
ffd07396d315 Fixes for raw_id, needed for git
Marcin Kuzminski <marcin@python-works.com>
parents: 629
diff changeset
39 class HomeController(BaseController):
21
fac1f62a1d71 Wrapped into mako templates,
Marcin Kuzminski
parents: 20
diff changeset
40
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
41 @LoginRequired()
21
fac1f62a1d71 Wrapped into mako templates,
Marcin Kuzminski
parents: 20
diff changeset
42 def __before__(self):
636
ffd07396d315 Fixes for raw_id, needed for git
Marcin Kuzminski <marcin@python-works.com>
parents: 629
diff changeset
43 super(HomeController, self).__before__()
ffd07396d315 Fixes for raw_id, needed for git
Marcin Kuzminski <marcin@python-works.com>
parents: 629
diff changeset
44
55
e00dccb6f211 Implemented index page using vcs
Marcin Kuzminski <marcin@python-blog.com>
parents: 43
diff changeset
45 def index(self):
1005
520e67cbb494 fixed sorting in maing page by owners
Marcin Kuzminski <marcin@python-works.com>
parents: 902
diff changeset
46 sortables = ['name', 'description', 'last_change', 'tip', 'owner']
447
70c2750531d3 rewrote sorting on main page, to clickable headers.
Marcin Kuzminski <marcin@python-works.com>
parents: 353
diff changeset
47 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
48 current_sort_slug = current_sort.replace('-', '')
636
ffd07396d315 Fixes for raw_id, needed for git
Marcin Kuzminski <marcin@python-works.com>
parents: 629
diff changeset
49
447
70c2750531d3 rewrote sorting on main page, to clickable headers.
Marcin Kuzminski <marcin@python-works.com>
parents: 353
diff changeset
50 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
51 c.sort_by = 'name'
70c2750531d3 rewrote sorting on main page, to clickable headers.
Marcin Kuzminski <marcin@python-works.com>
parents: 353
diff changeset
52 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
53 else:
70c2750531d3 rewrote sorting on main page, to clickable headers.
Marcin Kuzminski <marcin@python-works.com>
parents: 353
diff changeset
54 c.sort_by = current_sort
70c2750531d3 rewrote sorting on main page, to clickable headers.
Marcin Kuzminski <marcin@python-works.com>
parents: 353
diff changeset
55 c.sort_slug = current_sort_slug
636
ffd07396d315 Fixes for raw_id, needed for git
Marcin Kuzminski <marcin@python-works.com>
parents: 629
diff changeset
56
447
70c2750531d3 rewrote sorting on main page, to clickable headers.
Marcin Kuzminski <marcin@python-works.com>
parents: 353
diff changeset
57 sort_key = current_sort_slug + '_sort'
1045
3fc9183e05dd another major codes rewrite:
Marcin Kuzminski <marcin@python-works.com>
parents: 1005
diff changeset
58
1366
9c0f5d558789 fixes #200, rewrote the whole caching mechanism to get rid of such problems. Now cached instances are attached
Marcin Kuzminski <marcin@python-works.com>
parents: 1345
diff changeset
59
9c0f5d558789 fixes #200, rewrote the whole caching mechanism to get rid of such problems. Now cached instances are attached
Marcin Kuzminski <marcin@python-works.com>
parents: 1345
diff changeset
60 c.repos_list = self.scm_model.get_repos(sort_key=sort_key)
636
ffd07396d315 Fixes for raw_id, needed for git
Marcin Kuzminski <marcin@python-works.com>
parents: 629
diff changeset
61
1192
01fe71db71f6 added repo count to dashboard
Marcin Kuzminski <marcin@python-works.com>
parents: 1158
diff changeset
62 c.repo_cnt = len(c.repos_list)
1343
a04fe5986109 #47 implemented basic gui for browsing repo groups
Marcin Kuzminski <marcin@python-works.com>
parents: 1212
diff changeset
63
1345
3bce31f026b8 #47 implemented Adding of new repo_groups+forms+validators. Fixed sorting of repo groups by main names in multiple locations. Removed some unneeded calls to self.sa for exchange to .query() methods.
Marcin Kuzminski <marcin@python-works.com>
parents: 1343
diff changeset
64 c.groups = Group.query().filter(Group.group_parent_id == None).all()
1343
a04fe5986109 #47 implemented basic gui for browsing repo groups
Marcin Kuzminski <marcin@python-works.com>
parents: 1212
diff changeset
65
a04fe5986109 #47 implemented basic gui for browsing repo groups
Marcin Kuzminski <marcin@python-works.com>
parents: 1212
diff changeset
66
55
e00dccb6f211 Implemented index page using vcs
Marcin Kuzminski <marcin@python-blog.com>
parents: 43
diff changeset
67 return render('/index.html')
1158
f63cc1cbce27 implemented repo switcher list as dynamically loaded by xhr requestt.
Marcin Kuzminski <marcin@python-works.com>
parents: 1045
diff changeset
68
f63cc1cbce27 implemented repo switcher list as dynamically loaded by xhr requestt.
Marcin Kuzminski <marcin@python-works.com>
parents: 1045
diff changeset
69 def repo_switcher(self):
f63cc1cbce27 implemented repo switcher list as dynamically loaded by xhr requestt.
Marcin Kuzminski <marcin@python-works.com>
parents: 1045
diff changeset
70 if request.is_xhr:
1366
9c0f5d558789 fixes #200, rewrote the whole caching mechanism to get rid of such problems. Now cached instances are attached
Marcin Kuzminski <marcin@python-works.com>
parents: 1345
diff changeset
71 all_repos = Repository.query().order_by(Repository.repo_name).all()
9c0f5d558789 fixes #200, rewrote the whole caching mechanism to get rid of such problems. Now cached instances are attached
Marcin Kuzminski <marcin@python-works.com>
parents: 1345
diff changeset
72 c.repos_list = self.scm_model.get_repos(all_repos,
9c0f5d558789 fixes #200, rewrote the whole caching mechanism to get rid of such problems. Now cached instances are attached
Marcin Kuzminski <marcin@python-works.com>
parents: 1345
diff changeset
73 sort_key='name_sort')
1158
f63cc1cbce27 implemented repo switcher list as dynamically loaded by xhr requestt.
Marcin Kuzminski <marcin@python-works.com>
parents: 1045
diff changeset
74 return render('/repo_switcher_list.html')
f63cc1cbce27 implemented repo switcher list as dynamically loaded by xhr requestt.
Marcin Kuzminski <marcin@python-works.com>
parents: 1045
diff changeset
75 else:
f63cc1cbce27 implemented repo switcher list as dynamically loaded by xhr requestt.
Marcin Kuzminski <marcin@python-works.com>
parents: 1045
diff changeset
76 return HTTPBadRequest()