comparison pylons_app/controllers/files.py @ 145:3f01d02c2cc6

fixed error when browsing revisions on path that doesn't exist. Fixed files browsing. Fixed templates in branches and tags
author Marcin Kuzminski <marcin@python-works.com>
date Mon, 10 May 2010 23:12:45 +0200
parents f7218849798a
children 873fd2dc62c2
comparison
equal deleted inserted replaced
144:ea89ac73bef8 145:3f01d02c2cc6
6 from pylons_app.lib.base import BaseController, render 6 from pylons_app.lib.base import BaseController, render
7 from pylons_app.lib.utils import get_repo_slug 7 from pylons_app.lib.utils import get_repo_slug
8 from pylons_app.model.hg_model import HgModel 8 from pylons_app.model.hg_model import HgModel
9 from difflib import unified_diff 9 from difflib import unified_diff
10 from pylons_app.lib.differ import render_udiff 10 from pylons_app.lib.differ import render_udiff
11 from vcs.exceptions import RepositoryError 11 from vcs.exceptions import RepositoryError, ChangesetError
12 12
13 log = logging.getLogger(__name__) 13 log = logging.getLogger(__name__)
14 14
15 class FilesController(BaseController): 15 class FilesController(BaseController):
16 def __before__(self): 16 def __before__(self):
17 c.repos_prefix = config['repos_name'] 17 c.repos_prefix = config['repos_name']
18 c.repo_name = get_repo_slug(request) 18 c.repo_name = get_repo_slug(request)
19 19
20 def index(self, repo_name, revision, f_path): 20 def index(self, repo_name, revision, f_path):
21 revision = request.POST.get('at_rev', None) or revision
22 hg_model = HgModel() 21 hg_model = HgModel()
23 c.repo = repo = hg_model.get_repo(c.repo_name) 22 c.repo = repo = hg_model.get_repo(c.repo_name)
23
24 revision = request.POST.get('at_rev', None) or revision
25 if request.POST.get('view_low'):
26 revision = int(revision) - 1
27 if request.POST.get('view_high'):
28 revision = int(revision) + 1
29 max_rev = len(c.repo.revisions) - 1
30 if revision > max_rev:
31 revision = max_rev
32
24 c.f_path = f_path 33 c.f_path = f_path
25 try: 34 try:
26 c.changeset = repo.get_changeset(repo._get_revision(revision)) 35 c.changeset = repo.get_changeset(repo._get_revision(revision))
27 c.cur_rev = c.changeset.raw_id 36 c.cur_rev = c.changeset.raw_id
28 c.rev_nr = c.changeset.revision 37 c.rev_nr = c.changeset.revision
29 c.files_list = c.changeset.get_node(f_path) 38 c.files_list = c.changeset.get_node(f_path)
30 c.file_history = self._get_history(repo, c.files_list, f_path) 39 c.file_history = self._get_history(repo, c.files_list, f_path)
31 except RepositoryError: 40 except (RepositoryError, ChangesetError):
32 c.files_list = None 41 c.files_list = None
33 42
34 return render('files/files.html') 43 return render('files/files.html')
35 44
36 def diff(self, repo_name, f_path): 45 def diff(self, repo_name, f_path):