From bce152b2b9a488eb072147fd49e4d546f8c7060a Mon Sep 17 00:00:00 2001 From: Henrik Levkowetz Date: Mon, 11 Jan 2016 23:33:50 +0000 Subject: [PATCH] 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 --- ietf/doc/utils.py | 41 ++++++++++++++++++++++------------------- ready-for-merge | 2 +- 2 files changed, 23 insertions(+), 20 deletions(-) diff --git a/ietf/doc/utils.py b/ietf/doc/utils.py index 11ab291f6..86bc7991d 100644 --- a/ietf/doc/utils.py +++ b/ietf/doc/utils.py @@ -543,38 +543,41 @@ def uppercase_std_abbreviated_name(name): def crawl_history(doc): # return document history data for inclusion in doc.json (used by timeline) - def ancestors(doc): - retval = [] + def get_ancestors(doc): + ancestors = [] if hasattr(doc, 'relateddocument_set'): for rel in doc.relateddocument_set.filter(relationship__slug='replaces'): - if rel.target.document not in retval: - retval.append(rel.target.document) - retval.extend(ancestors(rel.target.document)) - return retval + if rel.target.document not in ancestors: + ancestors.append(rel.target.document) + ancestors.extend(get_ancestors(rel.target.document)) + return ancestors - retval = [] - history = ancestors(doc) - if history is not None: - history.append(doc) - for d in history: - for e in d.docevent_set.filter(type='new_revision'): + history = {} + docs = get_ancestors(doc) + if docs is not None: + docs.append(doc) + for d in docs: + for e in d.docevent_set.filter(type='new_revision').distinct(): if hasattr(e, 'newrevisiondocevent'): - retval.append({ + url = urlreverse("doc_view", kwargs=dict(name=d)) + e.newrevisiondocevent.rev + "/" + history[url] = { 'name': d.name, 'rev': e.newrevisiondocevent.rev, 'published': e.time.isoformat(), - 'url': urlreverse("doc_view", kwargs=dict(name=d)) + e.newrevisiondocevent.rev + "/" - }) + 'url': url, + } if doc.type_id == "draft": e = doc.latest_event(type='published_rfc') else: e = doc.latest_event(type='iesg_approved') if e: - retval.append({ + url = urlreverse("doc_view", kwargs=dict(name=e.doc)) + history[url] = { 'name': e.doc.canonical_name(), 'rev': e.doc.canonical_name(), 'published': e.time.isoformat(), - 'url': urlreverse("doc_view", kwargs=dict(name=e.doc)) - }) - return sorted(retval, key=lambda x: x['published']) + 'url': url + } + history = history.values() + return sorted(history, key=lambda x: x['published']) diff --git a/ready-for-merge b/ready-for-merge index bc059ffd5..a80788ee8 100644 --- a/ready-for-merge +++ b/ready-for-merge @@ -13,7 +13,7 @@ /personal/lars/6.11.1.dev0@10615 /personal/lars/6.11.1.dev0@10614 /personal/lars/6.11.1.dev0@10605 -/personal/lars/6.11.1.dev0@10604 + /personal/housley/v6.8.1.dev0@10633 /personal/housley/v6.8.1.dev0@10632 /personal/housley/v6.8.1.dev0@10630