##// END OF EJS Templates
extended admin rescan to show what repositories was added and what removed...
extended admin rescan to show what repositories was added and what removed fixed found bugs, added expunge to cached getter since it introduce some more problems. Added some relationship to properly clean related objects from database.

File last commit:

r1038:5554aa9c beta
r1039:51b70569 beta
Show More
summary.py
171 lines | 6.0 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
fixed message about disabled stats, template fixes for summary page
r820
extended trending languages to more entries, implemented new faster and "fancy"...
r763 :created_on: Apr 18, 2010
:author: marcink
fixed copyright year to 2011
r902 :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.
"""
renamed project to rhodecode
r547 # 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; version 2
# of the License or (at your opinion) any later version of the license.
#
# 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.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
# MA 02110-1301, USA.
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 _
from rhodecode.model.scm import ScmModel
from rhodecode.model.db import Statistics
renamed project to rhodecode
r547 from rhodecode.lib.auth import LoginRequired, HasRepoPermissionAnyDecorator
from rhodecode.lib.base import BaseController, render
updated setup for all newest versions...
r643 from rhodecode.lib.utils import OrderedDict, EmptyChangeset
fixes #62, added option to disable statistics for each repository
r810
renamed project to rhodecode
r547 from rhodecode.lib.celerylib import run_task
from rhodecode.lib.celerylib.tasks import get_commits_stats
fixes #62, added option to disable statistics for each repository
r810
from webhelpers.paginate import Page
#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__)
class SummaryController(BaseController):
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
renamed project to rhodecode
r547 def index(self):
implemented user dashboards, and following system.
r734 scm_model = ScmModel()
another major code rafactor, reimplemented (almost from scratch)...
r1038 c.repo, dbrepo = scm_model.get(c.repo_name)
c.dbrepo = dbrepo
implemented user dashboards, and following system.
r734 c.following = scm_model.is_following_repo(c.repo_name,
c.rhodecode_user.user_id)
removed shortlog from main menu, as duplicated functionality of changelog,...
r637 def url_generator(**kw):
return url('shortlog_home', repo_name=c.repo_name, **kw)
another major code rafactor, reimplemented (almost from scratch)...
r1038 c.repo_changesets = Page(c.repo, page=1, items_per_page=10,
removed shortlog from main menu, as duplicated functionality of changelog,...
r637 url=url_generator)
renamed project to rhodecode
r547 e = request.environ
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:
Rewrite simehg for enabling cloning with raw url for anonymous access + some optimizations for making less queries when authenticating users....
r910 username = str(c.rhodecode_user.username)
fixed wrong clone url for anonymous access
r936 password = '@'
#49 Enabled anonymous access push and pull commands
r674
fixed wrong clone url for anonymous access
r936 uri = u'%(protocol)s://%(user)s%(password)s%(host)s%(prefix)s/%(repo_name)s' % {
renamed project to rhodecode
r547 'protocol': e.get('wsgi.url_scheme'),
Rewrite simehg for enabling cloning with raw url for anonymous access + some optimizations for making less queries when authenticating users....
r910 'user':username,
#49 Enabled anonymous access push and pull commands
r674 'password':password,
renamed project to rhodecode
r547 'host':e.get('HTTP_HOST'),
'prefix':e.get('SCRIPT_NAME'),
'repo_name':c.repo_name, }
c.clone_repo_url = uri
c.repo_tags = OrderedDict()
another major code rafactor, reimplemented (almost from scratch)...
r1038 for name, hash in c.repo.tags.items()[:10]:
updated setup for all newest versions...
r643 try:
another major code rafactor, reimplemented (almost from scratch)...
r1038 c.repo_tags[name] = c.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()
another major code rafactor, reimplemented (almost from scratch)...
r1038 for name, hash in c.repo.branches.items()[:10]:
updated setup for all newest versions...
r643 try:
another major code rafactor, reimplemented (almost from scratch)...
r1038 c.repo_branches[name] = c.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')
another major code rafactor, reimplemented (almost from scratch)...
r1038 run_task(get_commits_stats, c.repo.name, ts_min_y, ts_max_y)
fixes #62, added option to disable statistics for each repository
r810 else:
fixed message about disabled stats, template fixes for summary page
r820 c.no_data_msg = _('Statistics update 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
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
renamed project to rhodecode
r547 lang_stats = json.loads(stats.languages)
c.commit_data = stats.commit_activity
c.overview_data = stats.commit_activity_combined
c.trending_languages = json.dumps(OrderedDict(
sorted(lang_stats.items(), 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 )
)
else:
c.commit_data = json.dumps({})
small fixes for summary graph, added message about no data for the graph, when empty
r800 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:
another major code rafactor, reimplemented (almost from scratch)...
r1038 c.download_options = self._get_download_links(c.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"))
for name, chs in c.repository_branches.items():
#chs = chs.split(':')[-1]
branches_group[0].append((chs, name),)
download_l.append(branches_group)
for name, chs in c.repository_tags.items():
#chs = chs.split(':')[-1]
tags_group[0].append((chs, name),)
download_l.append(tags_group)
return download_l