changeset 1130:1cecc7db3106 beta

fixed some limits in changesets and changelogs
author Marcin Kuzminski <marcin@python-works.com>
date Sun, 13 Mar 2011 13:38:07 +0100
parents fe7fa9942015
children 461f5acc7bbb
files rhodecode/controllers/changelog.py rhodecode/controllers/changeset.py rhodecode/templates/changelog/changelog.html rhodecode/templates/changeset/changeset.html
diffstat 4 files changed, 50 insertions(+), 30 deletions(-) [+]
line wrap: on
line diff
--- a/rhodecode/controllers/changelog.py	Sun Mar 13 11:34:57 2011 +0100
+++ b/rhodecode/controllers/changelog.py	Sun Mar 13 13:38:07 2011 +0100
@@ -4,7 +4,7 @@
     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
     changelog controller for rhodecode
-    
+
     :created_on: Apr 21, 2010
     :author: marcink
     :copyright: (C) 2009-2011 Marcin Kuzminski <marcin@python-works.com>    
@@ -49,6 +49,7 @@
                                    'repository.admin')
     def __before__(self):
         super(ChangelogController, self).__before__()
+        c.affected_files_cut_off = 60
 
     def index(self):
         limit = 100
--- a/rhodecode/controllers/changeset.py	Sun Mar 13 11:34:57 2011 +0100
+++ b/rhodecode/controllers/changeset.py	Sun Mar 13 13:38:07 2011 +0100
@@ -52,6 +52,7 @@
                                    'repository.admin')
     def __before__(self):
         super(ChangesetController, self).__before__()
+        c.affected_files_cut_off = 60
 
     def index(self, revision):
 
@@ -66,7 +67,7 @@
 
         #get ranges of revisions if preset
         rev_range = revision.split('...')[:2]
-        range_limit = 50
+
         try:
             if len(rev_range) == 2:
                 rev_start = rev_range[0]
@@ -86,7 +87,7 @@
         c.changes = OrderedDict()
         c.sum_added = 0
         c.sum_removed = 0
-
+        c.cut_off = False
 
         for changeset in c.cs_ranges:
             c.changes[changeset.raw_id] = []
@@ -112,6 +113,8 @@
                     else:
                         diff = wrap_to_table(_('Changeset is to big and was cut'
                                             ' off, see raw changeset instead'))
+                        c.cut_off = True
+                        break
 
                 cs1 = None
                 cs2 = node.last_changeset.raw_id
@@ -120,35 +123,38 @@
             #==================================================================
             # CHANGED FILES
             #==================================================================
-            for node in changeset.changed:
-                try:
-                    filenode_old = changeset_parent.get_node(node.path)
-                except ChangesetError:
-                    filenode_old = FileNode(node.path, '', EmptyChangeset())
+            if not c.cut_off:
+                for node in changeset.changed:
+                    try:
+                        filenode_old = changeset_parent.get_node(node.path)
+                    except ChangesetError:
+                        filenode_old = FileNode(node.path, '', EmptyChangeset())
 
-                if filenode_old.is_binary or node.is_binary:
-                    diff = wrap_to_table(_('binary file'))
-                else:
+                    if filenode_old.is_binary or node.is_binary:
+                        diff = wrap_to_table(_('binary file'))
+                    else:
 
-                    if c.sum_removed < self.cut_off_limit:
-                        f_gitdiff = differ.get_gitdiff(filenode_old, node)
-                        diff = differ.DiffProcessor(f_gitdiff, format='gitdiff').as_html()
-                        if diff:
-                            c.sum_removed += len(diff)
-                    else:
-                        diff = wrap_to_table(_('Changeset is to big and was cut'
-                                            ' off, see raw changeset instead'))
+                        if c.sum_removed < self.cut_off_limit:
+                            f_gitdiff = differ.get_gitdiff(filenode_old, node)
+                            diff = differ.DiffProcessor(f_gitdiff, format='gitdiff').as_html()
+                            if diff:
+                                c.sum_removed += len(diff)
+                        else:
+                            diff = wrap_to_table(_('Changeset is to big and was cut'
+                                                ' off, see raw changeset instead'))
+                            c.cut_off = True
+                            break
 
-
-                cs1 = filenode_old.last_changeset.raw_id
-                cs2 = node.last_changeset.raw_id
-                c.changes[changeset.raw_id].append(('changed', node, diff, cs1, cs2))
+                    cs1 = filenode_old.last_changeset.raw_id
+                    cs2 = node.last_changeset.raw_id
+                    c.changes[changeset.raw_id].append(('changed', node, diff, cs1, cs2))
 
             #==================================================================
             # REMOVED FILES    
             #==================================================================
-            for node in changeset.removed:
-                c.changes[changeset.raw_id].append(('removed', node, None, None, None))
+            if not c.cut_off:
+                for node in changeset.removed:
+                    c.changes[changeset.raw_id].append(('removed', node, None, None, None))
 
         if len(c.cs_ranges) == 1:
             c.changeset = c.cs_ranges[0]
@@ -180,7 +186,7 @@
                     diff = _('binary file') + '\n'
                 else:
                     f_gitdiff = differ.get_gitdiff(filenode_old, node)
-                    diff = differ.DiffProcessor(f_gitdiff).raw_diff()
+                    diff = differ.DiffProcessor(f_gitdiff, format='gitdiff').raw_diff()
 
                 cs1 = None
                 cs2 = node.last_changeset.raw_id
@@ -192,7 +198,7 @@
                     diff = _('binary file')
                 else:
                     f_gitdiff = differ.get_gitdiff(filenode_old, node)
-                    diff = differ.DiffProcessor(f_gitdiff).raw_diff()
+                    diff = differ.DiffProcessor(f_gitdiff, format='gitdiff').raw_diff()
 
                 cs1 = filenode_old.last_changeset.raw_id
                 cs2 = node.last_changeset.raw_id
--- a/rhodecode/templates/changelog/changelog.html	Sun Mar 13 11:34:57 2011 +0100
+++ b/rhodecode/templates/changelog/changelog.html	Sun Mar 13 13:38:07 2011 +0100
@@ -62,12 +62,14 @@
 						</div>	
 						<div class="right">
 									<div class="changes">
-									   % if len(cs.affected_files) <= 30:								
+									   % if len(cs.affected_files) <= c.affected_files_cut_off:						
 										<span class="removed tooltip" title="<b>${_('removed')}</b>${h.changed_tooltip(cs.removed)}">${len(cs.removed)}</span>
 										<span class="changed tooltip" title="<b>${_('changed')}</b>${h.changed_tooltip(cs.changed)}">${len(cs.changed)}</span>
 										<span class="added tooltip" title="<b>${_('added')}</b>${h.changed_tooltip(cs.added)}">${len(cs.added)}</span>
 									   % else:
-									     <span class="large tooltip" title="${_('affected %s files') % len(cs.affected_files)}">${len(cs.affected_files)}</span>
+				                         <span class="removed tooltip" title="${_('affected %s files') % len(cs.affected_files)}">!</span>
+				                         <span class="changed tooltip" title="${_('affected %s files') % len(cs.affected_files)}">!</span>
+				                         <span class="added tooltip"   title="${_('affected %s files') % len(cs.affected_files)}">!</span>  									   
 									   % endif
 									</div>					
 										%if len(cs.parents)>1:
--- a/rhodecode/templates/changeset/changeset.html	Sun Mar 13 11:34:57 2011 +0100
+++ b/rhodecode/templates/changeset/changeset.html	Sun Mar 13 13:38:07 2011 +0100
@@ -1,3 +1,5 @@
+## -*- coding: utf-8 -*-
+
 <%inherit file="/base/base.html"/>
 
 <%def name="title()">
@@ -49,9 +51,15 @@
 	             </div>
 	             <div class="right">
 		             <div class="changes">
+                        % if len(c.changeset.affected_files) <= c.affected_files_cut_off:	             
 		                 <span class="removed" title="${_('removed')}">${len(c.changeset.removed)}</span>
 		                 <span class="changed" title="${_('changed')}">${len(c.changeset.changed)}</span>
 		                 <span class="added" title="${_('added')}">${len(c.changeset.added)}</span>
+	                    % else:
+                         <span class="removed" title="${_('affected %s files') % len(c.changeset.affected_files)}">!</span>
+                         <span class="changed" title="${_('affected %s files') % len(c.changeset.affected_files)}">!</span>
+                         <span class="added"   title="${_('affected %s files') % len(c.changeset.affected_files)}">!</span>	                    
+	                    % endif		                 
 		             </div>                  
 		                 %if len(c.changeset.parents)>1:
 		                 <div class="merge">
@@ -78,11 +86,14 @@
 		         </span>                                                                 
 	                </div>              
 	        </div>
-	        <span style="font-size:1.1em;font-weight: bold">${_('Files affected')}</span>
+	        <span style="font-size:1.1em;font-weight: bold">${_('Files affected (%s)' % len(c.changeset.affected_files))}</span>
 	        <div class="cs_files">
 	                %for change,filenode,diff,cs1,cs2 in c.changes:
 	                    <div class="cs_${change}">${h.link_to(filenode.path.decode('utf-8','replace'),h.url.current(anchor=h.repo_name_slug('C%s' % filenode.path.decode('utf-8','replace'))))}</div>
 	                %endfor
+	                % if c.cut_off:
+	                  ${_('Changeset was to big and was cut off...')}
+	                % endif
 	        </div>         
 	    </div>