# HG changeset patch # User Mads Kiilerich # Date 1473115878 -7200 # Node ID dc4cb1d4e08414329f789b05c6490c977b42cebd # Parent 72acb38da217c9b8ae6b8d376d3ca9a05dfdd063 diff: rework data structure used by diff_block.diff_block (used for changeset diffs) Make it a pure reusable function that also can replace diff_block_simple. Improve code clarity by using Python tuples for tuples. fid and url_fid are just shuffled around - not cleaned up for now. diff -r 72acb38da217 -r dc4cb1d4e084 kallithea/controllers/changeset.py --- a/kallithea/controllers/changeset.py Tue Sep 06 00:51:18 2016 +0200 +++ b/kallithea/controllers/changeset.py Tue Sep 06 00:51:18 2016 +0200 @@ -269,8 +269,6 @@ revision=changeset.raw_id) c.inline_comments.extend(inlines) - c.changes[changeset.raw_id] = [] - cs2 = changeset.raw_id cs1 = changeset.parents[0].raw_id if changeset.parents else EmptyChangeset().raw_id context_lcl = get_line_ctx('', request.GET) @@ -283,7 +281,7 @@ vcs=c.db_repo_scm_instance.alias, format='gitdiff', diff_limit=diff_limit) - cs_changes = OrderedDict() + file_diff_data = OrderedDict() if method == 'show': _parsed = diff_processor.prepare() c.limited_diff = False @@ -295,15 +293,15 @@ c.lines_deleted += st['deleted'] filename = f['filename'] fid = h.FID(changeset.raw_id, filename) + url_fid = h.FID('', filename) diff = diff_processor.as_html(enable_comments=enable_comments, parsed_lines=[f]) - cs_changes[fid] = [cs1, cs2, f['operation'], filename, - diff, st] + file_diff_data[fid] = (url_fid, f['operation'], filename, diff, st) else: # downloads/raw we only need RAW diff nothing else diff = diff_processor.as_raw() - cs_changes[''] = [None, None, None, None, diff, None] - c.changes[changeset.raw_id] = cs_changes + file_diff_data[''] = (None, None, None, diff, None) + c.changes[changeset.raw_id] = (cs1, cs2, file_diff_data) #sort comments in creation order c.comments = [com for com_id, com in sorted(comments.items())] diff -r 72acb38da217 -r dc4cb1d4e084 kallithea/controllers/files.py --- a/kallithea/controllers/files.py Tue Sep 06 00:51:18 2016 +0200 +++ b/kallithea/controllers/files.py Tue Sep 06 00:51:18 2016 +0200 @@ -683,17 +683,13 @@ ign_whitespace_lcl = get_ignore_ws(fid, request.GET) lim = request.GET.get('fulldiff') or self.cut_off_limit - cs1, cs2, op, diff, st = diffs.wrapped_diff(filenode_old=node1, + c.a_rev, c.cs_rev, op, diff, st = diffs.wrapped_diff(filenode_old=node1, filenode_new=node2, cut_off_limit=lim, ignore_whitespace=ign_whitespace_lcl, line_context=line_context_lcl, enable_comments=False) - filename = node1.path - cs_changes = { - 'fid': [cs1, cs2, op, filename, diff, st] - } - c.changes = cs_changes + c.file_diff_data = {fid: (fid, op, node1.path, diff, st)} return render('files/file_diff.html') diff -r 72acb38da217 -r dc4cb1d4e084 kallithea/templates/changeset/changeset.html --- a/kallithea/templates/changeset/changeset.html Tue Sep 06 00:51:18 2016 +0200 +++ b/kallithea/templates/changeset/changeset.html Tue Sep 06 00:51:18 2016 +0200 @@ -160,18 +160,19 @@
+ <% a_rev, cs_rev, file_diff_data = c.changes[c.changeset.raw_id] %> % if c.limited_diff: - ${ungettext('%s file changed', '%s files changed', len(c.changeset.affected_files)) % (len(c.changeset.affected_files))}: + ${ungettext('%s file changed', '%s files changed', len(file_diff_data)) % len(file_diff_data)}: % else: - ${ungettext('%s file changed with %s insertions and %s deletions', '%s files changed with %s insertions and %s deletions', len(c.changeset.affected_files)) % (len(c.changeset.affected_files), c.lines_added, c.lines_deleted)}: + ${ungettext('%s file changed with %s insertions and %s deletions', '%s files changed with %s insertions and %s deletions', len(file_diff_data)) % (len(file_diff_data), c.lines_added, c.lines_deleted)}: %endif
- %for fid, (cs1, cs2, op, path, diff, stats) in c.changes[c.changeset.raw_id].iteritems(): + %for fid, (url_fid, op, path, diff, stats) in file_diff_data.iteritems():
- ${h.safe_unicode(path)} + ${h.link_to(h.safe_unicode(path), '#%s' % fid)}
${h.fancy_file_stats(stats)}
@@ -188,7 +189,9 @@
<%namespace name="diff_block" file="/changeset/diff_block.html"/> ${diff_block.diff_block_js()} - ${diff_block.diff_block(c.changes[c.changeset.raw_id])} + <% a_rev, cs_rev, file_diff_data = c.changes[c.changeset.raw_id] %> + ${diff_block.diff_block(c.repo_name, 'rev', a_rev, a_rev, + c.repo_name, 'rev', cs_rev, cs_rev, file_diff_data)} % if c.limited_diff:

${_('Changeset was too big and was cut off...')} ${_('Show full diff anyway')}

% endif diff -r 72acb38da217 -r dc4cb1d4e084 kallithea/templates/changeset/changeset_range.html --- a/kallithea/templates/changeset/changeset_range.html Tue Sep 06 00:51:18 2016 +0200 +++ b/kallithea/templates/changeset/changeset_range.html Tue Sep 06 00:51:18 2016 +0200 @@ -59,11 +59,12 @@
%for cs in c.cs_ranges:
${h.link_to(h.show_id(cs),h.url('changeset_home',repo_name=c.cs_repo.repo_name,revision=cs.raw_id))}
- %for FID, (cs1, cs2, op, path, diff, stats) in c.changes[cs.raw_id].iteritems(): + <% a_rev, cs_rev, file_diff_data = c.changes[cs.raw_id] %> + %for fid, (url_fid, op, path, diff, stats) in file_diff_data.iteritems():
- ${h.link_to(h.safe_unicode(path),h.url.current(anchor=FID))} + ${h.link_to(h.safe_unicode(path), '#%s' % fid)}
${h.fancy_file_stats(stats)}
@@ -105,7 +106,9 @@
- ${diff_block.diff_block(c.changes[cs.raw_id])} + <% a_rev, cs_rev, file_diff_data = c.changes[cs.raw_id] %> + ${diff_block.diff_block(c.repo_name, 'rev', a_rev, a_rev, + c.repo_name, 'rev', cs_rev, cs_rev, file_diff_data)} %endfor
diff -r 72acb38da217 -r dc4cb1d4e084 kallithea/templates/changeset/diff_block.html --- a/kallithea/templates/changeset/diff_block.html Tue Sep 06 00:51:18 2016 +0200 +++ b/kallithea/templates/changeset/diff_block.html Tue Sep 06 00:51:18 2016 +0200 @@ -1,14 +1,16 @@ ## -*- coding: utf-8 -*- -<%def name="diff_block(change)"> +<%def name="diff_block(a_repo_name, a_ref_type, a_ref_name, a_rev, + cs_repo_name, cs_ref_name, cs_ref_type, cs_rev, + file_diff_data)">
- ↑ ${_('Collapse Diff')} ↑ + ↑ ${_('Collapse Diff')} ↑
-
-%for id_fid, (a_rev, cs_rev, op, filename, diff, stats) in change.iteritems(): - ${diff_block_diffblock(id_fid, h.FID(cs_rev, filename), op, filename, diff, - c.repo_name, a_rev, 'rev', a_rev, - c.repo_name, cs_rev, 'rev', cs_rev)} +
+%for id_fid, (url_fid, op, filename, diff, stats) in file_diff_data.iteritems(): + ${diff_block_diffblock(id_fid, url_fid, op, filename, diff, + a_repo_name, a_rev, a_ref_type, a_ref_name, + cs_repo_name, cs_rev, cs_ref_type, cs_ref_name)} %endfor
diff -r 72acb38da217 -r dc4cb1d4e084 kallithea/templates/files/file_diff.html --- a/kallithea/templates/files/file_diff.html Tue Sep 06 00:51:18 2016 +0200 +++ b/kallithea/templates/files/file_diff.html Tue Sep 06 00:51:18 2016 +0200 @@ -23,7 +23,8 @@ ## diff block <%namespace name="diff_block" file="/changeset/diff_block.html"/> ${diff_block.diff_block_js()} - ${diff_block.diff_block(c.changes)} + ${diff_block.diff_block(c.repo_name, 'rev', c.a_rev, c.a_rev, + c.repo_name, 'rev', c.cs_rev, c.cs_rev, c.file_diff_data)}