Files
@ 50a39f923f31
Branch filter:
Location: kallithea/pylons_app/controllers/changelog.py - annotation
50a39f923f31
2.7 KiB
text/x-python
Added file annotation template. Bumped version to 0.6.8. Changelog and changeset are now cleaned with js, it's still very beta.
f191f99f59c9 f191f99f59c9 f191f99f59c9 f7218849798a f7218849798a aec4c0071cb3 f191f99f59c9 aec4c0071cb3 f191f99f59c9 aec4c0071cb3 aec4c0071cb3 f191f99f59c9 f191f99f59c9 f191f99f59c9 f7218849798a f7218849798a f191f99f59c9 f191f99f59c9 f191f99f59c9 f191f99f59c9 aec4c0071cb3 aec4c0071cb3 aec4c0071cb3 aec4c0071cb3 f191f99f59c9 f191f99f59c9 aec4c0071cb3 f191f99f59c9 f191f99f59c9 aec4c0071cb3 aec4c0071cb3 f191f99f59c9 f191f99f59c9 f191f99f59c9 f191f99f59c9 f7218849798a f191f99f59c9 f191f99f59c9 f191f99f59c9 f191f99f59c9 f191f99f59c9 f191f99f59c9 f191f99f59c9 f191f99f59c9 f191f99f59c9 f191f99f59c9 f191f99f59c9 f7218849798a f7218849798a f7218849798a f7218849798a f191f99f59c9 f7218849798a f7218849798a f7218849798a f7218849798a f7218849798a f7218849798a f191f99f59c9 f7218849798a f7218849798a f7218849798a f7218849798a f191f99f59c9 f191f99f59c9 f191f99f59c9 f7218849798a f7218849798a f7218849798a f7218849798a f7218849798a f7218849798a f7218849798a f7218849798a f7218849798a f7218849798a f7218849798a f7218849798a f191f99f59c9 f191f99f59c9 f7218849798a | from beaker.cache import cache_region
from mercurial.graphmod import revisions as graph_rev, colored, CHANGESET
from mercurial.node import short
from pylons import request, response, session, tmpl_context as c, url, config, \
app_globals as g
from pylons.controllers.util import abort, redirect
from pylons_app.lib.auth import LoginRequired
from pylons_app.lib.base import BaseController, render
from pylons_app.lib.filters import age as _age, person
from pylons_app.lib.utils import get_repo_slug
from pylons_app.model.hg_model import HgModel
from simplejson import dumps
from webhelpers.paginate import Page
import logging
@cache_region('long_term', 'full_changelog')
def _full_changelog_cached(repo_name):
hg_model = HgModel()
return list(reversed(list(hg_model.get_repo(repo_name))))
log = logging.getLogger(__name__)
class ChangelogController(BaseController):
@LoginRequired()
def __before__(self):
super(ChangelogController, self).__before__()
def index(self):
hg_model = HgModel()
if request.params.get('size'):
c.size = int(request.params['size'])
session['changelog_size'] = c.size
session.save()
else:
c.size = session.get('changelog_size', 20)
changesets = _full_changelog_cached(c.repo_name)
p = int(request.params.get('page', 1))
c.pagination = Page(changesets, page=p, item_count=len(changesets),
items_per_page=c.size)
#self._graph(c.repo, c.size,p)
return render('changelog/changelog.html')
def _graph(self, repo, size, p):
revcount = size
if not repo.revisions:return dumps([]), 0
max_rev = repo.revisions[-1]
offset = 1 if p == 1 else ((p - 1) * revcount)
rev_start = repo.revisions[(-1 * offset)]
c.bg_height = 120
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))
canvasheight = (len(tree) + 1) * c.bg_height - 27
data = []
for (id, type, ctx, vtx, edges) in tree:
if type != CHANGESET:
continue
node = short(ctx.node())
age = _age(ctx.date())
desc = ctx.description()
user = person(ctx.user())
branch = ctx.branch()
branch = branch, repo.repo.branchtags().get(branch) == ctx.node()
data.append((node, vtx, edges, desc, user, age, branch, ctx.tags()))
c.jsdata = dumps(data)
c.canvasheight = canvasheight
|