changeset 2161:e8c016815ab9 beta

added hidden fulldiff GET param for disabling big diff cut off limit. fixed context toggle options on single file diff
author Marcin Kuzminski <marcin@python-works.com>
date Fri, 23 Mar 2012 23:52:12 +0200
parents 3754ee8ab3ad
children 04d3fae0e4c0
files rhodecode/controllers/changeset.py rhodecode/model/db.py rhodecode/templates/changeset/changeset.html rhodecode/templates/changeset/diff_block.html
diffstat 4 files changed, 31 insertions(+), 23 deletions(-) [+]
line wrap: on
line diff
--- a/rhodecode/controllers/changeset.py	Fri Mar 23 21:36:36 2012 +0200
+++ b/rhodecode/controllers/changeset.py	Fri Mar 23 23:52:12 2012 +0200
@@ -51,13 +51,18 @@
 log = logging.getLogger(__name__)
 
 
-def anchor_url(revision, path):
+def _update_with_GET(params, GET):
+    for k in ['diff1', 'diff2', 'diff']:
+        params[k] += GET.getall(k)
+
+
+def anchor_url(revision, path, GET):
     fid = h.FID(revision, path)
-    return h.url.current(anchor=fid, **dict(request.GET))
+    return h.url.current(anchor=fid, **dict(GET))
 
 
 def get_ignore_ws(fid, GET):
-    ig_ws_global = request.GET.get('ignorews')
+    ig_ws_global = GET.get('ignorews')
     ig_ws = filter(lambda k: k.startswith('WS'), GET.getall(fid))
     if ig_ws:
         try:
@@ -67,12 +72,13 @@
     return ig_ws_global
 
 
-def _ignorews_url(fileid=None):
-    fileid = str(fileid)
+def _ignorews_url(GET, fileid=None):
+    fileid = str(fileid) if fileid else None
     params = defaultdict(list)
+    _update_with_GET(params, GET)
     lbl = _('show white space')
-    ig_ws = get_ignore_ws(fileid, request.GET)
-    ln_ctx = get_line_ctx(fileid, request.GET)
+    ig_ws = get_ignore_ws(fileid, GET)
+    ln_ctx = get_line_ctx(fileid, GET)
     # global option
     if fileid is None:
         if ig_ws is None:
@@ -98,7 +104,7 @@
 
 
 def get_line_ctx(fid, GET):
-    ln_ctx_global = request.GET.get('context')
+    ln_ctx_global = GET.get('context')
     ln_ctx = filter(lambda k: k.startswith('C'), GET.getall(fid))
 
     if ln_ctx:
@@ -112,17 +118,19 @@
         return
 
 
-def _context_url(fileid=None):
+def _context_url(GET, fileid=None):
     """
     Generates url for context lines
 
     :param fileid:
     """
-    fileid = str(fileid)
-    ig_ws = get_ignore_ws(fileid, request.GET)
-    ln_ctx = (get_line_ctx(fileid, request.GET) or 3) * 2
+
+    fileid = str(fileid) if fileid else None
+    ig_ws = get_ignore_ws(fileid, GET)
+    ln_ctx = (get_line_ctx(fileid, GET) or 3) * 2
 
     params = defaultdict(list)
+    _update_with_GET(params, GET)
 
     # global option
     if fileid is None:
@@ -163,7 +171,7 @@
         c.anchor_url = anchor_url
         c.ignorews_url = _ignorews_url
         c.context_url = _context_url
-
+        limit_off = request.GET.get('fulldiff')
         #get ranges of revisions if preset
         rev_range = revision.split('...')[:2]
         enable_comments = True
@@ -221,7 +229,7 @@
                 ign_whitespace_lcl = get_ignore_ws(fid, request.GET)
                 lim = self.cut_off_limit
                 if cumulative_diff > self.cut_off_limit:
-                    lim = -1
+                    lim = -1 if limit_off is None else None
                 size, cs1, cs2, diff, st = wrapped_diff(
                     filenode_old=None,
                     filenode_new=node,
@@ -252,7 +260,7 @@
                 ign_whitespace_lcl = get_ignore_ws(fid, request.GET)
                 lim = self.cut_off_limit
                 if cumulative_diff > self.cut_off_limit:
-                    lim = -1
+                    lim = -1 if limit_off is None else None
                 size, cs1, cs2, diff, st = wrapped_diff(
                     filenode_old=filenode_old,
                     filenode_new=node,
--- a/rhodecode/model/db.py	Fri Mar 23 21:36:36 2012 +0200
+++ b/rhodecode/model/db.py	Fri Mar 23 23:52:12 2012 +0200
@@ -145,7 +145,7 @@
     def delete(cls, id_):
         obj = cls.query().get(id_)
         Session.delete(obj)
-    
+
     def __repr__(self):
         if hasattr(self, '__unicode__'):
             # python repr needs to return str
@@ -518,7 +518,7 @@
     logs = relationship('UserLog')
 
     def __unicode__(self):
-        return u"<%s('%s:%s')>" % (self.__class__.__name__,self.repo_id, 
+        return u"<%s('%s:%s')>" % (self.__class__.__name__,self.repo_id,
                                    self.repo_name)
 
     @classmethod
--- a/rhodecode/templates/changeset/changeset.html	Fri Mar 23 21:36:36 2012 +0200
+++ b/rhodecode/templates/changeset/changeset.html	Fri Mar 23 23:52:12 2012 +0200
@@ -36,8 +36,8 @@
                 <div class="diff-actions">
                   <a href="${h.url('raw_changeset_home',repo_name=c.repo_name,revision=c.changeset.raw_id,diff='show')}" title="${_('raw diff')}" class="tooltip"><img class="icon" src="${h.url('/images/icons/page_white.png')}"/></a>
                   <a href="${h.url('raw_changeset_home',repo_name=c.repo_name,revision=c.changeset.raw_id,diff='download')}" title="${_('download diff')}" class="tooltip"><img class="icon" src="${h.url('/images/icons/page_white_get.png')}"/></a>
-                  ${c.ignorews_url()}
-                  ${c.context_url()}
+                  ${c.ignorews_url(request.GET)}
+                  ${c.context_url(request.GET)}
                 </div>
                 <div class="comments-number" style="float:right;padding-right:5px">${len(c.comments)} comment(s) (${c.inline_cnt} ${_('inline')})</div>
 			</div>
@@ -91,14 +91,14 @@
 	                </div>
 	        </div>
 	        <span>
-	        ${_('%s files affected with %s additions and %s deletions:') % (len(c.changeset.affected_files),c.lines_added,c.lines_deleted)}
+	        ${_('%s files affected with %s insertions and %s deletions:') % (len(c.changeset.affected_files),c.lines_added,c.lines_deleted)}
 	        </span>
 	        <div class="cs_files">
 	                %for change,filenode,diff,cs1,cs2,stat in c.changes:
 	                    <div class="cs_${change}">
                             <div class="node">
                             %if change != 'removed':
-                                ${h.link_to(h.safe_unicode(filenode.path),c.anchor_url(filenode.changeset.raw_id,filenode.path)+"_target")}
+                                ${h.link_to(h.safe_unicode(filenode.path),c.anchor_url(filenode.changeset.raw_id,filenode.path,request.GET)+"_target")}
                             %else:
                                 ${h.link_to(h.safe_unicode(filenode.path),h.url.current(anchor=h.FID('',filenode.path)))}
                             %endif
--- a/rhodecode/templates/changeset/diff_block.html	Fri Mar 23 21:36:36 2012 +0200
+++ b/rhodecode/templates/changeset/diff_block.html	Fri Mar 23 23:52:12 2012 +0200
@@ -19,8 +19,8 @@
                   <a href="${h.url('files_diff_home',repo_name=c.repo_name,f_path=h.safe_unicode(filenode.path),diff2=cs2,diff1=cs1,diff='diff',fulldiff=1)}" title="${_('diff')}" class="tooltip"><img class="icon" src="${h.url('/images/icons/page_white_go.png')}"/></a>
                   <a href="${h.url('files_diff_home',repo_name=c.repo_name,f_path=h.safe_unicode(filenode.path),diff2=cs2,diff1=cs1,diff='raw')}" title="${_('raw diff')}" class="tooltip"><img class="icon" src="${h.url('/images/icons/page_white.png')}"/></a>
                   <a href="${h.url('files_diff_home',repo_name=c.repo_name,f_path=h.safe_unicode(filenode.path),diff2=cs2,diff1=cs1,diff='download')}" title="${_('download diff')}" class="tooltip"><img class="icon" src="${h.url('/images/icons/page_white_get.png')}"/></a>
-                  ${c.ignorews_url(h.FID(filenode.changeset.raw_id,filenode.path))}
-                  ${c.context_url(h.FID(filenode.changeset.raw_id,filenode.path))}
+                  ${c.ignorews_url(request.GET, h.FID(filenode.changeset.raw_id,filenode.path))}
+                  ${c.context_url(request.GET, h.FID(filenode.changeset.raw_id,filenode.path))}
                 </div>
                 <span style="float:right;margin-top:-3px">
                   <label>