diff --git a/pylons_app/config/routing.py b/pylons_app/config/routing.py --- a/pylons_app/config/routing.py +++ b/pylons_app/config/routing.py @@ -29,7 +29,8 @@ def make_map(config): #ADMIN with map.submapper(path_prefix='/_admin', controller='admin') as m: m.connect('admin_home', '/', action='index')#main page - m.connect('admin_add_repo', '/add_repo/{new_repo:[a-z0-9\. _-]*}', action='add_repo') + m.connect('admin_add_repo', '/add_repo/{new_repo:[a-z0-9\. _-]*}', + action='add_repo') map.connect('changeset_home', '/{repo_name}/changeset/{revision}', @@ -50,4 +51,6 @@ def make_map(config): controller='files', action='diff', revision='tip', f_path='') map.connect('files_raw_home', '/{repo_name}/rawfile/{revision}/{f_path:.*}', controller='files', action='rawfile', revision='tip', f_path='') + map.connect('files_archive_home', '/{repo_name}/archive/{revision}/{fileformat}', + controller='files', action='archivefile', revision='tip') return map diff --git a/pylons_app/controllers/files.py b/pylons_app/controllers/files.py --- a/pylons_app/controllers/files.py +++ b/pylons_app/controllers/files.py @@ -20,21 +20,33 @@ class FilesController(BaseController): def index(self, repo_name, revision, f_path): hg_model = HgModel() c.repo = repo = hg_model.get_repo(c.repo_name) + revision = request.POST.get('at_rev', None) or revision - revision = request.POST.get('at_rev', None) or revision - if request.POST.get('view_low'): - revision = int(revision) - 1 - if request.POST.get('view_high'): - revision = int(revision) + 1 + def get_next_rev(cur): max_rev = len(c.repo.revisions) - 1 - if revision > max_rev: - revision = max_rev - + r = cur + 1 + if r > max_rev: + r = max_rev + return r + + def get_prev_rev(cur): + r = cur - 1 + return r + c.f_path = f_path - + try: - c.changeset = repo.get_changeset(repo._get_revision(revision)) + cur_rev = repo.get_changeset(revision).revision + prev_rev = repo.get_changeset(get_prev_rev(cur_rev)).raw_id + next_rev = repo.get_changeset(get_next_rev(cur_rev)).raw_id + + c.url_prev = url('files_home', repo_name=c.repo_name, + revision=prev_rev, f_path=f_path) + c.url_next = url('files_home', repo_name=c.repo_name, + revision=next_rev, f_path=f_path) + + c.changeset = repo.get_changeset(revision) try: c.file_msg = c.changeset.get_file_message(f_path) except: @@ -59,6 +71,9 @@ class FilesController(BaseController): % f_path.split('/')[-1] return file_node.content + def archivefile(self, repo_name, revision, fileformat): + return '%s %s %s' % (repo_name, revision, fileformat) + def diff(self, repo_name, f_path): hg_model = HgModel() diff1 = request.GET.get('diff1') diff --git a/pylons_app/templates/files/files_browser.html b/pylons_app/templates/files/files_browser.html --- a/pylons_app/templates/files/files_browser.html +++ b/pylons_app/templates/files/files_browser.html @@ -8,11 +8,11 @@