##// END OF EJS Templates
replaced all decode('utf-8') instances with .decode('utf-8','replace') for more error prof setup,...
replaced all decode('utf-8') instances with .decode('utf-8','replace') for more error prof setup, this way rhodecode could handle displaying non utf8 encoded file paths. This is still an invalid path, but this way we could at least show those paths without errors

File last commit:

r1098:91ddd4db beta
r1100:e7d7f052 beta
Show More
changelog.py
104 lines | 3.4 KiB | text/x-python | PythonLexer
updated docs on every controller
r861 # -*- coding: utf-8 -*-
"""
rhodecode.controllers.changelog
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
changelog controller for rhodecode
:created_on: Apr 21, 2010
:author: marcink
fixed copyright year to 2011
r902 :copyright: (C) 2009-2011 Marcin Kuzminski <marcin@python-works.com>
updated docs on every controller
r861 :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.
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__)
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__()
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))
another major codes rewrite:...
r1045 c.total_cs = len(c.rhodecode_repo)
Added dedicated repo pager to support reversed new way slicing method of vcs and get_changesets method
r1098 c.pagination = RepoPage(c.rhodecode_repo, page=p, item_count=c.total_cs,
renamed project to rhodecode
r547 items_per_page=c.size)
Fixes for raw_id, needed for git...
r636
another major codes rewrite:...
r1045 self._graph(c.rhodecode_repo, c.size, p)
Fixes for raw_id, needed for git...
r636
renamed project to rhodecode
r547 return render('changelog/changelog.html')
def _graph(self, repo, size, p):
DAG fixes for vcs 0.2.0
r1083 """
Generates a DAG graph for mercurial
:param repo: repo instance
:param size: number of commits to show
:param p: page number
"""
Code refactor for auth func, preparing for ldap support...
r699 if not repo.revisions or repo.alias == 'git':
c.jsdata = json.dumps([])
return
Fixes for raw_id, needed for git...
r636
DAG fixes for vcs 0.2.0
r1083 revcount = min(repo.size, size)
renamed project to rhodecode
r547 offset = 1 if p == 1 else ((p - 1) * revcount + 1)
DAG fixes for vcs 0.2.0
r1083 rev_start = repo.revisions.index(repo.revisions[(-1 * offset)])
rev_end = max(0, rev_start - revcount)
Fixes for raw_id, needed for git...
r636
fixes for issue #104, code rewrites for vcs 0.2
r951 dag = graph_rev(repo._repo, rev_start, rev_end)
renamed project to rhodecode
r547 c.dag = tree = list(colored(dag))
data = []
for (id, type, ctx, vtx, edges) in tree:
if type != CHANGESET:
continue
data.append(('', vtx, edges))
Fixes for raw_id, needed for git...
r636 c.jsdata = json.dumps(data)