##// END OF EJS Templates
Changed OrderedDict implementation to pypy odict, in general it's the fastest and most reliable solution. Added OrderedTuple from python foundation.
Changed OrderedDict implementation to pypy odict, in general it's the fastest and most reliable solution. Added OrderedTuple from python foundation.

File last commit:

r1331:1188920a beta
r1337:37625d30 beta
Show More
changelog.py
115 lines | 3.8 KiB | text/x-python | PythonLexer
updated docs on every controller
r861 # -*- coding: utf-8 -*-
"""
rhodecode.controllers.changelog
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
changelog controller for rhodecode
fixed some limits in changesets and changelogs
r1130
updated docs on every controller
r861 :created_on: Apr 21, 2010
:author: marcink
source code cleanup: remove trailing white space, normalize file endings
r1203 :copyright: (C) 2009-2011 Marcin Kuzminski <marcin@python-works.com>
updated docs on every controller
r861 :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/>.
updated docs on every controller
r861
import logging
#37 fixed json imports for python2.5...
r592
fixes #37 python import on json
r608 try:
import json
except ImportError:
#python 2.5 compatibility
import simplejson as json
updated docs on every controller
r861
renamed project to rhodecode
r547 from mercurial.graphmod import colored, CHANGESET, revisions as graph_rev
from pylons import request, session, tmpl_context as c
updated docs on every controller
r861
renamed project to rhodecode
r547 from rhodecode.lib.auth import LoginRequired, HasRepoPermissionAnyDecorator
another major codes rewrite:...
r1045 from rhodecode.lib.base import BaseRepoController, render
Added dedicated repo pager to support reversed new way slicing method of vcs and get_changesets method
r1098 from rhodecode.lib.helpers import RepoPage
updated docs on every controller
r861
renamed project to rhodecode
r547 log = logging.getLogger(__name__)
pep8ify
r1212
another major codes rewrite:...
r1045 class ChangelogController(BaseRepoController):
Fixes for raw_id, needed for git...
r636
renamed project to rhodecode
r547 @LoginRequired()
@HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
Fixes for raw_id, needed for git...
r636 'repository.admin')
renamed project to rhodecode
r547 def __before__(self):
super(ChangelogController, self).__before__()
fixed some limits in changesets and changelogs
r1130 c.affected_files_cut_off = 60
Fixes for raw_id, needed for git...
r636
renamed project to rhodecode
r547 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
Fixes for raw_id, needed for git...
r636 int_size = int_size if int_size <= limit else limit
renamed project to rhodecode
r547 c.size = int_size
session['changelog_size'] = c.size
session.save()
else:
c.size = int(session.get('changelog_size', default))
p = int(request.params.get('page', 1))
fixed percentage indicator of build stats,added branch filter to changelog controller
r1106 branch_name = request.params.get('branch', None)
another major codes rewrite:...
r1045 c.total_cs = len(c.rhodecode_repo)
pep8ify
r1212 c.pagination = RepoPage(c.rhodecode_repo, page=p,
item_count=c.total_cs, items_per_page=c.size,
branch_name=branch_name)
Fixes for raw_id, needed for git...
r636
small fixes, and optimization for changelog graph
r1109 self._graph(c.rhodecode_repo, c.total_cs, c.size, p)
Fixes for raw_id, needed for git...
r636
renamed project to rhodecode
r547 return render('changelog/changelog.html')
small fixes, and optimization for changelog graph
r1109 def _graph(self, repo, repo_size, size, p):
DAG fixes for vcs 0.2.0
r1083 """
Generates a DAG graph for mercurial
source code cleanup: remove trailing white space, normalize file endings
r1203
DAG fixes for vcs 0.2.0
r1083 :param repo: repo instance
:param size: number of commits to show
:param p: page number
"""
small fixes for git support
r1281 if not repo.revisions:
Code refactor for auth func, preparing for ldap support...
r699 c.jsdata = json.dumps([])
return
Fixes for raw_id, needed for git...
r636
small fixes, and optimization for changelog graph
r1109 revcount = min(repo_size, size)
renamed project to rhodecode
r547 offset = 1 if p == 1 else ((p - 1) * revcount + 1)
fixed error when given page in pagination was out of range in changelog view
r1331 try:
rev_start = repo.revisions.index(repo.revisions[(-1 * offset)])
except IndexError:
rev_start = repo.revisions.index(repo.revisions[-1])
DAG fixes for vcs 0.2.0
r1083 rev_end = max(0, rev_start - revcount)
Fixes for raw_id, needed for git...
r636
fixed error when given page in pagination was out of range in changelog view
r1331
renamed project to rhodecode
r547 data = []
small fixes for git support
r1281 if repo.alias == 'git':
for _ in xrange(rev_end, rev_start):
vtx = [0, 1]
edges = [[0, 0, 1]]
data.append(['', vtx, edges])
elif repo.alias == 'hg':
dag = graph_rev(repo._repo, rev_start, rev_end)
c.dag = tree = list(colored(dag))
for (id, type, ctx, vtx, edges) in tree:
if type != CHANGESET:
continue
data.append(['', vtx, edges])
renamed project to rhodecode
r547
Fixes for raw_id, needed for git...
r636 c.jsdata = json.dumps(data)