Skip to content

Commit bce152b

Browse files
committed
Rewrote crawl_history() to be easier to read (renaming multiple 'retval' variables and other naming tweaks) and made it return distinct revisions without the added uniqueness filtering round from /personal/lars/6.11.1.dev0@10604.
- Legacy-Id: 10639
1 parent 8b12a0f commit bce152b

2 files changed

Lines changed: 24 additions & 21 deletions

File tree

ietf/doc/utils.py

Lines changed: 23 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -543,38 +543,41 @@ def uppercase_std_abbreviated_name(name):
543543

544544
def crawl_history(doc):
545545
# return document history data for inclusion in doc.json (used by timeline)
546-
def ancestors(doc):
547-
retval = []
546+
def get_ancestors(doc):
547+
ancestors = []
548548
if hasattr(doc, 'relateddocument_set'):
549549
for rel in doc.relateddocument_set.filter(relationship__slug='replaces'):
550-
if rel.target.document not in retval:
551-
retval.append(rel.target.document)
552-
retval.extend(ancestors(rel.target.document))
553-
return retval
554-
555-
retval = []
556-
history = ancestors(doc)
557-
if history is not None:
558-
history.append(doc)
559-
for d in history:
560-
for e in d.docevent_set.filter(type='new_revision'):
550+
if rel.target.document not in ancestors:
551+
ancestors.append(rel.target.document)
552+
ancestors.extend(get_ancestors(rel.target.document))
553+
return ancestors
554+
555+
history = {}
556+
docs = get_ancestors(doc)
557+
if docs is not None:
558+
docs.append(doc)
559+
for d in docs:
560+
for e in d.docevent_set.filter(type='new_revision').distinct():
561561
if hasattr(e, 'newrevisiondocevent'):
562-
retval.append({
562+
url = urlreverse("doc_view", kwargs=dict(name=d)) + e.newrevisiondocevent.rev + "/"
563+
history[url] = {
563564
'name': d.name,
564565
'rev': e.newrevisiondocevent.rev,
565566
'published': e.time.isoformat(),
566-
'url': urlreverse("doc_view", kwargs=dict(name=d)) + e.newrevisiondocevent.rev + "/"
567-
})
567+
'url': url,
568+
}
568569

569570
if doc.type_id == "draft":
570571
e = doc.latest_event(type='published_rfc')
571572
else:
572573
e = doc.latest_event(type='iesg_approved')
573574
if e:
574-
retval.append({
575+
url = urlreverse("doc_view", kwargs=dict(name=e.doc))
576+
history[url] = {
575577
'name': e.doc.canonical_name(),
576578
'rev': e.doc.canonical_name(),
577579
'published': e.time.isoformat(),
578-
'url': urlreverse("doc_view", kwargs=dict(name=e.doc))
579-
})
580-
return sorted(retval, key=lambda x: x['published'])
580+
'url': url
581+
}
582+
history = history.values()
583+
return sorted(history, key=lambda x: x['published'])

ready-for-merge

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
/personal/lars/6.11.1.dev0@10615
1414
/personal/lars/6.11.1.dev0@10614
1515
/personal/lars/6.11.1.dev0@10605
16-
/personal/lars/6.11.1.dev0@10604
16+
1717
/personal/housley/v6.8.1.dev0@10633
1818
/personal/housley/v6.8.1.dev0@10632
1919
/personal/housley/v6.8.1.dev0@10630

0 commit comments

Comments
 (0)