##// END OF EJS Templates
rhodecode.js: workaround missing unknown autocomplete textboxKeyUpEvent...
rhodecode.js: workaround missing unknown autocomplete textboxKeyUpEvent It was introduced in the YUI update in 5143b8df576c and used for @mention handling.

File last commit:

r4116:ffd45b18 rhodecode-2.2.5-gpl
r4173:e975e1d4 rhodecode-2.2.5-gpl
Show More
summary.py
249 lines | 9.3 KiB | text/x-python | PythonLexer
extended trending languages to more entries, implemented new faster and "fancy"...
r763 # -*- coding: utf-8 -*-
fixed license issue #149
r1206 # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
source code cleanup: remove trailing white space, normalize file endings
r1203 #
renamed project to rhodecode
r547 # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
source code cleanup: remove trailing white space, normalize file endings
r1203 #
renamed project to rhodecode
r547 # You should have received a copy of the GNU General Public License
fixed license issue #149
r1206 # along with this program. If not, see <http://www.gnu.org/licenses/>.
Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5....
r4116 """
rhodecode.controllers.summary
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Summary controller for Rhodecode
:created_on: Apr 18, 2010
:author: marcink
:copyright: (c) 2013 RhodeCode GmbH.
:license: GPLv3, see LICENSE for more details.
"""
extended trending languages to more entries, implemented new faster and "fancy"...
r763
implements #215 Repository view uses a README (text/markdown + rst)
r1605 import traceback
fixes #62, added option to disable statistics for each repository
r810 import calendar
import logging
fixes issue #385 clone by ID url was loosing proxy prefix in URL
r2099 import urllib
fixes #62, added option to disable statistics for each repository
r810 from time import mktime
implements #215 Repository view uses a README (text/markdown + rst)
r1605 from datetime import timedelta, date
configurable clone url...
r1652 from urlparse import urlparse
fixes #62, added option to disable statistics for each repository
r810
configurable clone url...
r1652 from pylons import tmpl_context as c, request, url, config
fixes #62, added option to disable statistics for each repository
r810 from pylons.i18n.translation import _
implemented #83 show repo size on summary page
r3246 from webob.exc import HTTPBadRequest
fixes #62, added option to disable statistics for each repository
r810
Cached readme generation...
r1607 from beaker.cache import cache_region, region_invalidate
implemented #83 show repo size on summary page
r3246 from rhodecode.lib.compat import product
from rhodecode.lib.vcs.exceptions import ChangesetError, EmptyRepositoryError, \
NodeDoesNotExistError
utils/conf...
r2109 from rhodecode.config.conf import ALL_READMES, ALL_EXTS, LANGUAGES_EXTENSIONS_MAP
Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5....
r4116 from rhodecode.model.db import Statistics, CacheInvalidation, User
implemented #83 show repo size on summary page
r3246 from rhodecode.lib.utils import jsonify
added url quote in clone url. fixes issue #809
r3635 from rhodecode.lib.utils2 import safe_unicode, safe_str
implemented #83 show repo size on summary page
r3246 from rhodecode.lib.auth import LoginRequired, HasRepoPermissionAnyDecorator,\
NotAnonymous
another major codes rewrite:...
r1045 from rhodecode.lib.base import BaseRepoController, render
Bumped mercurial version to 2.3...
r2684 from rhodecode.lib.vcs.backends.base import EmptyChangeset
implements #215 Repository view uses a README (text/markdown + rst)
r1605 from rhodecode.lib.markup_renderer import MarkupRenderer
renamed project to rhodecode
r547 from rhodecode.lib.celerylib import run_task
utils/conf...
r2109 from rhodecode.lib.celerylib.tasks import get_commits_stats
Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5....
r4116 from rhodecode.lib.compat import json
fixed readme rendering bug....
r2326 from rhodecode.lib.vcs.nodes import FileNode
Removed shortlog aka lightweight changelog....
r3764 from rhodecode.controllers.changelog import _load_changelog_summary
fixes #62, added option to disable statistics for each repository
r810
renamed project to rhodecode
r547 log = logging.getLogger(__name__)
Cached readme generation...
r1607 README_FILES = [''.join([x[0][0], x[1][0]]) for x in
implements #215 Repository view uses a README (text/markdown + rst)
r1605 sorted(list(product(ALL_READMES, ALL_EXTS)),
key=lambda y:y[0][1] + y[1][1])]
pep8ify
r1212
- fixed issue with missing commits on some repos commands...
r1807
another major codes rewrite:...
r1045 class SummaryController(BaseRepoController):
removed shortlog from main menu, as duplicated functionality of changelog,...
r637
auth decorators are not used anymore on __before__...
r3749 def __before__(self):
super(SummaryController, self).__before__()
def _get_download_links(self, repo):
download_l = []
branches_group = ([], _("Branches"))
tags_group = ([], _("Tags"))
for name, chs in c.rhodecode_repo.branches.items():
#chs = chs.split(':')[-1]
branches_group[0].append((chs, name),)
download_l.append(branches_group)
for name, chs in c.rhodecode_repo.tags.items():
#chs = chs.split(':')[-1]
tags_group[0].append((chs, name),)
download_l.append(tags_group)
return download_l
def __get_readme_data(self, db_repo):
repo_name = db_repo.repo_name
Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5....
r4116 log.debug('Looking for README file')
auth decorators are not used anymore on __before__...
r3749
@cache_region('long_term')
Mads Kiilerich
invalidate: encapsulate how key is generated from repo_name and kind
r3773 def _get_readme_from_cache(key, kind):
auth decorators are not used anymore on __before__...
r3749 readme_data = None
readme_file = None
try:
Fixed spelling of get's to gets
r4089 # gets the landing revision! or tip if fails
auth decorators are not used anymore on __before__...
r3749 cs = db_repo.get_landing_changeset()
if isinstance(cs, EmptyChangeset):
raise EmptyRepositoryError()
renderer = MarkupRenderer()
for f in README_FILES:
try:
readme = cs.get_node(f)
if not isinstance(readme, FileNode):
continue
readme_file = f
log.debug('Found README file `%s` rendering...' %
readme_file)
Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5....
r4116 readme_data = renderer.render(readme.content,
filename=f)
auth decorators are not used anymore on __before__...
r3749 break
except NodeDoesNotExistError:
continue
except ChangesetError:
log.error(traceback.format_exc())
pass
except EmptyRepositoryError:
pass
except Exception:
log.error(traceback.format_exc())
return readme_data, readme_file
Mads Kiilerich
invalidate: encapsulate how key is generated from repo_name and kind
r3773 kind = 'README'
valid = CacheInvalidation.test_and_set_valid(repo_name, kind)
Mads Kiilerich
invalidation: don't create CacheInvalidation records on startup...
r3774 if not valid:
Mads Kiilerich
invalidate: encapsulate how key is generated from repo_name and kind
r3773 region_invalidate(_get_readme_from_cache, None, repo_name, kind)
return _get_readme_from_cache(repo_name, kind)
auth decorators are not used anymore on __before__...
r3749
renamed project to rhodecode
r547 @LoginRequired()
@HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
removed shortlog from main menu, as duplicated functionality of changelog,...
r637 'repository.admin')
changes for #56
r1171 def index(self, repo_name):
Removed shortlog aka lightweight changelog....
r3764 _load_changelog_summary()
Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5....
r4116
username = ''
if self.rhodecode_user.username != User.DEFAULT_USER:
username = safe_str(self.rhodecode_user.username)
_def_clone_uri = _def_clone_uri_by_id = c.clone_uri_tmpl
if '{repo}' in _def_clone_uri:
_def_clone_uri_by_id = _def_clone_uri.replace('{repo}', '_{repoid}')
elif '{repoid}' in _def_clone_uri:
_def_clone_uri_by_id = _def_clone_uri.replace('_{repoid}', '{repo}')
c.clone_repo_url = c.rhodecode_db_repo.clone_url(user=username,
uri_tmpl=_def_clone_uri)
c.clone_repo_url_id = c.rhodecode_db_repo.clone_url(user=username,
uri_tmpl=_def_clone_uri_by_id)
if c.rhodecode_db_repo.enable_statistics:
c.show_stats = True
#49 Enabled anonymous access push and pull commands
r674 else:
Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5....
r4116 c.show_stats = False
stats = self.sa.query(Statistics)\
.filter(Statistics.repository == c.rhodecode_db_repo)\
.scalar()
#49 Enabled anonymous access push and pull commands
r674
Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5....
r4116 c.stats_percentage = 0
optimized summary page for disabled stats
r1719
Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5....
r4116 if stats and stats.languages:
c.no_data = False is c.rhodecode_db_repo.enable_statistics
lang_stats_d = json.loads(stats.languages)
optimized summary page for disabled stats
r1719
Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5....
r4116 lang_stats = ((x, {"count": y,
"desc": LANGUAGES_EXTENSIONS_MAP.get(x)})
for x, y in lang_stats_d.items())
c.trending_languages = json.dumps(
sorted(lang_stats, reverse=True, key=lambda k: k[1])[:10]
)
else:
c.no_data = True
c.trending_languages = json.dumps({})
c.enable_downloads = c.rhodecode_db_repo.enable_downloads
c.readme_data, c.readme_file = \
self.__get_readme_data(c.rhodecode_db_repo)
return render('summary/summary.html')
fixes issue #385 clone by ID url was loosing proxy prefix in URL
r2099
Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5....
r4116 @LoginRequired()
@NotAnonymous()
@HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
'repository.admin')
@jsonify
def repo_size(self, repo_name):
if request.is_xhr:
return c.rhodecode_db_repo._repo_size()
else:
raise HTTPBadRequest()
optimized summary page for disabled stats
r1719
Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5....
r4116 @LoginRequired()
@HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
'repository.admin')
def statistics(self, repo_name):
if c.rhodecode_db_repo.enable_statistics:
c.show_stats = True
c.no_data_msg = _('No data loaded yet')
else:
c.show_stats = False
c.no_data_msg = _('Statistics are disabled for this repository')
removed shortlog from main menu, as duplicated functionality of changelog,...
r637
fixed graph bug
r937 td = date.today() + timedelta(days=1)
td_1m = td - timedelta(days=calendar.mdays[td.month])
td_1y = td - timedelta(days=365)
removed shortlog from main menu, as duplicated functionality of changelog,...
r637
fixed graph bug
r937 ts_min_m = mktime(td_1m.timetuple())
ts_min_y = mktime(td_1y.timetuple())
ts_max_y = mktime(td.timetuple())
renamed project to rhodecode
r547 c.ts_min = ts_min_m
c.ts_max = ts_max_y
removed shortlog from main menu, as duplicated functionality of changelog,...
r637
renamed project to rhodecode
r547 stats = self.sa.query(Statistics)\
Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5....
r4116 .filter(Statistics.repository == c.rhodecode_db_repo)\
renamed project to rhodecode
r547 .scalar()
if stats and stats.languages:
Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5....
r4116 c.no_data = False is c.rhodecode_db_repo.enable_statistics
small fixes for git support
r1281 lang_stats_d = json.loads(stats.languages)
renamed project to rhodecode
r547 c.commit_data = stats.commit_activity
c.overview_data = stats.commit_activity_combined
fixed issues with python2.5...
r1514
changed list comprehesion into generator
r1499 lang_stats = ((x, {"count": y,
fixes issue #166, made clone-uri use the pylons build in url generators, that way it's more safe.
r1249 "desc": LANGUAGES_EXTENSIONS_MAP.get(x)})
changed list comprehesion into generator
r1499 for x, y in lang_stats_d.items())
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....
r1244
fixes issue #271...
r1890 c.trending_languages = json.dumps(
sorted(lang_stats, reverse=True, key=lambda k: k[1])[:10]
)
- fixed issue with missing commits on some repos commands...
r1807 last_rev = stats.stat_on_revision + 1
c.repo_last_rev = c.rhodecode_repo.count()\
added percentage of progress of gathered commit activity statistics
r1181 if c.rhodecode_repo.revisions else 0
if last_rev == 0 or c.repo_last_rev == 0:
pass
else:
c.stats_percentage = '%.2f' % ((float((last_rev)) /
c.repo_last_rev) * 100)
renamed project to rhodecode
r547 else:
c.commit_data = json.dumps({})
pep8ify
r1212 c.overview_data = json.dumps([[ts_min_y, 0], [ts_max_y, 10]])
renamed project to rhodecode
r547 c.trending_languages = json.dumps({})
small fixes for summary graph, added message about no data for the graph, when empty
r800 c.no_data = True
fixed issues with python2.5...
r1514
Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5....
r4116 recurse_limit = 500 # don't recurse more than 500 times when parsing
run_task(get_commits_stats, c.rhodecode_db_repo.repo_name, ts_min_y,
ts_max_y, recurse_limit)
return render('summary/statistics.html')