annotate rhodecode/controllers/summary.py @ 3749:b950b884ab87 beta

auth decorators are not used anymore on __before__ - this will allow to create a whitelist of API enabled controller functions - moved around functions with _ to beginning of the files to make it cleaner
author Marcin Kuzminski <marcin@python-works.com>
date Mon, 15 Apr 2013 00:46:34 +0200
parents be78bf3b1a1f
children f485eb78b519
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
763
0dad296d2a57 extended trending languages to more entries, implemented new faster and "fancy"
Marcin Kuzminski <marcin@python-works.com>
parents: 734
diff changeset
1 # -*- coding: utf-8 -*-
0dad296d2a57 extended trending languages to more entries, implemented new faster and "fancy"
Marcin Kuzminski <marcin@python-works.com>
parents: 734
diff changeset
2 """
860
5f7731e3ab4d fixed spelling mistakes, and some minor docs bugs
Marcin Kuzminski <marcin@python-works.com>
parents: 820
diff changeset
3 rhodecode.controllers.summary
5f7731e3ab4d fixed spelling mistakes, and some minor docs bugs
Marcin Kuzminski <marcin@python-works.com>
parents: 820
diff changeset
4 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
763
0dad296d2a57 extended trending languages to more entries, implemented new faster and "fancy"
Marcin Kuzminski <marcin@python-works.com>
parents: 734
diff changeset
5
0dad296d2a57 extended trending languages to more entries, implemented new faster and "fancy"
Marcin Kuzminski <marcin@python-works.com>
parents: 734
diff changeset
6 Summary controller for Rhodecode
1203
6832ef664673 source code cleanup: remove trailing white space, normalize file endings
Marcin Kuzminski <marcin@python-works.com>
parents: 1181
diff changeset
7
763
0dad296d2a57 extended trending languages to more entries, implemented new faster and "fancy"
Marcin Kuzminski <marcin@python-works.com>
parents: 734
diff changeset
8 :created_on: Apr 18, 2010
0dad296d2a57 extended trending languages to more entries, implemented new faster and "fancy"
Marcin Kuzminski <marcin@python-works.com>
parents: 734
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>
763
0dad296d2a57 extended trending languages to more entries, implemented new faster and "fancy"
Marcin Kuzminski <marcin@python-works.com>
parents: 734
diff changeset
11 :license: GPLv3, see COPYING for more details.
0dad296d2a57 extended trending languages to more entries, implemented new faster and "fancy"
Marcin Kuzminski <marcin@python-works.com>
parents: 734
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: 1181
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: 1181
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/>.
763
0dad296d2a57 extended trending languages to more entries, implemented new faster and "fancy"
Marcin Kuzminski <marcin@python-works.com>
parents: 734
diff changeset
25
1605
df59c0503636 implements #215 Repository view uses a README (text/markdown + rst)
Marcin Kuzminski <marcin@python-works.com>
parents: 1514
diff changeset
26 import traceback
810
bd57d1cb9dc3 fixes #62, added option to disable statistics for each repository
Marcin Kuzminski <marcin@python-works.com>
parents: 800
diff changeset
27 import calendar
bd57d1cb9dc3 fixes #62, added option to disable statistics for each repository
Marcin Kuzminski <marcin@python-works.com>
parents: 800
diff changeset
28 import logging
2099
e829e8446902 fixes issue #385 clone by ID url was loosing proxy prefix in URL
Marcin Kuzminski <marcin@python-works.com>
parents: 2068
diff changeset
29 import urllib
810
bd57d1cb9dc3 fixes #62, added option to disable statistics for each repository
Marcin Kuzminski <marcin@python-works.com>
parents: 800
diff changeset
30 from time import mktime
1605
df59c0503636 implements #215 Repository view uses a README (text/markdown + rst)
Marcin Kuzminski <marcin@python-works.com>
parents: 1514
diff changeset
31 from datetime import timedelta, date
1652
8384eaabeb19 configurable clone url
Marcin Kuzminski <marcin@python-works.com>
parents: 1607
diff changeset
32 from urlparse import urlparse
810
bd57d1cb9dc3 fixes #62, added option to disable statistics for each repository
Marcin Kuzminski <marcin@python-works.com>
parents: 800
diff changeset
33
1652
8384eaabeb19 configurable clone url
Marcin Kuzminski <marcin@python-works.com>
parents: 1607
diff changeset
34 from pylons import tmpl_context as c, request, url, config
810
bd57d1cb9dc3 fixes #62, added option to disable statistics for each repository
Marcin Kuzminski <marcin@python-works.com>
parents: 800
diff changeset
35 from pylons.i18n.translation import _
3246
b9ba0d4d3abf implemented #83 show repo size on summary page
Marcin Kuzminski <marcin@python-works.com>
parents: 3048
diff changeset
36 from webob.exc import HTTPBadRequest
810
bd57d1cb9dc3 fixes #62, added option to disable statistics for each repository
Marcin Kuzminski <marcin@python-works.com>
parents: 800
diff changeset
37
1607
e886f91fcb71 Cached readme generation
Marcin Kuzminski <marcin@python-works.com>
parents: 1605
diff changeset
38 from beaker.cache import cache_region, region_invalidate
e886f91fcb71 Cached readme generation
Marcin Kuzminski <marcin@python-works.com>
parents: 1605
diff changeset
39
3635
be78bf3b1a1f added url quote in clone url. fixes issue #809
Marcin Kuzminski <marcin@python-works.com>
parents: 3550
diff changeset
40 from rhodecode.lib import helpers as h
3246
b9ba0d4d3abf implemented #83 show repo size on summary page
Marcin Kuzminski <marcin@python-works.com>
parents: 3048
diff changeset
41 from rhodecode.lib.compat import product
b9ba0d4d3abf implemented #83 show repo size on summary page
Marcin Kuzminski <marcin@python-works.com>
parents: 3048
diff changeset
42 from rhodecode.lib.vcs.exceptions import ChangesetError, EmptyRepositoryError, \
b9ba0d4d3abf implemented #83 show repo size on summary page
Marcin Kuzminski <marcin@python-works.com>
parents: 3048
diff changeset
43 NodeDoesNotExistError
2109
8ecfed1d8f8b utils/conf
Marcin Kuzminski <marcin@python-works.com>
parents: 2104
diff changeset
44 from rhodecode.config.conf import ALL_READMES, ALL_EXTS, LANGUAGES_EXTENSIONS_MAP
1607
e886f91fcb71 Cached readme generation
Marcin Kuzminski <marcin@python-works.com>
parents: 1605
diff changeset
45 from rhodecode.model.db import Statistics, CacheInvalidation
3246
b9ba0d4d3abf implemented #83 show repo size on summary page
Marcin Kuzminski <marcin@python-works.com>
parents: 3048
diff changeset
46 from rhodecode.lib.utils import jsonify
3635
be78bf3b1a1f added url quote in clone url. fixes issue #809
Marcin Kuzminski <marcin@python-works.com>
parents: 3550
diff changeset
47 from rhodecode.lib.utils2 import safe_unicode, safe_str
3246
b9ba0d4d3abf implemented #83 show repo size on summary page
Marcin Kuzminski <marcin@python-works.com>
parents: 3048
diff changeset
48 from rhodecode.lib.auth import LoginRequired, HasRepoPermissionAnyDecorator,\
b9ba0d4d3abf implemented #83 show repo size on summary page
Marcin Kuzminski <marcin@python-works.com>
parents: 3048
diff changeset
49 NotAnonymous
1045
3fc9183e05dd another major codes rewrite:
Marcin Kuzminski <marcin@python-works.com>
parents: 1038
diff changeset
50 from rhodecode.lib.base import BaseRepoController, render
2684
2b6939a77052 Bumped mercurial version to 2.3
Marcin Kuzminski <marcin@python-works.com>
parents: 2633
diff changeset
51 from rhodecode.lib.vcs.backends.base import EmptyChangeset
1605
df59c0503636 implements #215 Repository view uses a README (text/markdown + rst)
Marcin Kuzminski <marcin@python-works.com>
parents: 1514
diff changeset
52 from rhodecode.lib.markup_renderer import MarkupRenderer
547
1e757ac98988 renamed project to rhodecode
Marcin Kuzminski <marcin@python-works.com>
parents: 510
diff changeset
53 from rhodecode.lib.celerylib import run_task
2109
8ecfed1d8f8b utils/conf
Marcin Kuzminski <marcin@python-works.com>
parents: 2104
diff changeset
54 from rhodecode.lib.celerylib.tasks import get_commits_stats
1098
91ddd4db4614 Added dedicated repo pager to support reversed new way slicing method of vcs and get_changesets method
Marcin Kuzminski <marcin@python-works.com>
parents: 1082
diff changeset
55 from rhodecode.lib.helpers import RepoPage
1514
87ec80c280bb fixed issues with python2.5
Marcin Kuzminski <marcin@python-works.com>
parents: 1499
diff changeset
56 from rhodecode.lib.compat import json, OrderedDict
2326
405b1170f577 fixed readme rendering bug.
Marcin Kuzminski <marcin@python-works.com>
parents: 2253
diff changeset
57 from rhodecode.lib.vcs.nodes import FileNode
810
bd57d1cb9dc3 fixes #62, added option to disable statistics for each repository
Marcin Kuzminski <marcin@python-works.com>
parents: 800
diff changeset
58
82
670713507d03 Moved summary to seperate controller,
Marcin Kuzminski <marcin@python-blog.com>
parents:
diff changeset
59 log = logging.getLogger(__name__)
670713507d03 Moved summary to seperate controller,
Marcin Kuzminski <marcin@python-blog.com>
parents:
diff changeset
60
1607
e886f91fcb71 Cached readme generation
Marcin Kuzminski <marcin@python-works.com>
parents: 1605
diff changeset
61 README_FILES = [''.join([x[0][0], x[1][0]]) for x in
1605
df59c0503636 implements #215 Repository view uses a README (text/markdown + rst)
Marcin Kuzminski <marcin@python-works.com>
parents: 1514
diff changeset
62 sorted(list(product(ALL_READMES, ALL_EXTS)),
df59c0503636 implements #215 Repository view uses a README (text/markdown + rst)
Marcin Kuzminski <marcin@python-works.com>
parents: 1514
diff changeset
63 key=lambda y:y[0][1] + y[1][1])]
1212
50e41777675d pep8ify
Marcin Kuzminski <marcin@python-works.com>
parents: 1206
diff changeset
64
1807
1635a21485d6 - fixed issue with missing commits on some repos commands
Marcin Kuzminski <marcin@python-works.com>
parents: 1736
diff changeset
65
1045
3fc9183e05dd another major codes rewrite:
Marcin Kuzminski <marcin@python-works.com>
parents: 1038
diff changeset
66 class SummaryController(BaseRepoController):
637
b04d5214fd3c removed shortlog from main menu, as duplicated functionality of changelog,
Marcin Kuzminski <marcin@python-works.com>
parents: 629
diff changeset
67
3749
b950b884ab87 auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents: 3635
diff changeset
68 def __before__(self):
b950b884ab87 auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents: 3635
diff changeset
69 super(SummaryController, self).__before__()
b950b884ab87 auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents: 3635
diff changeset
70
b950b884ab87 auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents: 3635
diff changeset
71 def _get_download_links(self, repo):
b950b884ab87 auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents: 3635
diff changeset
72
b950b884ab87 auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents: 3635
diff changeset
73 download_l = []
b950b884ab87 auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents: 3635
diff changeset
74
b950b884ab87 auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents: 3635
diff changeset
75 branches_group = ([], _("Branches"))
b950b884ab87 auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents: 3635
diff changeset
76 tags_group = ([], _("Tags"))
b950b884ab87 auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents: 3635
diff changeset
77
b950b884ab87 auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents: 3635
diff changeset
78 for name, chs in c.rhodecode_repo.branches.items():
b950b884ab87 auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents: 3635
diff changeset
79 #chs = chs.split(':')[-1]
b950b884ab87 auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents: 3635
diff changeset
80 branches_group[0].append((chs, name),)
b950b884ab87 auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents: 3635
diff changeset
81 download_l.append(branches_group)
b950b884ab87 auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents: 3635
diff changeset
82
b950b884ab87 auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents: 3635
diff changeset
83 for name, chs in c.rhodecode_repo.tags.items():
b950b884ab87 auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents: 3635
diff changeset
84 #chs = chs.split(':')[-1]
b950b884ab87 auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents: 3635
diff changeset
85 tags_group[0].append((chs, name),)
b950b884ab87 auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents: 3635
diff changeset
86 download_l.append(tags_group)
b950b884ab87 auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents: 3635
diff changeset
87
b950b884ab87 auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents: 3635
diff changeset
88 return download_l
b950b884ab87 auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents: 3635
diff changeset
89
b950b884ab87 auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents: 3635
diff changeset
90
b950b884ab87 auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents: 3635
diff changeset
91 def __get_readme_data(self, db_repo):
b950b884ab87 auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents: 3635
diff changeset
92 repo_name = db_repo.repo_name
b950b884ab87 auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents: 3635
diff changeset
93
b950b884ab87 auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents: 3635
diff changeset
94 @cache_region('long_term')
b950b884ab87 auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents: 3635
diff changeset
95 def _get_readme_from_cache(key):
b950b884ab87 auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents: 3635
diff changeset
96 readme_data = None
b950b884ab87 auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents: 3635
diff changeset
97 readme_file = None
b950b884ab87 auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents: 3635
diff changeset
98 log.debug('Looking for README file')
b950b884ab87 auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents: 3635
diff changeset
99 try:
b950b884ab87 auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents: 3635
diff changeset
100 # get's the landing revision! or tip if fails
b950b884ab87 auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents: 3635
diff changeset
101 cs = db_repo.get_landing_changeset()
b950b884ab87 auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents: 3635
diff changeset
102 if isinstance(cs, EmptyChangeset):
b950b884ab87 auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents: 3635
diff changeset
103 raise EmptyRepositoryError()
b950b884ab87 auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents: 3635
diff changeset
104 renderer = MarkupRenderer()
b950b884ab87 auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents: 3635
diff changeset
105 for f in README_FILES:
b950b884ab87 auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents: 3635
diff changeset
106 try:
b950b884ab87 auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents: 3635
diff changeset
107 readme = cs.get_node(f)
b950b884ab87 auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents: 3635
diff changeset
108 if not isinstance(readme, FileNode):
b950b884ab87 auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents: 3635
diff changeset
109 continue
b950b884ab87 auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents: 3635
diff changeset
110 readme_file = f
b950b884ab87 auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents: 3635
diff changeset
111 log.debug('Found README file `%s` rendering...' %
b950b884ab87 auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents: 3635
diff changeset
112 readme_file)
b950b884ab87 auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents: 3635
diff changeset
113 readme_data = renderer.render(readme.content, f)
b950b884ab87 auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents: 3635
diff changeset
114 break
b950b884ab87 auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents: 3635
diff changeset
115 except NodeDoesNotExistError:
b950b884ab87 auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents: 3635
diff changeset
116 continue
b950b884ab87 auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents: 3635
diff changeset
117 except ChangesetError:
b950b884ab87 auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents: 3635
diff changeset
118 log.error(traceback.format_exc())
b950b884ab87 auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents: 3635
diff changeset
119 pass
b950b884ab87 auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents: 3635
diff changeset
120 except EmptyRepositoryError:
b950b884ab87 auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents: 3635
diff changeset
121 pass
b950b884ab87 auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents: 3635
diff changeset
122 except Exception:
b950b884ab87 auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents: 3635
diff changeset
123 log.error(traceback.format_exc())
b950b884ab87 auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents: 3635
diff changeset
124
b950b884ab87 auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents: 3635
diff changeset
125 return readme_data, readme_file
b950b884ab87 auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents: 3635
diff changeset
126
b950b884ab87 auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents: 3635
diff changeset
127 key = repo_name + '_README'
b950b884ab87 auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents: 3635
diff changeset
128 inv = CacheInvalidation.invalidate(key)
b950b884ab87 auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents: 3635
diff changeset
129 if inv is not None:
b950b884ab87 auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents: 3635
diff changeset
130 region_invalidate(_get_readme_from_cache, None, key)
b950b884ab87 auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents: 3635
diff changeset
131 CacheInvalidation.set_valid(inv.cache_key)
b950b884ab87 auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents: 3635
diff changeset
132 return _get_readme_from_cache(key)
b950b884ab87 auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents: 3635
diff changeset
133
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: 127
diff changeset
134 @LoginRequired()
318
fdf9f6ee5217 Implemented permissions into hg app, secured admin controllers, templates and repository specific controllers
Marcin Kuzminski <marcin@python-works.com>
parents: 282
diff changeset
135 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
637
b04d5214fd3c removed shortlog from main menu, as duplicated functionality of changelog,
Marcin Kuzminski <marcin@python-works.com>
parents: 629
diff changeset
136 'repository.admin')
1171
2ab211e0aecd changes for #56
Marcin Kuzminski <marcin@python-works.com>
parents: 1121
diff changeset
137 def index(self, repo_name):
1373
66f03a87141c Fixes issue #201
Marcin Kuzminski <marcin@python-works.com>
parents: 1337
diff changeset
138 c.dbrepo = dbrepo = c.rhodecode_db_repo
1212
50e41777675d pep8ify
Marcin Kuzminski <marcin@python-works.com>
parents: 1206
diff changeset
139
637
b04d5214fd3c removed shortlog from main menu, as duplicated functionality of changelog,
Marcin Kuzminski <marcin@python-works.com>
parents: 629
diff changeset
140 def url_generator(**kw):
1249
13b507b73190 fixes issue #166, made clone-uri use the pylons build in url generators, that way it's more safe.
Marcin Kuzminski <marcin@python-works.com>
parents: 1244
diff changeset
141 return url('shortlog_home', repo_name=repo_name, size=10, **kw)
637
b04d5214fd3c removed shortlog from main menu, as duplicated functionality of changelog,
Marcin Kuzminski <marcin@python-works.com>
parents: 629
diff changeset
142
1212
50e41777675d pep8ify
Marcin Kuzminski <marcin@python-works.com>
parents: 1206
diff changeset
143 c.repo_changesets = RepoPage(c.rhodecode_repo, page=1,
50e41777675d pep8ify
Marcin Kuzminski <marcin@python-works.com>
parents: 1206
diff changeset
144 items_per_page=10, url=url_generator)
2884
a16f9a76c26f #574 Show pull request status also in shortlog (if any)
Marcin Kuzminski <marcin@python-works.com>
parents: 2788
diff changeset
145 page_revisions = [x.raw_id for x in list(c.repo_changesets)]
a16f9a76c26f #574 Show pull request status also in shortlog (if any)
Marcin Kuzminski <marcin@python-works.com>
parents: 2788
diff changeset
146 c.statuses = c.rhodecode_db_repo.statuses(page_revisions)
637
b04d5214fd3c removed shortlog from main menu, as duplicated functionality of changelog,
Marcin Kuzminski <marcin@python-works.com>
parents: 629
diff changeset
147
674
99875a8f2ad1 #49 Enabled anonymous access push and pull commands
Marcin Kuzminski <marcin@python-works.com>
parents: 643
diff changeset
148 if self.rhodecode_user.username == 'default':
1652
8384eaabeb19 configurable clone url
Marcin Kuzminski <marcin@python-works.com>
parents: 1607
diff changeset
149 # for default(anonymous) user we don't need to pass credentials
910
811fa5d45de8 Rewrite simehg for enabling cloning with raw url for anonymous access + some optimizations for making less queries when authenticating users.
Marcin Kuzminski <marcin@python-works.com>
parents: 902
diff changeset
150 username = ''
811fa5d45de8 Rewrite simehg for enabling cloning with raw url for anonymous access + some optimizations for making less queries when authenticating users.
Marcin Kuzminski <marcin@python-works.com>
parents: 902
diff changeset
151 password = ''
674
99875a8f2ad1 #49 Enabled anonymous access push and pull commands
Marcin Kuzminski <marcin@python-works.com>
parents: 643
diff changeset
152 else:
1121
f3f847712f87 replaced all global calls to template context (rhodecode_user), into instance attributes
Marcin Kuzminski <marcin@python-works.com>
parents: 1098
diff changeset
153 username = str(self.rhodecode_user.username)
936
e1c9903d7e38 fixed wrong clone url for anonymous access
Marcin Kuzminski <marcin@python-works.com>
parents: 910
diff changeset
154 password = '@'
674
99875a8f2ad1 #49 Enabled anonymous access push and pull commands
Marcin Kuzminski <marcin@python-works.com>
parents: 643
diff changeset
155
1652
8384eaabeb19 configurable clone url
Marcin Kuzminski <marcin@python-works.com>
parents: 1607
diff changeset
156 parsed_url = urlparse(url.current(qualified=True))
1719
4a28aff31a15 optimized summary page for disabled stats
Marcin Kuzminski <marcin@python-works.com>
parents: 1652
diff changeset
157
1652
8384eaabeb19 configurable clone url
Marcin Kuzminski <marcin@python-works.com>
parents: 1607
diff changeset
158 default_clone_uri = '{scheme}://{user}{pass}{netloc}{path}'
1719
4a28aff31a15 optimized summary page for disabled stats
Marcin Kuzminski <marcin@python-works.com>
parents: 1652
diff changeset
159
4a28aff31a15 optimized summary page for disabled stats
Marcin Kuzminski <marcin@python-works.com>
parents: 1652
diff changeset
160 uri_tmpl = config.get('clone_uri', default_clone_uri)
4a28aff31a15 optimized summary page for disabled stats
Marcin Kuzminski <marcin@python-works.com>
parents: 1652
diff changeset
161 uri_tmpl = uri_tmpl.replace('{', '%(').replace('}', ')s')
2099
e829e8446902 fixes issue #385 clone by ID url was loosing proxy prefix in URL
Marcin Kuzminski <marcin@python-works.com>
parents: 2068
diff changeset
162 decoded_path = safe_unicode(urllib.unquote(parsed_url.path))
1813
a8c66e870bd0 implements #285: Implemented non changeable urls for clone url, and web views
Marcin Kuzminski <marcin@python-works.com>
parents: 1807
diff changeset
163 uri_dict = {
3048
3f0fe158dc0c Added uri encoding to the username so that usernames with '@' in them (such as email address/users from LDAP) will
philip.j@hostdime.com
parents: 2884
diff changeset
164 'user': urllib.quote(username),
1813
a8c66e870bd0 implements #285: Implemented non changeable urls for clone url, and web views
Marcin Kuzminski <marcin@python-works.com>
parents: 1807
diff changeset
165 'pass': password,
a8c66e870bd0 implements #285: Implemented non changeable urls for clone url, and web views
Marcin Kuzminski <marcin@python-works.com>
parents: 1807
diff changeset
166 'scheme': parsed_url.scheme,
a8c66e870bd0 implements #285: Implemented non changeable urls for clone url, and web views
Marcin Kuzminski <marcin@python-works.com>
parents: 1807
diff changeset
167 'netloc': parsed_url.netloc,
3635
be78bf3b1a1f added url quote in clone url. fixes issue #809
Marcin Kuzminski <marcin@python-works.com>
parents: 3550
diff changeset
168 'path': urllib.quote(safe_str(decoded_path))
1813
a8c66e870bd0 implements #285: Implemented non changeable urls for clone url, and web views
Marcin Kuzminski <marcin@python-works.com>
parents: 1807
diff changeset
169 }
2099
e829e8446902 fixes issue #385 clone by ID url was loosing proxy prefix in URL
Marcin Kuzminski <marcin@python-works.com>
parents: 2068
diff changeset
170
3635
be78bf3b1a1f added url quote in clone url. fixes issue #809
Marcin Kuzminski <marcin@python-works.com>
parents: 3550
diff changeset
171 uri = (uri_tmpl % uri_dict)
1813
a8c66e870bd0 implements #285: Implemented non changeable urls for clone url, and web views
Marcin Kuzminski <marcin@python-works.com>
parents: 1807
diff changeset
172 # generate another clone url by id
2099
e829e8446902 fixes issue #385 clone by ID url was loosing proxy prefix in URL
Marcin Kuzminski <marcin@python-works.com>
parents: 2068
diff changeset
173 uri_dict.update(
e829e8446902 fixes issue #385 clone by ID url was loosing proxy prefix in URL
Marcin Kuzminski <marcin@python-works.com>
parents: 2068
diff changeset
174 {'path': decoded_path.replace(repo_name, '_%s' % c.dbrepo.repo_id)}
e829e8446902 fixes issue #385 clone by ID url was loosing proxy prefix in URL
Marcin Kuzminski <marcin@python-works.com>
parents: 2068
diff changeset
175 )
1813
a8c66e870bd0 implements #285: Implemented non changeable urls for clone url, and web views
Marcin Kuzminski <marcin@python-works.com>
parents: 1807
diff changeset
176 uri_id = uri_tmpl % uri_dict
1719
4a28aff31a15 optimized summary page for disabled stats
Marcin Kuzminski <marcin@python-works.com>
parents: 1652
diff changeset
177
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: 127
diff changeset
178 c.clone_repo_url = uri
1813
a8c66e870bd0 implements #285: Implemented non changeable urls for clone url, and web views
Marcin Kuzminski <marcin@python-works.com>
parents: 1807
diff changeset
179 c.clone_repo_url_id = uri_id
389
174785aa5dc4 fixed sorting of tags and branches. Fix made in vcs.
Marcin Kuzminski <marcin@python-works.com>
parents: 365
diff changeset
180 c.repo_tags = OrderedDict()
2099
e829e8446902 fixes issue #385 clone by ID url was loosing proxy prefix in URL
Marcin Kuzminski <marcin@python-works.com>
parents: 2068
diff changeset
181 for name, hash_ in c.rhodecode_repo.tags.items()[:10]:
643
9dc1d92d82ed updated setup for all newest versions
Marcin Kuzminski <marcin@python-works.com>
parents: 637
diff changeset
182 try:
2099
e829e8446902 fixes issue #385 clone by ID url was loosing proxy prefix in URL
Marcin Kuzminski <marcin@python-works.com>
parents: 2068
diff changeset
183 c.repo_tags[name] = c.rhodecode_repo.get_changeset(hash_)
643
9dc1d92d82ed updated setup for all newest versions
Marcin Kuzminski <marcin@python-works.com>
parents: 637
diff changeset
184 except ChangesetError:
2099
e829e8446902 fixes issue #385 clone by ID url was loosing proxy prefix in URL
Marcin Kuzminski <marcin@python-works.com>
parents: 2068
diff changeset
185 c.repo_tags[name] = EmptyChangeset(hash_)
637
b04d5214fd3c removed shortlog from main menu, as duplicated functionality of changelog,
Marcin Kuzminski <marcin@python-works.com>
parents: 629
diff changeset
186
389
174785aa5dc4 fixed sorting of tags and branches. Fix made in vcs.
Marcin Kuzminski <marcin@python-works.com>
parents: 365
diff changeset
187 c.repo_branches = OrderedDict()
2099
e829e8446902 fixes issue #385 clone by ID url was loosing proxy prefix in URL
Marcin Kuzminski <marcin@python-works.com>
parents: 2068
diff changeset
188 for name, hash_ in c.rhodecode_repo.branches.items()[:10]:
643
9dc1d92d82ed updated setup for all newest versions
Marcin Kuzminski <marcin@python-works.com>
parents: 637
diff changeset
189 try:
2099
e829e8446902 fixes issue #385 clone by ID url was loosing proxy prefix in URL
Marcin Kuzminski <marcin@python-works.com>
parents: 2068
diff changeset
190 c.repo_branches[name] = c.rhodecode_repo.get_changeset(hash_)
643
9dc1d92d82ed updated setup for all newest versions
Marcin Kuzminski <marcin@python-works.com>
parents: 637
diff changeset
191 except ChangesetError:
2099
e829e8446902 fixes issue #385 clone by ID url was loosing proxy prefix in URL
Marcin Kuzminski <marcin@python-works.com>
parents: 2068
diff changeset
192 c.repo_branches[name] = EmptyChangeset(hash_)
637
b04d5214fd3c removed shortlog from main menu, as duplicated functionality of changelog,
Marcin Kuzminski <marcin@python-works.com>
parents: 629
diff changeset
193
937
6489d9b7791d fixed graph bug
Marcin Kuzminski <marcin@python-works.com>
parents: 936
diff changeset
194 td = date.today() + timedelta(days=1)
6489d9b7791d fixed graph bug
Marcin Kuzminski <marcin@python-works.com>
parents: 936
diff changeset
195 td_1m = td - timedelta(days=calendar.mdays[td.month])
6489d9b7791d fixed graph bug
Marcin Kuzminski <marcin@python-works.com>
parents: 936
diff changeset
196 td_1y = td - timedelta(days=365)
637
b04d5214fd3c removed shortlog from main menu, as duplicated functionality of changelog,
Marcin Kuzminski <marcin@python-works.com>
parents: 629
diff changeset
197
937
6489d9b7791d fixed graph bug
Marcin Kuzminski <marcin@python-works.com>
parents: 936
diff changeset
198 ts_min_m = mktime(td_1m.timetuple())
6489d9b7791d fixed graph bug
Marcin Kuzminski <marcin@python-works.com>
parents: 936
diff changeset
199 ts_min_y = mktime(td_1y.timetuple())
6489d9b7791d fixed graph bug
Marcin Kuzminski <marcin@python-works.com>
parents: 936
diff changeset
200 ts_max_y = mktime(td.timetuple())
637
b04d5214fd3c removed shortlog from main menu, as duplicated functionality of changelog,
Marcin Kuzminski <marcin@python-works.com>
parents: 629
diff changeset
201
1038
5554aa9c2480 another major code rafactor, reimplemented (almost from scratch)
Marcin Kuzminski <marcin@python-works.com>
parents: 962
diff changeset
202 if dbrepo.enable_statistics:
1719
4a28aff31a15 optimized summary page for disabled stats
Marcin Kuzminski <marcin@python-works.com>
parents: 1652
diff changeset
203 c.show_stats = True
810
bd57d1cb9dc3 fixes #62, added option to disable statistics for each repository
Marcin Kuzminski <marcin@python-works.com>
parents: 800
diff changeset
204 c.no_data_msg = _('No data loaded yet')
3276
eaa887c6c0af added recursion limit for stats gathering, sometimes it did >1000 loops which lead to python throwing max recursion depth exceeded error.
Marcin Kuzminski <marcin@python-works.com>
parents: 3246
diff changeset
205 recurse_limit = 500 # don't recurse more than 500 times when parsing
eaa887c6c0af added recursion limit for stats gathering, sometimes it did >1000 loops which lead to python throwing max recursion depth exceeded error.
Marcin Kuzminski <marcin@python-works.com>
parents: 3246
diff changeset
206 run_task(get_commits_stats, c.dbrepo.repo_name, ts_min_y,
eaa887c6c0af added recursion limit for stats gathering, sometimes it did >1000 loops which lead to python throwing max recursion depth exceeded error.
Marcin Kuzminski <marcin@python-works.com>
parents: 3246
diff changeset
207 ts_max_y, recurse_limit)
810
bd57d1cb9dc3 fixes #62, added option to disable statistics for each repository
Marcin Kuzminski <marcin@python-works.com>
parents: 800
diff changeset
208 else:
1719
4a28aff31a15 optimized summary page for disabled stats
Marcin Kuzminski <marcin@python-works.com>
parents: 1652
diff changeset
209 c.show_stats = False
1082
c2440badab84 fixes for vcs 0.2.0and new slicing methods
Marcin Kuzminski <marcin@python-works.com>
parents: 1045
diff changeset
210 c.no_data_msg = _('Statistics are disabled for this repository')
493
2256c78afe53 implemented basic autoupdating statistics fetched from database
Marcin Kuzminski <marcin@python-works.com>
parents: 486
diff changeset
211 c.ts_min = ts_min_m
2256c78afe53 implemented basic autoupdating statistics fetched from database
Marcin Kuzminski <marcin@python-works.com>
parents: 486
diff changeset
212 c.ts_max = ts_max_y
637
b04d5214fd3c removed shortlog from main menu, as duplicated functionality of changelog,
Marcin Kuzminski <marcin@python-works.com>
parents: 629
diff changeset
213
493
2256c78afe53 implemented basic autoupdating statistics fetched from database
Marcin Kuzminski <marcin@python-works.com>
parents: 486
diff changeset
214 stats = self.sa.query(Statistics)\
1038
5554aa9c2480 another major code rafactor, reimplemented (almost from scratch)
Marcin Kuzminski <marcin@python-works.com>
parents: 962
diff changeset
215 .filter(Statistics.repository == dbrepo)\
493
2256c78afe53 implemented basic autoupdating statistics fetched from database
Marcin Kuzminski <marcin@python-works.com>
parents: 486
diff changeset
216 .scalar()
637
b04d5214fd3c removed shortlog from main menu, as duplicated functionality of changelog,
Marcin Kuzminski <marcin@python-works.com>
parents: 629
diff changeset
217
1181
36b12336cb7f added percentage of progress of gathered commit activity statistics
Marcin Kuzminski <marcin@python-works.com>
parents: 1171
diff changeset
218 c.stats_percentage = 0
637
b04d5214fd3c removed shortlog from main menu, as duplicated functionality of changelog,
Marcin Kuzminski <marcin@python-works.com>
parents: 629
diff changeset
219
506
d5efb83590ef fixed lock decorator bug which didn't release the lock after func execution and rewrote the pidlock a little with Ask Solem suggestions!
Marcin Kuzminski <marcin@python-works.com>
parents: 493
diff changeset
220 if stats and stats.languages:
1038
5554aa9c2480 another major code rafactor, reimplemented (almost from scratch)
Marcin Kuzminski <marcin@python-works.com>
parents: 962
diff changeset
221 c.no_data = False is dbrepo.enable_statistics
1281
0d3706ccf129 small fixes for git support
Marcin Kuzminski <marcin@python-works.com>
parents: 1251
diff changeset
222 lang_stats_d = json.loads(stats.languages)
493
2256c78afe53 implemented basic autoupdating statistics fetched from database
Marcin Kuzminski <marcin@python-works.com>
parents: 486
diff changeset
223 c.commit_data = stats.commit_activity
2256c78afe53 implemented basic autoupdating statistics fetched from database
Marcin Kuzminski <marcin@python-works.com>
parents: 486
diff changeset
224 c.overview_data = stats.commit_activity_combined
1514
87ec80c280bb fixed issues with python2.5
Marcin Kuzminski <marcin@python-works.com>
parents: 1499
diff changeset
225
1499
182f5bd3b49d changed list comprehesion into generator
Marcin Kuzminski <marcin@python-works.com>
parents: 1373
diff changeset
226 lang_stats = ((x, {"count": y,
1249
13b507b73190 fixes issue #166, made clone-uri use the pylons build in url generators, that way it's more safe.
Marcin Kuzminski <marcin@python-works.com>
parents: 1244
diff changeset
227 "desc": LANGUAGES_EXTENSIONS_MAP.get(x)})
1499
182f5bd3b49d changed list comprehesion into generator
Marcin Kuzminski <marcin@python-works.com>
parents: 1373
diff changeset
228 for x, y in lang_stats_d.items())
1244
0eceb478c720 fixed issue #165 trending source files are now stored in cache as ext only, and translated to description only when displaying, so future changes of mappings will take affect right away.
Marcin Kuzminski <marcin@python-works.com>
parents: 1212
diff changeset
229
1890
a3efaaa6ed4f fixes issue #271
Marcin Kuzminski <marcin@python-works.com>
parents: 1824
diff changeset
230 c.trending_languages = json.dumps(
a3efaaa6ed4f fixes issue #271
Marcin Kuzminski <marcin@python-works.com>
parents: 1824
diff changeset
231 sorted(lang_stats, reverse=True, key=lambda k: k[1])[:10]
a3efaaa6ed4f fixes issue #271
Marcin Kuzminski <marcin@python-works.com>
parents: 1824
diff changeset
232 )
1807
1635a21485d6 - fixed issue with missing commits on some repos commands
Marcin Kuzminski <marcin@python-works.com>
parents: 1736
diff changeset
233 last_rev = stats.stat_on_revision + 1
1635a21485d6 - fixed issue with missing commits on some repos commands
Marcin Kuzminski <marcin@python-works.com>
parents: 1736
diff changeset
234 c.repo_last_rev = c.rhodecode_repo.count()\
1181
36b12336cb7f added percentage of progress of gathered commit activity statistics
Marcin Kuzminski <marcin@python-works.com>
parents: 1171
diff changeset
235 if c.rhodecode_repo.revisions else 0
36b12336cb7f added percentage of progress of gathered commit activity statistics
Marcin Kuzminski <marcin@python-works.com>
parents: 1171
diff changeset
236 if last_rev == 0 or c.repo_last_rev == 0:
36b12336cb7f added percentage of progress of gathered commit activity statistics
Marcin Kuzminski <marcin@python-works.com>
parents: 1171
diff changeset
237 pass
36b12336cb7f added percentage of progress of gathered commit activity statistics
Marcin Kuzminski <marcin@python-works.com>
parents: 1171
diff changeset
238 else:
36b12336cb7f added percentage of progress of gathered commit activity statistics
Marcin Kuzminski <marcin@python-works.com>
parents: 1171
diff changeset
239 c.stats_percentage = '%.2f' % ((float((last_rev)) /
36b12336cb7f added percentage of progress of gathered commit activity statistics
Marcin Kuzminski <marcin@python-works.com>
parents: 1171
diff changeset
240 c.repo_last_rev) * 100)
493
2256c78afe53 implemented basic autoupdating statistics fetched from database
Marcin Kuzminski <marcin@python-works.com>
parents: 486
diff changeset
241 else:
2256c78afe53 implemented basic autoupdating statistics fetched from database
Marcin Kuzminski <marcin@python-works.com>
parents: 486
diff changeset
242 c.commit_data = json.dumps({})
1212
50e41777675d pep8ify
Marcin Kuzminski <marcin@python-works.com>
parents: 1206
diff changeset
243 c.overview_data = json.dumps([[ts_min_y, 0], [ts_max_y, 10]])
506
d5efb83590ef fixed lock decorator bug which didn't release the lock after func execution and rewrote the pidlock a little with Ask Solem suggestions!
Marcin Kuzminski <marcin@python-works.com>
parents: 493
diff changeset
244 c.trending_languages = json.dumps({})
800
e41aacb6aa18 small fixes for summary graph, added message about no data for the graph, when empty
Marcin Kuzminski <marcin@python-works.com>
parents: 763
diff changeset
245 c.no_data = True
1514
87ec80c280bb fixed issues with python2.5
Marcin Kuzminski <marcin@python-works.com>
parents: 1499
diff changeset
246
1038
5554aa9c2480 another major code rafactor, reimplemented (almost from scratch)
Marcin Kuzminski <marcin@python-works.com>
parents: 962
diff changeset
247 c.enable_downloads = dbrepo.enable_downloads
962
72f008ed9b18 implemented #84 downloads can be enabled/disabled per each repository from now.
Marcin Kuzminski <marcin@python-works.com>
parents: 942
diff changeset
248 if c.enable_downloads:
1171
2ab211e0aecd changes for #56
Marcin Kuzminski <marcin@python-works.com>
parents: 1121
diff changeset
249 c.download_options = self._get_download_links(c.rhodecode_repo)
942
32318ec7bfc1 added branch/tag options to download links in summary
Marcin Kuzminski <marcin@python-works.com>
parents: 937
diff changeset
250
2603
370ed7829168 Readme renderer now uses landing_rev parameter to render the readme based on
Marcin Kuzminski <marcin@python-works.com>
parents: 2326
diff changeset
251 c.readme_data, c.readme_file = \
370ed7829168 Readme renderer now uses landing_rev parameter to render the readme based on
Marcin Kuzminski <marcin@python-works.com>
parents: 2326
diff changeset
252 self.__get_readme_data(c.rhodecode_db_repo)
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: 127
diff changeset
253 return render('summary/summary.html')
362
558eb7c5028f version bump to 0.8
Marcin Kuzminski <marcin@python-works.com>
parents: 318
diff changeset
254
3749
b950b884ab87 auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents: 3635
diff changeset
255 @LoginRequired()
3246
b9ba0d4d3abf implemented #83 show repo size on summary page
Marcin Kuzminski <marcin@python-works.com>
parents: 3048
diff changeset
256 @NotAnonymous()
3749
b950b884ab87 auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents: 3635
diff changeset
257 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
b950b884ab87 auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents: 3635
diff changeset
258 'repository.admin')
3246
b9ba0d4d3abf implemented #83 show repo size on summary page
Marcin Kuzminski <marcin@python-works.com>
parents: 3048
diff changeset
259 @jsonify
b9ba0d4d3abf implemented #83 show repo size on summary page
Marcin Kuzminski <marcin@python-works.com>
parents: 3048
diff changeset
260 def repo_size(self, repo_name):
b9ba0d4d3abf implemented #83 show repo size on summary page
Marcin Kuzminski <marcin@python-works.com>
parents: 3048
diff changeset
261 if request.is_xhr:
3550
7abbb77b02d0 Repo size - show just the size without duplicating text
Marcin Kuzminski <marcin@python-works.com>
parents: 3529
diff changeset
262 return c.rhodecode_db_repo._repo_size()
3246
b9ba0d4d3abf implemented #83 show repo size on summary page
Marcin Kuzminski <marcin@python-works.com>
parents: 3048
diff changeset
263 else:
b9ba0d4d3abf implemented #83 show repo size on summary page
Marcin Kuzminski <marcin@python-works.com>
parents: 3048
diff changeset
264 raise HTTPBadRequest()