Files
@ a83a1799480c
Branch filter:
Location: kallithea/pylons_app/controllers/changelog.py - annotation
a83a1799480c
2.5 KiB
text/x-python
Reimplemented way of caching repos list, hg model now get's repos objects right from cached dict, this way we skipp creating instances of MercurialRepository and gain performance. Some import cleanup
f191f99f59c9 f191f99f59c9 a83a1799480c f191f99f59c9 a83a1799480c f191f99f59c9 a83a1799480c f191f99f59c9 f191f99f59c9 f191f99f59c9 568f95056716 aec4c0071cb3 aec4c0071cb3 f191f99f59c9 f191f99f59c9 aec4c0071cb3 f191f99f59c9 f191f99f59c9 aec4c0071cb3 7a97f0b100cd 7a97f0b100cd f191f99f59c9 a3a7c3e03b76 a3a7c3e03b76 a3a7c3e03b76 a3a7c3e03b76 a3a7c3e03b76 a3a7c3e03b76 f191f99f59c9 f191f99f59c9 f7218849798a a3a7c3e03b76 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 mercurial.graphmod import revisions as graph_rev, colored, CHANGESET
from mercurial.node import short
from pylons import request, session, tmpl_context as c
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.model.hg_model import _full_changelog_cached
from simplejson import dumps
from webhelpers.paginate import Page
import logging
log = logging.getLogger(__name__)
class ChangelogController(BaseController):
@LoginRequired()
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 = session.get('changelog_size', default)
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
|