comparison rhodecode/controllers/changelog.py @ 636:ffd07396d315 beta

Fixes for raw_id, needed for git Renamed hg controller to home css html changes
author Marcin Kuzminski <marcin@python-works.com>
date Tue, 26 Oct 2010 03:20:32 +0200
parents 7e536d1af60d
children 7486da5f0628
comparison
equal deleted inserted replaced
635:fd63782c4426 636:ffd07396d315
36 from webhelpers.paginate import Page 36 from webhelpers.paginate import Page
37 import logging 37 import logging
38 log = logging.getLogger(__name__) 38 log = logging.getLogger(__name__)
39 39
40 class ChangelogController(BaseController): 40 class ChangelogController(BaseController):
41 41
42 @LoginRequired() 42 @LoginRequired()
43 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write', 43 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
44 'repository.admin') 44 'repository.admin')
45 def __before__(self): 45 def __before__(self):
46 super(ChangelogController, self).__before__() 46 super(ChangelogController, self).__before__()
47 47
48 def index(self): 48 def index(self):
49 limit = 100 49 limit = 100
50 default = 20 50 default = 20
51 if request.params.get('size'): 51 if request.params.get('size'):
52 try: 52 try:
53 int_size = int(request.params.get('size')) 53 int_size = int(request.params.get('size'))
54 except ValueError: 54 except ValueError:
55 int_size = default 55 int_size = default
56 int_size = int_size if int_size <= limit else limit 56 int_size = int_size if int_size <= limit else limit
57 c.size = int_size 57 c.size = int_size
58 session['changelog_size'] = c.size 58 session['changelog_size'] = c.size
59 session.save() 59 session.save()
60 else: 60 else:
61 c.size = int(session.get('changelog_size', default)) 61 c.size = int(session.get('changelog_size', default))
62 62
63 changesets = HgModel().get_repo(c.repo_name) 63 changesets = HgModel().get_repo(c.repo_name)
64 64
65 p = int(request.params.get('page', 1)) 65 p = int(request.params.get('page', 1))
66 c.total_cs = len(changesets) 66 c.total_cs = len(changesets)
67 c.pagination = Page(changesets, page=p, item_count=c.total_cs, 67 c.pagination = Page(changesets, page=p, item_count=c.total_cs,
68 items_per_page=c.size) 68 items_per_page=c.size)
69 69
70 self._graph(changesets, c.size, p) 70 self._graph(changesets, c.size, p)
71 71
72 return render('changelog/changelog.html') 72 return render('changelog/changelog.html')
73 73
74 74
75 def _graph(self, repo, size, p): 75 def _graph(self, repo, size, p):
76 revcount = size 76 revcount = size
77 if not repo.revisions:return json.dumps([]), 0 77 if not repo.revisions:return json.dumps([]), 0
78 78
79 max_rev = repo.revisions[-1] 79 max_rev = repo.revisions[-1]
80
80 offset = 1 if p == 1 else ((p - 1) * revcount + 1) 81 offset = 1 if p == 1 else ((p - 1) * revcount + 1)
82
81 rev_start = repo.revisions[(-1 * offset)] 83 rev_start = repo.revisions[(-1 * offset)]
82 84
83 revcount = min(max_rev, revcount) 85 revcount = min(max_rev, revcount)
84 rev_end = max(0, rev_start - revcount) 86 rev_end = max(0, rev_start - revcount)
85 dag = graph_rev(repo.repo, rev_start, rev_end) 87 dag = graph_rev(repo.repo, rev_start, rev_end)
86 88
87 c.dag = tree = list(colored(dag)) 89 c.dag = tree = list(colored(dag))
88 data = [] 90 data = []
89 for (id, type, ctx, vtx, edges) in tree: 91 for (id, type, ctx, vtx, edges) in tree:
90 if type != CHANGESET: 92 if type != CHANGESET:
91 continue 93 continue
92 data.append(('', vtx, edges)) 94 data.append(('', vtx, edges))
93
94 c.jsdata = json.dumps(data)
95 95
96 c.jsdata = json.dumps(data)
97