Files
@ 0dc8d578ff49
Branch filter:
Location: kallithea/rhodecode/controllers/changelog.py - annotation
0dc8d578ff49
3.2 KiB
text/x-python
merges for stable
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 | fd2ea6ceadc8 fd2ea6ceadc8 fd2ea6ceadc8 fd2ea6ceadc8 fd2ea6ceadc8 fd2ea6ceadc8 fd2ea6ceadc8 fd2ea6ceadc8 fd2ea6ceadc8 fd2ea6ceadc8 fd2ea6ceadc8 fd2ea6ceadc8 a3b2b4b4e440 a3b2b4b4e440 a3b2b4b4e440 a3b2b4b4e440 a3b2b4b4e440 1e757ac98988 1e757ac98988 1e757ac98988 1e757ac98988 a3b2b4b4e440 1e757ac98988 a3b2b4b4e440 fd2ea6ceadc8 fd2ea6ceadc8 0a48c1ec04fc 101e07f82f22 101e07f82f22 101e07f82f22 101e07f82f22 101e07f82f22 fd2ea6ceadc8 1e757ac98988 1e757ac98988 fd2ea6ceadc8 1e757ac98988 1e757ac98988 7486da5f0628 fd2ea6ceadc8 1e757ac98988 fd2ea6ceadc8 1e757ac98988 1e757ac98988 1e757ac98988 ffd07396d315 1e757ac98988 1e757ac98988 ffd07396d315 1e757ac98988 1e757ac98988 ffd07396d315 1e757ac98988 1e757ac98988 1e757ac98988 1e757ac98988 1e757ac98988 1e757ac98988 1e757ac98988 1e757ac98988 ffd07396d315 1e757ac98988 1e757ac98988 1e757ac98988 1e757ac98988 1e757ac98988 1e757ac98988 7486da5f0628 ffd07396d315 1e757ac98988 1e757ac98988 1e757ac98988 1e757ac98988 ffd07396d315 1e757ac98988 ffd07396d315 1e757ac98988 1e757ac98988 1e757ac98988 1e757ac98988 1e757ac98988 52da7cba88a6 52da7cba88a6 52da7cba88a6 ffd07396d315 1e757ac98988 ffd07396d315 1e757ac98988 ffd07396d315 1e757ac98988 ffd07396d315 1e757ac98988 1e757ac98988 1e757ac98988 ffd07396d315 1e757ac98988 1e757ac98988 1e757ac98988 1e757ac98988 1e757ac98988 1e757ac98988 1e757ac98988 ffd07396d315 ffd07396d315 | # -*- coding: utf-8 -*-
"""
rhodecode.controllers.changelog
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
changelog controller for rhodecode
:created_on: Apr 21, 2010
:author: marcink
:copyright: (C) 2009-2010 Marcin Kuzminski <marcin@python-works.com>
:license: GPLv3, see COPYING for more details.
"""
# 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.
#
# 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, see <http://www.gnu.org/licenses/>.
import logging
try:
import json
except ImportError:
#python 2.5 compatibility
import simplejson as json
from mercurial.graphmod import colored, CHANGESET, revisions as graph_rev
from pylons import request, session, tmpl_context as c
from rhodecode.lib.auth import LoginRequired, HasRepoPermissionAnyDecorator
from rhodecode.lib.base import BaseController, render
from rhodecode.model.scm import ScmModel
from webhelpers.paginate import Page
log = logging.getLogger(__name__)
class ChangelogController(BaseController):
@LoginRequired()
@HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
'repository.admin')
def __before__(self):
super(ChangelogController, self).__before__()
def index(self):
limit = 100
default = 20
if request.params.get('size'):
try:
int_size = int(request.params.get('size'))
except ValueError:
int_size = default
int_size = int_size if int_size <= limit else limit
c.size = int_size
session['changelog_size'] = c.size
session.save()
else:
c.size = int(session.get('changelog_size', default))
changesets = ScmModel().get_repo(c.repo_name)
p = int(request.params.get('page', 1))
c.total_cs = len(changesets)
c.pagination = Page(changesets, page=p, item_count=c.total_cs,
items_per_page=c.size)
self._graph(changesets, c.size, p)
return render('changelog/changelog.html')
def _graph(self, repo, size, p):
revcount = size
if not repo.revisions or repo.alias == 'git':
c.jsdata = json.dumps([])
return
max_rev = repo.revisions[-1]
offset = 1 if p == 1 else ((p - 1) * revcount + 1)
rev_start = repo.revisions[(-1 * offset)]
revcount = min(max_rev, revcount)
rev_end = max(0, rev_start - revcount)
dag = graph_rev(repo.repo, rev_start, rev_end)
c.dag = tree = list(colored(dag))
data = []
for (id, type, ctx, vtx, edges) in tree:
if type != CHANGESET:
continue
data.append(('', vtx, edges))
c.jsdata = json.dumps(data)
|