Changeset - 873fd2dc62c2
[Not reviewed]
default
0 1 0
Marcin Kuzminski - 16 years ago 2010-05-11 22:07:43
marcin@python-works.com
Added rawfile support, and few fixes for file
1 file changed with 19 insertions and 2 deletions:
0 comments (0 inline, 0 general)
pylons_app/controllers/files.py
Show inline comments
 
@@ -28,35 +28,52 @@ class FilesController(BaseController):
 
            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_node(f_path).content
 
        c.file_2 = c.changeset_2.get_node(f_path).content
 
        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)
 
        
0 comments (0 inline, 0 general)