Mercurial > kallithea
annotate rhodecode/controllers/home.py @ 3625:260a7a01b054 beta
follow Python conventions for boolean values
True and False might be singletons and the "default" values for "boolean"
expressions, but "all" values in Python has a boolean value and should be
evaluated as such. Checking with 'is True' and 'is False' is thus confusing,
error prone and unnessarily complex.
If we anywhere rely and nullable boolean fields from the database layer and
don't want the null value to be treated as False then we should check
explicitly for null with 'is None'.
author | Mads Kiilerich <madski@unity3d.com> |
---|---|
date | Thu, 28 Mar 2013 01:10:45 +0100 |
parents | deb51ab04891 |
children | 3563bb7b4b82 f37d7514e7ab |
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 |
1824
89efedac4e6c
2012 copyrights
Marcin Kuzminski <marcin@python-works.com>
parents:
1818
diff
changeset
|
10 :copyright: (C) 2010-2012 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 |
fd2ea6ceadc8
updated docs on every controller
Marcin Kuzminski <marcin@python-works.com>
parents:
691
diff
changeset
|
27 |
252
3782a6d698af
licensing updates, code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
245
diff
changeset
|
28 from pylons import tmpl_context as c, request |
2936
62e493c7f436
Added lightweight dashboard option. ref #500
Marcin Kuzminski <marcin@python-works.com>
parents:
2604
diff
changeset
|
29 from pylons.i18n.translation import _ |
2242
87e9718ab4a2
Use webob exception as often as possible
Marcin Kuzminski <marcin@python-works.com>
parents:
2130
diff
changeset
|
30 from webob.exc import HTTPBadRequest |
3154
0226b6d6b2b5
Use common function for generation of grid data
Marcin Kuzminski <marcin@python-works.com>
parents:
3147
diff
changeset
|
31 from sqlalchemy.sql.expression import func |
861
fd2ea6ceadc8
updated docs on every controller
Marcin Kuzminski <marcin@python-works.com>
parents:
691
diff
changeset
|
32 |
2936
62e493c7f436
Added lightweight dashboard option. ref #500
Marcin Kuzminski <marcin@python-works.com>
parents:
2604
diff
changeset
|
33 import rhodecode |
62e493c7f436
Added lightweight dashboard option. ref #500
Marcin Kuzminski <marcin@python-works.com>
parents:
2604
diff
changeset
|
34 from rhodecode.lib import helpers as h |
62e493c7f436
Added lightweight dashboard option. ref #500
Marcin Kuzminski <marcin@python-works.com>
parents:
2604
diff
changeset
|
35 from rhodecode.lib.ext_json import json |
547
1e757ac98988
renamed project to rhodecode
Marcin Kuzminski <marcin@python-works.com>
parents:
447
diff
changeset
|
36 from rhodecode.lib.auth import LoginRequired |
1e757ac98988
renamed project to rhodecode
Marcin Kuzminski <marcin@python-works.com>
parents:
447
diff
changeset
|
37 from rhodecode.lib.base import BaseController, render |
1982
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1824
diff
changeset
|
38 from rhodecode.model.db import Repository |
3154
0226b6d6b2b5
Use common function for generation of grid data
Marcin Kuzminski <marcin@python-works.com>
parents:
3147
diff
changeset
|
39 from rhodecode.model.repo import RepoModel |
0226b6d6b2b5
Use common function for generation of grid data
Marcin Kuzminski <marcin@python-works.com>
parents:
3147
diff
changeset
|
40 |
1158
f63cc1cbce27
implemented repo switcher list as dynamically loaded by xhr requestt.
Marcin Kuzminski <marcin@python-works.com>
parents:
1045
diff
changeset
|
41 |
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
|
42 log = logging.getLogger(__name__) |
0 | 43 |
1212 | 44 |
636
ffd07396d315
Fixes for raw_id, needed for git
Marcin Kuzminski <marcin@python-works.com>
parents:
629
diff
changeset
|
45 class HomeController(BaseController): |
21 | 46 |
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
|
47 @LoginRequired() |
21 | 48 def __before__(self): |
636
ffd07396d315
Fixes for raw_id, needed for git
Marcin Kuzminski <marcin@python-works.com>
parents:
629
diff
changeset
|
49 super(HomeController, self).__before__() |
ffd07396d315
Fixes for raw_id, needed for git
Marcin Kuzminski <marcin@python-works.com>
parents:
629
diff
changeset
|
50 |
55
e00dccb6f211
Implemented index page using vcs
Marcin Kuzminski <marcin@python-blog.com>
parents:
43
diff
changeset
|
51 def index(self): |
1982
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1824
diff
changeset
|
52 c.groups = self.scm_model.get_repos_groups() |
2130
5242b1619603
#401 repository group is automatically pre-selected when adding repos inside a repository group
Marcin Kuzminski <marcin@python-works.com>
parents:
1982
diff
changeset
|
53 c.group = None |
2936
62e493c7f436
Added lightweight dashboard option. ref #500
Marcin Kuzminski <marcin@python-works.com>
parents:
2604
diff
changeset
|
54 |
3625
260a7a01b054
follow Python conventions for boolean values
Mads Kiilerich <madski@unity3d.com>
parents:
3437
diff
changeset
|
55 if not c.visual.lightweight_dashboard: |
2936
62e493c7f436
Added lightweight dashboard option. ref #500
Marcin Kuzminski <marcin@python-works.com>
parents:
2604
diff
changeset
|
56 c.repos_list = self.scm_model.get_repos() |
62e493c7f436
Added lightweight dashboard option. ref #500
Marcin Kuzminski <marcin@python-works.com>
parents:
2604
diff
changeset
|
57 ## lightweight version of dashboard |
62e493c7f436
Added lightweight dashboard option. ref #500
Marcin Kuzminski <marcin@python-works.com>
parents:
2604
diff
changeset
|
58 else: |
62e493c7f436
Added lightweight dashboard option. ref #500
Marcin Kuzminski <marcin@python-works.com>
parents:
2604
diff
changeset
|
59 c.repos_list = Repository.query()\ |
62e493c7f436
Added lightweight dashboard option. ref #500
Marcin Kuzminski <marcin@python-works.com>
parents:
2604
diff
changeset
|
60 .filter(Repository.group_id == None)\ |
62e493c7f436
Added lightweight dashboard option. ref #500
Marcin Kuzminski <marcin@python-works.com>
parents:
2604
diff
changeset
|
61 .order_by(func.lower(Repository.repo_name))\ |
62e493c7f436
Added lightweight dashboard option. ref #500
Marcin Kuzminski <marcin@python-works.com>
parents:
2604
diff
changeset
|
62 .all() |
62e493c7f436
Added lightweight dashboard option. ref #500
Marcin Kuzminski <marcin@python-works.com>
parents:
2604
diff
changeset
|
63 |
3154
0226b6d6b2b5
Use common function for generation of grid data
Marcin Kuzminski <marcin@python-works.com>
parents:
3147
diff
changeset
|
64 repos_data = RepoModel().get_repos_as_dict(repos_list=c.repos_list, |
0226b6d6b2b5
Use common function for generation of grid data
Marcin Kuzminski <marcin@python-works.com>
parents:
3147
diff
changeset
|
65 admin=False) |
0226b6d6b2b5
Use common function for generation of grid data
Marcin Kuzminski <marcin@python-works.com>
parents:
3147
diff
changeset
|
66 #json used to render the grid |
0226b6d6b2b5
Use common function for generation of grid data
Marcin Kuzminski <marcin@python-works.com>
parents:
3147
diff
changeset
|
67 c.data = json.dumps(repos_data) |
2936
62e493c7f436
Added lightweight dashboard option. ref #500
Marcin Kuzminski <marcin@python-works.com>
parents:
2604
diff
changeset
|
68 |
55
e00dccb6f211
Implemented index page using vcs
Marcin Kuzminski <marcin@python-blog.com>
parents:
43
diff
changeset
|
69 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
|
70 |
f63cc1cbce27
implemented repo switcher list as dynamically loaded by xhr requestt.
Marcin Kuzminski <marcin@python-works.com>
parents:
1045
diff
changeset
|
71 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
|
72 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
|
73 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
|
74 c.repos_list = self.scm_model.get_repos(all_repos, |
2604
dfa5180cf02f
Use simplified cached repos list for quick repo switcher, in some cases it can have 2-3x speed-up since it doesn't need to init the scms
Marcin Kuzminski <marcin@python-works.com>
parents:
2242
diff
changeset
|
75 sort_key='name_sort', |
dfa5180cf02f
Use simplified cached repos list for quick repo switcher, in some cases it can have 2-3x speed-up since it doesn't need to init the scms
Marcin Kuzminski <marcin@python-works.com>
parents:
2242
diff
changeset
|
76 simple=True) |
1158
f63cc1cbce27
implemented repo switcher list as dynamically loaded by xhr requestt.
Marcin Kuzminski <marcin@python-works.com>
parents:
1045
diff
changeset
|
77 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
|
78 else: |
2970
6248c6fb1fcf
fixed badRequest on views decorated by @jsonify
Marcin Kuzminski <marcin@python-works.com>
parents:
2937
diff
changeset
|
79 raise HTTPBadRequest() |
1608
0069657aaf42
lazy load of branches and tags menu
Marcin Kuzminski <marcin@python-works.com>
parents:
1482
diff
changeset
|
80 |
0069657aaf42
lazy load of branches and tags menu
Marcin Kuzminski <marcin@python-works.com>
parents:
1482
diff
changeset
|
81 def branch_tag_switcher(self, repo_name): |
0069657aaf42
lazy load of branches and tags menu
Marcin Kuzminski <marcin@python-works.com>
parents:
1482
diff
changeset
|
82 if request.is_xhr: |
1609
aaabec656ceb
fixed xhr check for tags-branches view
Marcin Kuzminski <marcin@python-works.com>
parents:
1608
diff
changeset
|
83 c.rhodecode_db_repo = Repository.get_by_repo_name(c.repo_name) |
3437
deb51ab04891
home: don't crash in branch_tag_switcher when an invalid repo name is given
Mads Kiilerich <madski@unity3d.com>
parents:
3154
diff
changeset
|
84 if c.rhodecode_db_repo: |
deb51ab04891
home: don't crash in branch_tag_switcher when an invalid repo name is given
Mads Kiilerich <madski@unity3d.com>
parents:
3154
diff
changeset
|
85 c.rhodecode_repo = c.rhodecode_db_repo.scm_instance |
deb51ab04891
home: don't crash in branch_tag_switcher when an invalid repo name is given
Mads Kiilerich <madski@unity3d.com>
parents:
3154
diff
changeset
|
86 return render('/switch_to_list.html') |
deb51ab04891
home: don't crash in branch_tag_switcher when an invalid repo name is given
Mads Kiilerich <madski@unity3d.com>
parents:
3154
diff
changeset
|
87 raise HTTPBadRequest() |