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