Mercurial > kallithea
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 |