##// END OF EJS Templates
fixed archival in rhodecode to use new functions from vcs
fixed archival in rhodecode to use new functions from vcs

File last commit:

r902:07a6e8c6 beta
r948:85ee0ea1 beta
Show More
changelog.py
106 lines | 3.3 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
from rhodecode.lib.base import BaseController, render
Refactor codes for scm model...
r691 from rhodecode.model.scm import ScmModel
updated docs on every controller
r861
renamed project to rhodecode
r547 from webhelpers.paginate import Page
updated docs on every controller
r861
renamed project to rhodecode
r547 log = logging.getLogger(__name__)
class ChangelogController(BaseController):
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))
Refactor codes for scm model...
r691 changesets = ScmModel().get_repo(c.repo_name)
Fixes for raw_id, needed for git...
r636
renamed project to rhodecode
r547 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)
Fixes for raw_id, needed for git...
r636
renamed project to rhodecode
r547 self._graph(changesets, 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):
revcount = size
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
renamed project to rhodecode
r547 max_rev = repo.revisions[-1]
Fixes for raw_id, needed for git...
r636
renamed project to rhodecode
r547 offset = 1 if p == 1 else ((p - 1) * revcount + 1)
Fixes for raw_id, needed for git...
r636
renamed project to rhodecode
r547 rev_start = repo.revisions[(-1 * offset)]
Fixes for raw_id, needed for git...
r636
renamed project to rhodecode
r547 revcount = min(max_rev, revcount)
rev_end = max(0, rev_start - revcount)
dag = graph_rev(repo.repo, rev_start, rev_end)
Fixes for raw_id, needed for git...
r636
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)