Mercurial > kallithea
changeset 6193:dc4cb1d4e084
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.
author | Mads Kiilerich <madski@unity3d.com> |
---|---|
date | Tue, 06 Sep 2016 00:51:18 +0200 |
parents | 72acb38da217 |
children | 4034992774fa |
files | kallithea/controllers/changeset.py kallithea/controllers/files.py kallithea/templates/changeset/changeset.html kallithea/templates/changeset/changeset_range.html kallithea/templates/changeset/diff_block.html kallithea/templates/files/file_diff.html |
diffstat | 6 files changed, 32 insertions(+), 29 deletions(-) [+] |
line wrap: on
line diff
--- 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())]
--- 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')
--- 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 @@ </div> </div> <div class="changes_txt"> + <% 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 </div> <div class="cs_files"> - %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(): <div class="cs_${op}"> <div class="node"> <i class="icon-diff-${op}"></i> - <a href="#${fid}">${h.safe_unicode(path)}</a> + ${h.link_to(h.safe_unicode(path), '#%s' % fid)} </div> <div class="changes">${h.fancy_file_stats(stats)}</div> </div> @@ -188,7 +189,9 @@ <div class="commentable-diff"> <%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: <h4>${_('Changeset was too big and was cut off...')} <a href="${h.url.current(fulldiff=1, **request.GET.mixed())}">${_('Show full diff anyway')}</a></h4> % endif
--- 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 @@ <div class="cs_files"> %for cs in c.cs_ranges: <div class="cur_cs">${h.link_to(h.show_id(cs),h.url('changeset_home',repo_name=c.cs_repo.repo_name,revision=cs.raw_id))}</div> - %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(): <div class="cs_${op}"> <div class="node"> <i class="icon-diff-${op}"></i> - ${h.link_to(h.safe_unicode(path),h.url.current(anchor=FID))} + ${h.link_to(h.safe_unicode(path), '#%s' % fid)} </div> <div class="changes">${h.fancy_file_stats(stats)}</div> </div> @@ -105,7 +106,9 @@ </span> </div> </div> - ${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 </div> </%def>
--- 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)"> <div class="diff-collapse"> - <span target="${'diff-container-%s' % (id(change))}" class="diff-collapse-button">↑ ${_('Collapse Diff')} ↑</span> + <span target="${'diff-container-%s' % (id(file_diff_data))}" class="diff-collapse-button">↑ ${_('Collapse Diff')} ↑</span> </div> -<div class="diff-container" id="${'diff-container-%s' % (id(change))}"> -%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)} +<div class="diff-container" id="${'diff-container-%s' % (id(file_diff_data))}"> +%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 </div> </%def>
--- 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)} </div> </div> </%def>