Files
@ d928d5f0a251
Branch filter:
Location: kallithea/pylons_app/controllers/files.py - annotation
d928d5f0a251
3.4 KiB
text/x-python
Adde raw file to routes, and refactoring
updated link to raw file at file source template
updated link to raw file at file source template
aec4c0071cb3 aec4c0071cb3 5b57295601b6 aec4c0071cb3 aec4c0071cb3 aec4c0071cb3 5b57295601b6 5b57295601b6 49c7e191c2cd 49c7e191c2cd 3f01d02c2cc6 49c7e191c2cd aec4c0071cb3 aec4c0071cb3 aec4c0071cb3 5b57295601b6 5b57295601b6 5b57295601b6 aec4c0071cb3 5b57295601b6 5b57295601b6 5b57295601b6 3f01d02c2cc6 3f01d02c2cc6 3f01d02c2cc6 3f01d02c2cc6 3f01d02c2cc6 3f01d02c2cc6 3f01d02c2cc6 3f01d02c2cc6 3f01d02c2cc6 3f01d02c2cc6 5b57295601b6 873fd2dc62c2 873fd2dc62c2 5f42d751c719 5f42d751c719 873fd2dc62c2 873fd2dc62c2 873fd2dc62c2 873fd2dc62c2 873fd2dc62c2 f7218849798a f7218849798a 5f42d751c719 5f42d751c719 873fd2dc62c2 3f01d02c2cc6 5f42d751c719 5b57295601b6 9deb6f1d5b90 9deb6f1d5b90 873fd2dc62c2 873fd2dc62c2 873fd2dc62c2 873fd2dc62c2 873fd2dc62c2 873fd2dc62c2 873fd2dc62c2 873fd2dc62c2 873fd2dc62c2 42d46deb124d 42d46deb124d 42d46deb124d 42d46deb124d 49c7e191c2cd 42d46deb124d 42d46deb124d 42d46deb124d 42d46deb124d 42d46deb124d 873fd2dc62c2 873fd2dc62c2 42d46deb124d 42d46deb124d 49c7e191c2cd 49c7e191c2cd 49c7e191c2cd ffddbd80649e 49c7e191c2cd 49c7e191c2cd 42d46deb124d 42d46deb124d 9deb6f1d5b90 9deb6f1d5b90 9deb6f1d5b90 9deb6f1d5b90 42d46deb124d 9deb6f1d5b90 9deb6f1d5b90 9deb6f1d5b90 9deb6f1d5b90 9deb6f1d5b90 | import logging
from pylons import request, response, session, tmpl_context as c, url, config, app_globals as g
from pylons.controllers.util import abort, redirect
from pylons_app.lib.base import BaseController, render
from pylons_app.lib.utils import get_repo_slug
from pylons_app.model.hg_model import HgModel
from difflib import unified_diff
from pylons_app.lib.differ import render_udiff
from vcs.exceptions import RepositoryError, ChangesetError
log = logging.getLogger(__name__)
class FilesController(BaseController):
def __before__(self):
c.repos_prefix = config['repos_name']
c.repo_name = get_repo_slug(request)
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
if request.POST.get('view_low'):
revision = int(revision) - 1
if request.POST.get('view_high'):
revision = int(revision) + 1
max_rev = len(c.repo.revisions) - 1
if revision > max_rev:
revision = max_rev
c.f_path = f_path
try:
c.changeset = repo.get_changeset(repo._get_revision(revision))
try:
c.file_msg = c.changeset.get_file_message(f_path)
except:
c.file_msg = None
c.cur_rev = c.changeset.raw_id
c.rev_nr = c.changeset.revision
c.files_list = c.changeset.get_node(f_path)
c.file_history = self._get_history(repo, c.files_list, f_path)
except (RepositoryError, ChangesetError):
c.files_list = None
return render('files/files.html')
def rawfile(self, repo_name, revision, f_path):
hg_model = HgModel()
c.repo = hg_model.get_repo(c.repo_name)
file_node = c.repo.get_changeset(revision).get_node(f_path)
response.headers['Content-type'] = file_node.mimetype
response.headers['Content-disposition'] = 'attachment; filename=%s' \
% f_path.split('/')[-1]
return file_node.content
def diff(self, repo_name, f_path):
hg_model = HgModel()
diff1 = request.GET.get('diff1')
diff2 = request.GET.get('diff2')
c.no_changes = diff1 == diff2
c.f_path = f_path
c.repo = hg_model.get_repo(c.repo_name)
c.changeset_1 = c.repo.get_changeset(diff1)
c.changeset_2 = c.repo.get_changeset(diff2)
c.file_1 = c.changeset_1.get_file_content(f_path)
c.file_2 = c.changeset_2.get_file_content(f_path)
c.diff1 = 'r%s:%s' % (c.changeset_1.revision, c.changeset_1._short)
c.diff2 = 'r%s:%s' % (c.changeset_2.revision, c.changeset_2._short)
d2 = unified_diff(c.file_1.splitlines(1), c.file_2.splitlines(1))
c.diff_files = render_udiff(udiff=d2)
if len(c.diff_files) < 1:
c.no_changes = True
return render('files/file_diff.html')
def _get_history(self, repo, node, f_path):
from vcs.nodes import NodeKind
if not node.kind is NodeKind.FILE:
return []
changesets = node.history
hist_l = []
for chs in changesets:
n_desc = 'r%s:%s' % (chs.revision, chs._short)
hist_l.append((chs._short, n_desc,))
return hist_l
|