Mercurial > kallithea
annotate rhodecode/controllers/summary.py @ 3195:a50901f2108d beta
Added repository followers to the get_repo api function result.
author | aparkar <aparkar@icloud.com> |
---|---|
date | Tue, 22 Jan 2013 11:56:47 +1100 |
parents | 3f0fe158dc0c |
children | a5f0bc867edc b9ba0d4d3abf |
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 |
2068 | 33 from rhodecode.lib.compat import product |
810
bd57d1cb9dc3
fixes #62, added option to disable statistics for each repository
Marcin Kuzminski <marcin@python-works.com>
parents:
800
diff
changeset
|
34 |
2007
324ac367a4da
Added VCS into rhodecode core for faster and easier deployments of new versions
Marcin Kuzminski <marcin@python-works.com>
parents:
1890
diff
changeset
|
35 from rhodecode.lib.vcs.exceptions import ChangesetError, EmptyRepositoryError, \ |
1605
df59c0503636
implements #215 Repository view uses a README (text/markdown + rst)
Marcin Kuzminski <marcin@python-works.com>
parents:
1514
diff
changeset
|
36 NodeDoesNotExistError |
810
bd57d1cb9dc3
fixes #62, added option to disable statistics for each repository
Marcin Kuzminski <marcin@python-works.com>
parents:
800
diff
changeset
|
37 |
1652
8384eaabeb19
configurable clone url
Marcin Kuzminski <marcin@python-works.com>
parents:
1607
diff
changeset
|
38 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
|
39 from pylons.i18n.translation import _ |
bd57d1cb9dc3
fixes #62, added option to disable statistics for each repository
Marcin Kuzminski <marcin@python-works.com>
parents:
800
diff
changeset
|
40 |
1607
e886f91fcb71
Cached readme generation
Marcin Kuzminski <marcin@python-works.com>
parents:
1605
diff
changeset
|
41 from beaker.cache import cache_region, region_invalidate |
e886f91fcb71
Cached readme generation
Marcin Kuzminski <marcin@python-works.com>
parents:
1605
diff
changeset
|
42 |
2109 | 43 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
|
44 from rhodecode.model.db import Statistics, CacheInvalidation |
2109 | 45 from rhodecode.lib.utils2 import safe_unicode |
547
1e757ac98988
renamed project to rhodecode
Marcin Kuzminski <marcin@python-works.com>
parents:
510
diff
changeset
|
46 from rhodecode.lib.auth import LoginRequired, HasRepoPermissionAnyDecorator |
1045
3fc9183e05dd
another major codes rewrite:
Marcin Kuzminski <marcin@python-works.com>
parents:
1038
diff
changeset
|
47 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
|
48 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
|
49 from rhodecode.lib.markup_renderer import MarkupRenderer |
547
1e757ac98988
renamed project to rhodecode
Marcin Kuzminski <marcin@python-works.com>
parents:
510
diff
changeset
|
50 from rhodecode.lib.celerylib import run_task |
2109 | 51 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
|
52 from rhodecode.lib.helpers import RepoPage |
1514
87ec80c280bb
fixed issues with python2.5
Marcin Kuzminski <marcin@python-works.com>
parents:
1499
diff
changeset
|
53 from rhodecode.lib.compat import json, OrderedDict |
2326
405b1170f577
fixed readme rendering bug.
Marcin Kuzminski <marcin@python-works.com>
parents:
2253
diff
changeset
|
54 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
|
55 |
82
670713507d03
Moved summary to seperate controller,
Marcin Kuzminski <marcin@python-blog.com>
parents:
diff
changeset
|
56 log = logging.getLogger(__name__) |
670713507d03
Moved summary to seperate controller,
Marcin Kuzminski <marcin@python-blog.com>
parents:
diff
changeset
|
57 |
1607
e886f91fcb71
Cached readme generation
Marcin Kuzminski <marcin@python-works.com>
parents:
1605
diff
changeset
|
58 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
|
59 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
|
60 key=lambda y:y[0][1] + y[1][1])] |
1212 | 61 |
1807
1635a21485d6
- fixed issue with missing commits on some repos commands
Marcin Kuzminski <marcin@python-works.com>
parents:
1736
diff
changeset
|
62 |
1045
3fc9183e05dd
another major codes rewrite:
Marcin Kuzminski <marcin@python-works.com>
parents:
1038
diff
changeset
|
63 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
|
64 |
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
|
65 @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
|
66 @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
|
67 'repository.admin') |
82
670713507d03
Moved summary to seperate controller,
Marcin Kuzminski <marcin@python-blog.com>
parents:
diff
changeset
|
68 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:
127
diff
changeset
|
69 super(SummaryController, self).__before__() |
637
b04d5214fd3c
removed shortlog from main menu, as duplicated functionality of changelog,
Marcin Kuzminski <marcin@python-works.com>
parents:
629
diff
changeset
|
70 |
1171
2ab211e0aecd
changes for #56
Marcin Kuzminski <marcin@python-works.com>
parents:
1121
diff
changeset
|
71 def index(self, repo_name): |
1373
66f03a87141c
Fixes issue #201
Marcin Kuzminski <marcin@python-works.com>
parents:
1337
diff
changeset
|
72 c.dbrepo = dbrepo = c.rhodecode_db_repo |
1171
2ab211e0aecd
changes for #56
Marcin Kuzminski <marcin@python-works.com>
parents:
1121
diff
changeset
|
73 c.following = self.scm_model.is_following_repo(repo_name, |
1212 | 74 self.rhodecode_user.user_id) |
75 | |
637
b04d5214fd3c
removed shortlog from main menu, as duplicated functionality of changelog,
Marcin Kuzminski <marcin@python-works.com>
parents:
629
diff
changeset
|
76 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
|
77 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
|
78 |
1212 | 79 c.repo_changesets = RepoPage(c.rhodecode_repo, page=1, |
80 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
|
81 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
|
82 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
|
83 |
674
99875a8f2ad1
#49 Enabled anonymous access push and pull commands
Marcin Kuzminski <marcin@python-works.com>
parents:
643
diff
changeset
|
84 if self.rhodecode_user.username == 'default': |
1652
8384eaabeb19
configurable clone url
Marcin Kuzminski <marcin@python-works.com>
parents:
1607
diff
changeset
|
85 # 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
|
86 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
|
87 password = '' |
674
99875a8f2ad1
#49 Enabled anonymous access push and pull commands
Marcin Kuzminski <marcin@python-works.com>
parents:
643
diff
changeset
|
88 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
|
89 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
|
90 password = '@' |
674
99875a8f2ad1
#49 Enabled anonymous access push and pull commands
Marcin Kuzminski <marcin@python-works.com>
parents:
643
diff
changeset
|
91 |
1652
8384eaabeb19
configurable clone url
Marcin Kuzminski <marcin@python-works.com>
parents:
1607
diff
changeset
|
92 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
|
93 |
1652
8384eaabeb19
configurable clone url
Marcin Kuzminski <marcin@python-works.com>
parents:
1607
diff
changeset
|
94 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
|
95 |
4a28aff31a15
optimized summary page for disabled stats
Marcin Kuzminski <marcin@python-works.com>
parents:
1652
diff
changeset
|
96 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
|
97 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
|
98 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
|
99 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
|
100 '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
|
101 '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
|
102 '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
|
103 'netloc': parsed_url.netloc, |
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
|
104 'path': 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
|
105 } |
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
|
106 |
1813
a8c66e870bd0
implements #285: Implemented non changeable urls for clone url, and web views
Marcin Kuzminski <marcin@python-works.com>
parents:
1807
diff
changeset
|
107 uri = uri_tmpl % uri_dict |
a8c66e870bd0
implements #285: Implemented non changeable urls for clone url, and web views
Marcin Kuzminski <marcin@python-works.com>
parents:
1807
diff
changeset
|
108 # 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
|
109 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
|
110 {'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
|
111 ) |
1813
a8c66e870bd0
implements #285: Implemented non changeable urls for clone url, and web views
Marcin Kuzminski <marcin@python-works.com>
parents:
1807
diff
changeset
|
112 uri_id = uri_tmpl % uri_dict |
1719
4a28aff31a15
optimized summary page for disabled stats
Marcin Kuzminski <marcin@python-works.com>
parents:
1652
diff
changeset
|
113 |
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
|
114 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
|
115 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
|
116 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
|
117 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
|
118 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
|
119 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
|
120 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
|
121 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
|
122 |
389
174785aa5dc4
fixed sorting of tags and branches. Fix made in vcs.
Marcin Kuzminski <marcin@python-works.com>
parents:
365
diff
changeset
|
123 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
|
124 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
|
125 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
|
126 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
|
127 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
|
128 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
|
129 |
937 | 130 td = date.today() + timedelta(days=1) |
131 td_1m = td - timedelta(days=calendar.mdays[td.month]) | |
132 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
|
133 |
937 | 134 ts_min_m = mktime(td_1m.timetuple()) |
135 ts_min_y = mktime(td_1y.timetuple()) | |
136 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
|
137 |
1038
5554aa9c2480
another major code rafactor, reimplemented (almost from scratch)
Marcin Kuzminski <marcin@python-works.com>
parents:
962
diff
changeset
|
138 if dbrepo.enable_statistics: |
1719
4a28aff31a15
optimized summary page for disabled stats
Marcin Kuzminski <marcin@python-works.com>
parents:
1652
diff
changeset
|
139 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
|
140 c.no_data_msg = _('No data loaded yet') |
1171
2ab211e0aecd
changes for #56
Marcin Kuzminski <marcin@python-works.com>
parents:
1121
diff
changeset
|
141 run_task(get_commits_stats, c.dbrepo.repo_name, ts_min_y, ts_max_y) |
810
bd57d1cb9dc3
fixes #62, added option to disable statistics for each repository
Marcin Kuzminski <marcin@python-works.com>
parents:
800
diff
changeset
|
142 else: |
1719
4a28aff31a15
optimized summary page for disabled stats
Marcin Kuzminski <marcin@python-works.com>
parents:
1652
diff
changeset
|
143 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
|
144 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
|
145 c.ts_min = ts_min_m |
2256c78afe53
implemented basic autoupdating statistics fetched from database
Marcin Kuzminski <marcin@python-works.com>
parents:
486
diff
changeset
|
146 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
|
147 |
493
2256c78afe53
implemented basic autoupdating statistics fetched from database
Marcin Kuzminski <marcin@python-works.com>
parents:
486
diff
changeset
|
148 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
|
149 .filter(Statistics.repository == dbrepo)\ |
493
2256c78afe53
implemented basic autoupdating statistics fetched from database
Marcin Kuzminski <marcin@python-works.com>
parents:
486
diff
changeset
|
150 .scalar() |
637
b04d5214fd3c
removed shortlog from main menu, as duplicated functionality of changelog,
Marcin Kuzminski <marcin@python-works.com>
parents:
629
diff
changeset
|
151 |
1181
36b12336cb7f
added percentage of progress of gathered commit activity statistics
Marcin Kuzminski <marcin@python-works.com>
parents:
1171
diff
changeset
|
152 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
|
153 |
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
|
154 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
|
155 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
|
156 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
|
157 c.commit_data = stats.commit_activity |
2256c78afe53
implemented basic autoupdating statistics fetched from database
Marcin Kuzminski <marcin@python-works.com>
parents:
486
diff
changeset
|
158 c.overview_data = stats.commit_activity_combined |
1514
87ec80c280bb
fixed issues with python2.5
Marcin Kuzminski <marcin@python-works.com>
parents:
1499
diff
changeset
|
159 |
1499
182f5bd3b49d
changed list comprehesion into generator
Marcin Kuzminski <marcin@python-works.com>
parents:
1373
diff
changeset
|
160 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
|
161 "desc": LANGUAGES_EXTENSIONS_MAP.get(x)}) |
1499
182f5bd3b49d
changed list comprehesion into generator
Marcin Kuzminski <marcin@python-works.com>
parents:
1373
diff
changeset
|
162 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
|
163 |
1890
a3efaaa6ed4f
fixes issue #271
Marcin Kuzminski <marcin@python-works.com>
parents:
1824
diff
changeset
|
164 c.trending_languages = json.dumps( |
a3efaaa6ed4f
fixes issue #271
Marcin Kuzminski <marcin@python-works.com>
parents:
1824
diff
changeset
|
165 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
|
166 ) |
1807
1635a21485d6
- fixed issue with missing commits on some repos commands
Marcin Kuzminski <marcin@python-works.com>
parents:
1736
diff
changeset
|
167 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
|
168 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
|
169 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
|
170 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
|
171 pass |
36b12336cb7f
added percentage of progress of gathered commit activity statistics
Marcin Kuzminski <marcin@python-works.com>
parents:
1171
diff
changeset
|
172 else: |
36b12336cb7f
added percentage of progress of gathered commit activity statistics
Marcin Kuzminski <marcin@python-works.com>
parents:
1171
diff
changeset
|
173 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
|
174 c.repo_last_rev) * 100) |
493
2256c78afe53
implemented basic autoupdating statistics fetched from database
Marcin Kuzminski <marcin@python-works.com>
parents:
486
diff
changeset
|
175 else: |
2256c78afe53
implemented basic autoupdating statistics fetched from database
Marcin Kuzminski <marcin@python-works.com>
parents:
486
diff
changeset
|
176 c.commit_data = json.dumps({}) |
1212 | 177 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
|
178 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
|
179 c.no_data = True |
1514
87ec80c280bb
fixed issues with python2.5
Marcin Kuzminski <marcin@python-works.com>
parents:
1499
diff
changeset
|
180 |
1038
5554aa9c2480
another major code rafactor, reimplemented (almost from scratch)
Marcin Kuzminski <marcin@python-works.com>
parents:
962
diff
changeset
|
181 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
|
182 if c.enable_downloads: |
1171
2ab211e0aecd
changes for #56
Marcin Kuzminski <marcin@python-works.com>
parents:
1121
diff
changeset
|
183 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
|
184 |
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
|
185 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
|
186 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
|
187 return render('summary/summary.html') |
362
558eb7c5028f
version bump to 0.8
Marcin Kuzminski <marcin@python-works.com>
parents:
318
diff
changeset
|
188 |
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
|
189 def __get_readme_data(self, db_repo): |
370ed7829168
Readme renderer now uses landing_rev parameter to render the readme based on
Marcin Kuzminski <marcin@python-works.com>
parents:
2326
diff
changeset
|
190 repo_name = db_repo.repo_name |
1605
df59c0503636
implements #215 Repository view uses a README (text/markdown + rst)
Marcin Kuzminski <marcin@python-works.com>
parents:
1514
diff
changeset
|
191 |
1607
e886f91fcb71
Cached readme generation
Marcin Kuzminski <marcin@python-works.com>
parents:
1605
diff
changeset
|
192 @cache_region('long_term') |
e886f91fcb71
Cached readme generation
Marcin Kuzminski <marcin@python-works.com>
parents:
1605
diff
changeset
|
193 def _get_readme_from_cache(key): |
e886f91fcb71
Cached readme generation
Marcin Kuzminski <marcin@python-works.com>
parents:
1605
diff
changeset
|
194 readme_data = None |
e886f91fcb71
Cached readme generation
Marcin Kuzminski <marcin@python-works.com>
parents:
1605
diff
changeset
|
195 readme_file = None |
2633
bc272fd65e57
mover verbose logging in readme search function
Marcin Kuzminski <marcin@python-works.com>
parents:
2603
diff
changeset
|
196 log.debug('Looking for README file') |
1607
e886f91fcb71
Cached readme generation
Marcin Kuzminski <marcin@python-works.com>
parents:
1605
diff
changeset
|
197 try: |
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
|
198 # get's the landing revision! or tip if fails |
370ed7829168
Readme renderer now uses landing_rev parameter to render the readme based on
Marcin Kuzminski <marcin@python-works.com>
parents:
2326
diff
changeset
|
199 cs = db_repo.get_landing_changeset() |
2788
2d6d6c346f66
Don't scan for readmes if changeset is an EmptyChangeset
Marcin Kuzminski <marcin@python-works.com>
parents:
2684
diff
changeset
|
200 if isinstance(cs, EmptyChangeset): |
2d6d6c346f66
Don't scan for readmes if changeset is an EmptyChangeset
Marcin Kuzminski <marcin@python-works.com>
parents:
2684
diff
changeset
|
201 raise EmptyRepositoryError() |
1607
e886f91fcb71
Cached readme generation
Marcin Kuzminski <marcin@python-works.com>
parents:
1605
diff
changeset
|
202 renderer = MarkupRenderer() |
e886f91fcb71
Cached readme generation
Marcin Kuzminski <marcin@python-works.com>
parents:
1605
diff
changeset
|
203 for f in README_FILES: |
e886f91fcb71
Cached readme generation
Marcin Kuzminski <marcin@python-works.com>
parents:
1605
diff
changeset
|
204 try: |
e886f91fcb71
Cached readme generation
Marcin Kuzminski <marcin@python-works.com>
parents:
1605
diff
changeset
|
205 readme = cs.get_node(f) |
2326
405b1170f577
fixed readme rendering bug.
Marcin Kuzminski <marcin@python-works.com>
parents:
2253
diff
changeset
|
206 if not isinstance(readme, FileNode): |
405b1170f577
fixed readme rendering bug.
Marcin Kuzminski <marcin@python-works.com>
parents:
2253
diff
changeset
|
207 continue |
1607
e886f91fcb71
Cached readme generation
Marcin Kuzminski <marcin@python-works.com>
parents:
1605
diff
changeset
|
208 readme_file = f |
2633
bc272fd65e57
mover verbose logging in readme search function
Marcin Kuzminski <marcin@python-works.com>
parents:
2603
diff
changeset
|
209 log.debug('Found README file `%s` rendering...' % |
bc272fd65e57
mover verbose logging in readme search function
Marcin Kuzminski <marcin@python-works.com>
parents:
2603
diff
changeset
|
210 readme_file) |
1607
e886f91fcb71
Cached readme generation
Marcin Kuzminski <marcin@python-works.com>
parents:
1605
diff
changeset
|
211 readme_data = renderer.render(readme.content, f) |
e886f91fcb71
Cached readme generation
Marcin Kuzminski <marcin@python-works.com>
parents:
1605
diff
changeset
|
212 break |
e886f91fcb71
Cached readme generation
Marcin Kuzminski <marcin@python-works.com>
parents:
1605
diff
changeset
|
213 except NodeDoesNotExistError: |
e886f91fcb71
Cached readme generation
Marcin Kuzminski <marcin@python-works.com>
parents:
1605
diff
changeset
|
214 continue |
e886f91fcb71
Cached readme generation
Marcin Kuzminski <marcin@python-works.com>
parents:
1605
diff
changeset
|
215 except ChangesetError: |
2252
37945c6a7dbd
don't use db-repo instance on readme file fetching, use regular scm get_repo that doesn't hide exceptions
Marcin Kuzminski <marcin@python-works.com>
parents:
2251
diff
changeset
|
216 log.error(traceback.format_exc()) |
1607
e886f91fcb71
Cached readme generation
Marcin Kuzminski <marcin@python-works.com>
parents:
1605
diff
changeset
|
217 pass |
e886f91fcb71
Cached readme generation
Marcin Kuzminski <marcin@python-works.com>
parents:
1605
diff
changeset
|
218 except EmptyRepositoryError: |
e886f91fcb71
Cached readme generation
Marcin Kuzminski <marcin@python-works.com>
parents:
1605
diff
changeset
|
219 pass |
e886f91fcb71
Cached readme generation
Marcin Kuzminski <marcin@python-works.com>
parents:
1605
diff
changeset
|
220 except Exception: |
e886f91fcb71
Cached readme generation
Marcin Kuzminski <marcin@python-works.com>
parents:
1605
diff
changeset
|
221 log.error(traceback.format_exc()) |
e886f91fcb71
Cached readme generation
Marcin Kuzminski <marcin@python-works.com>
parents:
1605
diff
changeset
|
222 |
e886f91fcb71
Cached readme generation
Marcin Kuzminski <marcin@python-works.com>
parents:
1605
diff
changeset
|
223 return readme_data, readme_file |
e886f91fcb71
Cached readme generation
Marcin Kuzminski <marcin@python-works.com>
parents:
1605
diff
changeset
|
224 |
2252
37945c6a7dbd
don't use db-repo instance on readme file fetching, use regular scm get_repo that doesn't hide exceptions
Marcin Kuzminski <marcin@python-works.com>
parents:
2251
diff
changeset
|
225 key = repo_name + '_README' |
1607
e886f91fcb71
Cached readme generation
Marcin Kuzminski <marcin@python-works.com>
parents:
1605
diff
changeset
|
226 inv = CacheInvalidation.invalidate(key) |
e886f91fcb71
Cached readme generation
Marcin Kuzminski <marcin@python-works.com>
parents:
1605
diff
changeset
|
227 if inv is not None: |
e886f91fcb71
Cached readme generation
Marcin Kuzminski <marcin@python-works.com>
parents:
1605
diff
changeset
|
228 region_invalidate(_get_readme_from_cache, None, key) |
e886f91fcb71
Cached readme generation
Marcin Kuzminski <marcin@python-works.com>
parents:
1605
diff
changeset
|
229 CacheInvalidation.set_valid(inv.cache_key) |
e886f91fcb71
Cached readme generation
Marcin Kuzminski <marcin@python-works.com>
parents:
1605
diff
changeset
|
230 return _get_readme_from_cache(key) |
1605
df59c0503636
implements #215 Repository view uses a README (text/markdown + rst)
Marcin Kuzminski <marcin@python-works.com>
parents:
1514
diff
changeset
|
231 |
942
32318ec7bfc1
added branch/tag options to download links in summary
Marcin Kuzminski <marcin@python-works.com>
parents:
937
diff
changeset
|
232 def _get_download_links(self, repo): |
32318ec7bfc1
added branch/tag options to download links in summary
Marcin Kuzminski <marcin@python-works.com>
parents:
937
diff
changeset
|
233 |
32318ec7bfc1
added branch/tag options to download links in summary
Marcin Kuzminski <marcin@python-works.com>
parents:
937
diff
changeset
|
234 download_l = [] |
32318ec7bfc1
added branch/tag options to download links in summary
Marcin Kuzminski <marcin@python-works.com>
parents:
937
diff
changeset
|
235 |
32318ec7bfc1
added branch/tag options to download links in summary
Marcin Kuzminski <marcin@python-works.com>
parents:
937
diff
changeset
|
236 branches_group = ([], _("Branches")) |
32318ec7bfc1
added branch/tag options to download links in summary
Marcin Kuzminski <marcin@python-works.com>
parents:
937
diff
changeset
|
237 tags_group = ([], _("Tags")) |
32318ec7bfc1
added branch/tag options to download links in summary
Marcin Kuzminski <marcin@python-works.com>
parents:
937
diff
changeset
|
238 |
1045
3fc9183e05dd
another major codes rewrite:
Marcin Kuzminski <marcin@python-works.com>
parents:
1038
diff
changeset
|
239 for name, chs in c.rhodecode_repo.branches.items(): |
942
32318ec7bfc1
added branch/tag options to download links in summary
Marcin Kuzminski <marcin@python-works.com>
parents:
937
diff
changeset
|
240 #chs = chs.split(':')[-1] |
32318ec7bfc1
added branch/tag options to download links in summary
Marcin Kuzminski <marcin@python-works.com>
parents:
937
diff
changeset
|
241 branches_group[0].append((chs, name),) |
32318ec7bfc1
added branch/tag options to download links in summary
Marcin Kuzminski <marcin@python-works.com>
parents:
937
diff
changeset
|
242 download_l.append(branches_group) |
32318ec7bfc1
added branch/tag options to download links in summary
Marcin Kuzminski <marcin@python-works.com>
parents:
937
diff
changeset
|
243 |
1045
3fc9183e05dd
another major codes rewrite:
Marcin Kuzminski <marcin@python-works.com>
parents:
1038
diff
changeset
|
244 for name, chs in c.rhodecode_repo.tags.items(): |
942
32318ec7bfc1
added branch/tag options to download links in summary
Marcin Kuzminski <marcin@python-works.com>
parents:
937
diff
changeset
|
245 #chs = chs.split(':')[-1] |
32318ec7bfc1
added branch/tag options to download links in summary
Marcin Kuzminski <marcin@python-works.com>
parents:
937
diff
changeset
|
246 tags_group[0].append((chs, name),) |
32318ec7bfc1
added branch/tag options to download links in summary
Marcin Kuzminski <marcin@python-works.com>
parents:
937
diff
changeset
|
247 download_l.append(tags_group) |
32318ec7bfc1
added branch/tag options to download links in summary
Marcin Kuzminski <marcin@python-works.com>
parents:
937
diff
changeset
|
248 |
32318ec7bfc1
added branch/tag options to download links in summary
Marcin Kuzminski <marcin@python-works.com>
parents:
937
diff
changeset
|
249 return download_l |