##// END OF EJS Templates
Rewrote git middleware with the same pattern as recent fix for #176...
Rewrote git middleware with the same pattern as recent fix for #176 - additionally fixed dulwich server bug, that used old deprecated method. This fix caused huge improvement of speed for fetching git repos - moved simplehg and simplegit middleware into begining of pylons callstack. This low level middleware don't need to run any of the middlewares except each other.

File last commit:

r1373:66f03a87 beta
r1496:f4fed0b3 beta
Show More
summary.py
188 lines | 6.6 KiB | text/x-python | PythonLexer
extended trending languages to more entries, implemented new faster and "fancy"...
r763 # -*- coding: utf-8 -*-
"""
fixed spelling mistakes, and some minor docs bugs
r860 rhodecode.controllers.summary
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
extended trending languages to more entries, implemented new faster and "fancy"...
r763
Summary controller for Rhodecode
source code cleanup: remove trailing white space, normalize file endings
r1203
extended trending languages to more entries, implemented new faster and "fancy"...
r763 :created_on: Apr 18, 2010
:author: marcink
source code cleanup: remove trailing white space, normalize file endings
r1203 :copyright: (C) 2009-2011 Marcin Kuzminski <marcin@python-works.com>
extended trending languages to more entries, implemented new faster and "fancy"...
r763 :license: GPLv3, see COPYING for more details.
"""
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/>.
extended trending languages to more entries, implemented new faster and "fancy"...
r763
fixes #62, added option to disable statistics for each repository
r810 import calendar
import logging
from time import mktime
fixed graph bug
r937 from datetime import datetime, timedelta, date
fixes #62, added option to disable statistics for each repository
r810
from vcs.exceptions import ChangesetError
renamed project to rhodecode
r547 from pylons import tmpl_context as c, request, url
fixes #62, added option to disable statistics for each repository
r810 from pylons.i18n.translation import _
changes for #56
r1171 from rhodecode.model.db import Statistics, Repository
from rhodecode.model.repo import RepoModel
fixes #62, added option to disable statistics for each repository
r810
renamed project to rhodecode
r547 from rhodecode.lib.auth import LoginRequired, HasRepoPermissionAnyDecorator
another major codes rewrite:...
r1045 from rhodecode.lib.base import BaseRepoController, render
Changed OrderedDict implementation to pypy odict, in general it's the fastest and most reliable solution. Added OrderedTuple from python foundation.
r1337 from rhodecode.lib.utils import EmptyChangeset
from rhodecode.lib.odict import OrderedDict
fixes #62, added option to disable statistics for each repository
r810
renamed project to rhodecode
r547 from rhodecode.lib.celerylib import run_task
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 from rhodecode.lib.celerylib.tasks import get_commits_stats, \
LANGUAGES_EXTENSIONS_MAP
Added dedicated repo pager to support reversed new way slicing method of vcs and get_changesets method
r1098 from rhodecode.lib.helpers import RepoPage
fixes #62, added option to disable statistics for each repository
r810
#37 fixed json imports for python2.5...
r592 try:
import json
except ImportError:
#python 2.5 compatibility
import simplejson as json
renamed project to rhodecode
r547 log = logging.getLogger(__name__)
pep8ify
r1212
another major codes rewrite:...
r1045 class SummaryController(BaseRepoController):
removed shortlog from main menu, as duplicated functionality of changelog,...
r637
renamed project to rhodecode
r547 @LoginRequired()
@HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
removed shortlog from main menu, as duplicated functionality of changelog,...
r637 'repository.admin')
renamed project to rhodecode
r547 def __before__(self):
super(SummaryController, self).__before__()
removed shortlog from main menu, as duplicated functionality of changelog,...
r637
changes for #56
r1171 def index(self, repo_name):
e = request.environ
Fixes issue #201...
r1373 c.dbrepo = dbrepo = c.rhodecode_db_repo
another major codes rewrite:...
r1045
changes for #56
r1171 c.following = self.scm_model.is_following_repo(repo_name,
pep8ify
r1212 self.rhodecode_user.user_id)
removed shortlog from main menu, as duplicated functionality of changelog,...
r637 def url_generator(**kw):
fixes issue #166, made clone-uri use the pylons build in url generators, that way it's more safe.
r1249 return url('shortlog_home', repo_name=repo_name, size=10, **kw)
removed shortlog from main menu, as duplicated functionality of changelog,...
r637
pep8ify
r1212 c.repo_changesets = RepoPage(c.rhodecode_repo, page=1,
items_per_page=10, url=url_generator)
removed shortlog from main menu, as duplicated functionality of changelog,...
r637
#49 Enabled anonymous access push and pull commands
r674 if self.rhodecode_user.username == 'default':
Rewrite simehg for enabling cloning with raw url for anonymous access + some optimizations for making less queries when authenticating users....
r910 #for default(anonymous) user we don't need to pass credentials
username = ''
password = ''
#49 Enabled anonymous access push and pull commands
r674 else:
replaced all global calls to template context (rhodecode_user), into instance attributes
r1121 username = str(self.rhodecode_user.username)
fixed wrong clone url for anonymous access
r936 password = '@'
#49 Enabled anonymous access push and pull commands
r674
fixes issue #166, made clone-uri use the pylons build in url generators, that way it's more safe.
r1249 if e.get('wsgi.url_scheme') == 'https':
split_s = 'https://'
else:
split_s = 'http://'
qualified_uri = [split_s] + [url.current(qualified=True)\
.split(split_s)[-1]]
uri = u'%(proto)s%(user)s%(pass)s%(rest)s' \
% {'user': username,
'pass': password,
'proto': qualified_uri[0],
'rest': qualified_uri[1]}
renamed project to rhodecode
r547 c.clone_repo_url = uri
c.repo_tags = OrderedDict()
changes for #56
r1171 for name, hash in c.rhodecode_repo.tags.items()[:10]:
updated setup for all newest versions...
r643 try:
changes for #56
r1171 c.repo_tags[name] = c.rhodecode_repo.get_changeset(hash)
updated setup for all newest versions...
r643 except ChangesetError:
c.repo_tags[name] = EmptyChangeset(hash)
removed shortlog from main menu, as duplicated functionality of changelog,...
r637
renamed project to rhodecode
r547 c.repo_branches = OrderedDict()
changes for #56
r1171 for name, hash in c.rhodecode_repo.branches.items()[:10]:
updated setup for all newest versions...
r643 try:
changes for #56
r1171 c.repo_branches[name] = c.rhodecode_repo.get_changeset(hash)
updated setup for all newest versions...
r643 except ChangesetError:
c.repo_branches[name] = EmptyChangeset(hash)
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())
removed shortlog from main menu, as duplicated functionality of changelog,...
r637
another major code rafactor, reimplemented (almost from scratch)...
r1038 if dbrepo.enable_statistics:
fixes #62, added option to disable statistics for each repository
r810 c.no_data_msg = _('No data loaded yet')
changes for #56
r1171 run_task(get_commits_stats, c.dbrepo.repo_name, ts_min_y, ts_max_y)
fixes #62, added option to disable statistics for each repository
r810 else:
fixes for vcs 0.2.0and new slicing methods
r1082 c.no_data_msg = _('Statistics are disabled for this repository')
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)\
another major code rafactor, reimplemented (almost from scratch)...
r1038 .filter(Statistics.repository == dbrepo)\
renamed project to rhodecode
r547 .scalar()
removed shortlog from main menu, as duplicated functionality of changelog,...
r637
added percentage of progress of gathered commit activity statistics
r1181 c.stats_percentage = 0
removed shortlog from main menu, as duplicated functionality of changelog,...
r637
renamed project to rhodecode
r547 if stats and stats.languages:
another major code rafactor, reimplemented (almost from scratch)...
r1038 c.no_data = False is dbrepo.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 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 #166, made clone-uri use the pylons build in url generators, that way it's more safe.
r1249 lang_stats = [(x, {"count": y,
"desc": LANGUAGES_EXTENSIONS_MAP.get(x)})
small fixes for git support
r1281 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
renamed project to rhodecode
r547 c.trending_languages = json.dumps(OrderedDict(
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 sorted(lang_stats, reverse=True,
extended trending languages to more entries, implemented new faster and "fancy"...
r763 key=lambda k: k[1])[:10]
renamed project to rhodecode
r547 )
)
added percentage of progress of gathered commit activity statistics
r1181 last_rev = stats.stat_on_revision
c.repo_last_rev = c.rhodecode_repo.count() - 1 \
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
removed shortlog from main menu, as duplicated functionality of changelog,...
r637
another major code rafactor, reimplemented (almost from scratch)...
r1038 c.enable_downloads = dbrepo.enable_downloads
implemented #84 downloads can be enabled/disabled per each repository from now.
r962 if c.enable_downloads:
changes for #56
r1171 c.download_options = self._get_download_links(c.rhodecode_repo)
added branch/tag options to download links in summary
r942
renamed project to rhodecode
r547 return render('summary/summary.html')
added branch/tag options to download links in summary
r942 def _get_download_links(self, repo):
download_l = []
branches_group = ([], _("Branches"))
tags_group = ([], _("Tags"))
another major codes rewrite:...
r1045 for name, chs in c.rhodecode_repo.branches.items():
added branch/tag options to download links in summary
r942 #chs = chs.split(':')[-1]
branches_group[0].append((chs, name),)
download_l.append(branches_group)
another major codes rewrite:...
r1045 for name, chs in c.rhodecode_repo.tags.items():
added branch/tag options to download links in summary
r942 #chs = chs.split(':')[-1]
tags_group[0].append((chs, name),)
download_l.append(tags_group)
return download_l