comparison kallithea/controllers/changeset.py @ 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 12ce88eece5f
comparison
equal deleted inserted replaced
6192:72acb38da217 6193:dc4cb1d4e084
267 inlines = ChangesetCommentsModel() \ 267 inlines = ChangesetCommentsModel() \
268 .get_inline_comments(c.db_repo.repo_id, 268 .get_inline_comments(c.db_repo.repo_id,
269 revision=changeset.raw_id) 269 revision=changeset.raw_id)
270 c.inline_comments.extend(inlines) 270 c.inline_comments.extend(inlines)
271 271
272 c.changes[changeset.raw_id] = []
273
274 cs2 = changeset.raw_id 272 cs2 = changeset.raw_id
275 cs1 = changeset.parents[0].raw_id if changeset.parents else EmptyChangeset().raw_id 273 cs1 = changeset.parents[0].raw_id if changeset.parents else EmptyChangeset().raw_id
276 context_lcl = get_line_ctx('', request.GET) 274 context_lcl = get_line_ctx('', request.GET)
277 ign_whitespace_lcl = get_ignore_ws('', request.GET) 275 ign_whitespace_lcl = get_ignore_ws('', request.GET)
278 276
281 diff_limit = self.cut_off_limit if not fulldiff else None 279 diff_limit = self.cut_off_limit if not fulldiff else None
282 diff_processor = diffs.DiffProcessor(_diff, 280 diff_processor = diffs.DiffProcessor(_diff,
283 vcs=c.db_repo_scm_instance.alias, 281 vcs=c.db_repo_scm_instance.alias,
284 format='gitdiff', 282 format='gitdiff',
285 diff_limit=diff_limit) 283 diff_limit=diff_limit)
286 cs_changes = OrderedDict() 284 file_diff_data = OrderedDict()
287 if method == 'show': 285 if method == 'show':
288 _parsed = diff_processor.prepare() 286 _parsed = diff_processor.prepare()
289 c.limited_diff = False 287 c.limited_diff = False
290 if isinstance(_parsed, LimitedDiffContainer): 288 if isinstance(_parsed, LimitedDiffContainer):
291 c.limited_diff = True 289 c.limited_diff = True
293 st = f['stats'] 291 st = f['stats']
294 c.lines_added += st['added'] 292 c.lines_added += st['added']
295 c.lines_deleted += st['deleted'] 293 c.lines_deleted += st['deleted']
296 filename = f['filename'] 294 filename = f['filename']
297 fid = h.FID(changeset.raw_id, filename) 295 fid = h.FID(changeset.raw_id, filename)
296 url_fid = h.FID('', filename)
298 diff = diff_processor.as_html(enable_comments=enable_comments, 297 diff = diff_processor.as_html(enable_comments=enable_comments,
299 parsed_lines=[f]) 298 parsed_lines=[f])
300 cs_changes[fid] = [cs1, cs2, f['operation'], filename, 299 file_diff_data[fid] = (url_fid, f['operation'], filename, diff, st)
301 diff, st]
302 else: 300 else:
303 # downloads/raw we only need RAW diff nothing else 301 # downloads/raw we only need RAW diff nothing else
304 diff = diff_processor.as_raw() 302 diff = diff_processor.as_raw()
305 cs_changes[''] = [None, None, None, None, diff, None] 303 file_diff_data[''] = (None, None, None, diff, None)
306 c.changes[changeset.raw_id] = cs_changes 304 c.changes[changeset.raw_id] = (cs1, cs2, file_diff_data)
307 305
308 #sort comments in creation order 306 #sort comments in creation order
309 c.comments = [com for com_id, com in sorted(comments.items())] 307 c.comments = [com for com_id, com in sorted(comments.items())]
310 308
311 # count inline comments 309 # count inline comments