Mercurial > kallithea
comparison pylons_app/controllers/changelog.py @ 288:ab1afe7444f3
Initial graph release.
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Wed, 23 Jun 2010 00:18:10 +0200 |
parents | 237470e64bb8 |
children | a61b19036de0 |
comparison
equal
deleted
inserted
replaced
287:5827c739b0bd | 288:ab1afe7444f3 |
---|---|
1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
2 # encoding: utf-8 | 2 # encoding: utf-8 |
3 # changelog controller for pylons | 3 # changelog controller for pylons |
4 # Copyright (C) 2009-2010 Marcin Kuzminski <marcin@python-works.com> | 4 # Copyright (C) 2009-2010 Marcin Kuzminski <marcin@python-works.com> |
5 from json import dumps | |
6 from mercurial.graphmod import colored, CHANGESET | |
7 from mercurial.node import short | |
8 from mercurial.templatefilters import person | |
9 from pylons import request, session, tmpl_context as c | |
10 from pylons_app.lib.auth import LoginRequired | |
11 from pylons_app.lib.base import BaseController, render | |
12 from pylons_app.model.hg_model import HgModel | |
13 from webhelpers.paginate import Page | |
14 import logging | |
15 from mercurial.graphmod import revisions as graph_rev | |
5 | 16 |
6 # This program is free software; you can redistribute it and/or | 17 # This program is free software; you can redistribute it and/or |
7 # modify it under the terms of the GNU General Public License | 18 # modify it under the terms of the GNU General Public License |
8 # as published by the Free Software Foundation; version 2 | 19 # as published by the Free Software Foundation; version 2 |
9 # of the License or (at your opinion) any later version of the license. | 20 # of the License or (at your opinion) any later version of the license. |
20 """ | 31 """ |
21 Created on April 21, 2010 | 32 Created on April 21, 2010 |
22 changelog controller for pylons | 33 changelog controller for pylons |
23 @author: marcink | 34 @author: marcink |
24 """ | 35 """ |
25 from pylons import request, session, tmpl_context as c | |
26 from pylons_app.lib.auth import LoginRequired | |
27 from pylons_app.lib.base import BaseController, render | |
28 from pylons_app.model.hg_model import HgModel | |
29 from webhelpers.paginate import Page | |
30 import logging | |
31 log = logging.getLogger(__name__) | 36 log = logging.getLogger(__name__) |
32 | 37 |
33 class ChangelogController(BaseController): | 38 class ChangelogController(BaseController): |
34 | 39 |
35 @LoginRequired() | 40 @LoginRequired() |
56 p = int(request.params.get('page', 1)) | 61 p = int(request.params.get('page', 1)) |
57 c.total_cs = len(changesets) | 62 c.total_cs = len(changesets) |
58 c.pagination = Page(changesets, page=p, item_count=c.total_cs, | 63 c.pagination = Page(changesets, page=p, item_count=c.total_cs, |
59 items_per_page=c.size) | 64 items_per_page=c.size) |
60 | 65 |
61 #self._graph(c.repo, c.size,p) | 66 self._graph(changesets, c.size, p) |
62 | 67 |
63 return render('changelog/changelog.html') | 68 return render('changelog/changelog.html') |
64 | 69 |
65 | 70 |
66 def _graph(self, repo, size, p): | 71 def _graph(self, repo, size, p): |
67 pass | 72 revcount = size |
68 # revcount = size | 73 if not repo.revisions:return dumps([]), 0 |
69 # if not repo.revisions:return dumps([]), 0 | 74 |
70 # | 75 max_rev = repo.revisions[-1] |
71 # max_rev = repo.revisions[-1] | 76 offset = 1 if p == 1 else ((p - 1) * revcount) |
72 # offset = 1 if p == 1 else ((p - 1) * revcount) | 77 rev_start = repo.revisions[(-1 * offset)] |
73 # rev_start = repo.revisions[(-1 * offset)] | 78 |
74 # c.bg_height = 120 | 79 revcount = min(max_rev, revcount) |
75 # | 80 rev_end = max(0, rev_start - revcount) |
76 # revcount = min(max_rev, revcount) | 81 dag = graph_rev(repo.repo, rev_start, rev_end) |
77 # rev_end = max(0, rev_start - revcount) | 82 |
78 # dag = graph_rev(repo.repo, rev_start, rev_end) | 83 c.dag = tree = list(colored(dag)) |
79 # | 84 data = [] |
80 # c.dag = tree = list(colored(dag)) | 85 for (id, type, ctx, vtx, edges) in tree: |
81 # canvasheight = (len(tree) + 1) * c.bg_height - 27 | 86 if type != CHANGESET: |
82 # data = [] | 87 continue |
83 # for (id, type, ctx, vtx, edges) in tree: | 88 node = short(ctx.node()) |
84 # if type != CHANGESET: | 89 age = ctx.date() |
85 # continue | 90 desc = ctx.description() |
86 # node = short(ctx.node()) | 91 user = person(ctx.user()) |
87 # age = _age(ctx.date()) | 92 branch = ctx.branch() |
88 # desc = ctx.description() | 93 branch = branch, repo.repo.branchtags().get(branch) == ctx.node() |
89 # user = person(ctx.user()) | 94 data.append((node, vtx, edges, desc, user, age, branch, ctx.tags())) |
90 # branch = ctx.branch() | 95 |
91 # branch = branch, repo.repo.branchtags().get(branch) == ctx.node() | 96 c.jsdata = dumps(data) |
92 # data.append((node, vtx, edges, desc, user, age, branch, ctx.tags())) | |
93 # | |
94 # c.jsdata = dumps(data) | |
95 # c.canvasheight = canvasheight | |
96 | 97 |