fix: show htmlized views of draft revisions without DocHistory (#5599)
* fix: show htmlized views of draft revisions without DocHistory * fix: handle htmlized views of rfcs corectly
This commit is contained in:
parent
2590ab226c
commit
1afdb0b7cc
|
@ -617,7 +617,9 @@ Man Expires September 22, 2015 [Page 3]
|
||||||
f.write(self.draft_text)
|
f.write(self.draft_text)
|
||||||
|
|
||||||
def test_document_draft(self):
|
def test_document_draft(self):
|
||||||
draft = WgDraftFactory(name='draft-ietf-mars-test',rev='01')
|
draft = WgDraftFactory(name='draft-ietf-mars-test',rev='01', create_revisions=range(0,2))
|
||||||
|
|
||||||
|
|
||||||
HolderIprDisclosureFactory(docs=[draft])
|
HolderIprDisclosureFactory(docs=[draft])
|
||||||
|
|
||||||
# Docs for testing relationships. Does not test 'possibly-replaces'. The 'replaced_by' direction
|
# Docs for testing relationships. Does not test 'possibly-replaces'. The 'replaced_by' direction
|
||||||
|
@ -785,6 +787,7 @@ Man Expires September 22, 2015 [Page 3]
|
||||||
self.assertEqual(len(q('#sidebar option[value="draft-ietf-mars-test-00"][selected="selected"]')), 1)
|
self.assertEqual(len(q('#sidebar option[value="draft-ietf-mars-test-00"][selected="selected"]')), 1)
|
||||||
|
|
||||||
rfc = WgRfcFactory()
|
rfc = WgRfcFactory()
|
||||||
|
rfc.save_with_history([DocEventFactory(doc=rfc)])
|
||||||
(Path(settings.RFC_PATH) / rfc.get_base_name()).touch()
|
(Path(settings.RFC_PATH) / rfc.get_base_name()).touch()
|
||||||
r = self.client.get(urlreverse("ietf.doc.views_doc.document_html", kwargs=dict(name=rfc.canonical_name())))
|
r = self.client.get(urlreverse("ietf.doc.views_doc.document_html", kwargs=dict(name=rfc.canonical_name())))
|
||||||
self.assertEqual(r.status_code, 200)
|
self.assertEqual(r.status_code, 200)
|
||||||
|
|
|
@ -244,7 +244,7 @@ def document_main(request, name, rev=None, document_html=False):
|
||||||
is_author = request.user.is_authenticated and doc.documentauthor_set.filter(person__user=request.user).exists()
|
is_author = request.user.is_authenticated and doc.documentauthor_set.filter(person__user=request.user).exists()
|
||||||
can_view_possibly_replaces = can_edit_replaces or is_author
|
can_view_possibly_replaces = can_edit_replaces or is_author
|
||||||
|
|
||||||
rfc_number = name[3:] if name.startswith("") else None
|
rfc_number = name[3:] if name.startswith("rfc") else None
|
||||||
draft_name = None
|
draft_name = None
|
||||||
for a in aliases:
|
for a in aliases:
|
||||||
if a.startswith("draft"):
|
if a.startswith("draft"):
|
||||||
|
@ -487,13 +487,25 @@ def document_main(request, name, rev=None, document_html=False):
|
||||||
html = None
|
html = None
|
||||||
js = None
|
js = None
|
||||||
css = None
|
css = None
|
||||||
|
diff_revisions = None
|
||||||
|
simple_diff_revisions = None
|
||||||
if document_html:
|
if document_html:
|
||||||
html = doc.html_body()
|
diff_revisions=get_diff_revisions(request, name, doc if isinstance(doc,Document) else doc.doc)
|
||||||
if request.COOKIES.get("pagedeps") == "inline":
|
simple_diff_revisions = [t[1] for t in diff_revisions]
|
||||||
js = Path(finders.find("ietf/js/document_html.js")).read_text()
|
simple_diff_revisions.reverse()
|
||||||
css = Path(finders.find("ietf/css/document_html_inline.css")).read_text()
|
if not doc.is_rfc() and rev != doc.rev:
|
||||||
if html:
|
# No DocHistory was found matching rev - snapshot will be false
|
||||||
css += Path(finders.find("ietf/css/document_html_txt.css")).read_text()
|
# and doc will be a Document object, not a DocHistory
|
||||||
|
snapshot = True
|
||||||
|
doc = doc.fake_history_obj(rev)
|
||||||
|
else:
|
||||||
|
html = doc.html_body()
|
||||||
|
if request.COOKIES.get("pagedeps") == "inline":
|
||||||
|
js = Path(finders.find("ietf/js/document_html.js")).read_text()
|
||||||
|
css = Path(finders.find("ietf/css/document_html_inline.css")).read_text()
|
||||||
|
if html:
|
||||||
|
css += Path(finders.find("ietf/css/document_html_txt.css")).read_text()
|
||||||
|
|
||||||
return render(request, "doc/document_draft.html" if document_html is False else "doc/document_html.html",
|
return render(request, "doc/document_draft.html" if document_html is False else "doc/document_html.html",
|
||||||
dict(doc=doc,
|
dict(doc=doc,
|
||||||
document_html=document_html,
|
document_html=document_html,
|
||||||
|
@ -505,7 +517,7 @@ def document_main(request, name, rev=None, document_html=False):
|
||||||
name=name,
|
name=name,
|
||||||
content=content,
|
content=content,
|
||||||
split_content=split_content,
|
split_content=split_content,
|
||||||
revisions=revisions,
|
revisions=simple_diff_revisions if document_html else revisions,
|
||||||
snapshot=snapshot,
|
snapshot=snapshot,
|
||||||
stream_desc=stream_desc,
|
stream_desc=stream_desc,
|
||||||
latest_revision=latest_revision,
|
latest_revision=latest_revision,
|
||||||
|
@ -544,7 +556,7 @@ def document_main(request, name, rev=None, document_html=False):
|
||||||
status_changes=status_changes,
|
status_changes=status_changes,
|
||||||
proposed_status_changes=proposed_status_changes,
|
proposed_status_changes=proposed_status_changes,
|
||||||
rfc_aliases=rfc_aliases,
|
rfc_aliases=rfc_aliases,
|
||||||
has_errata=doc.tags.filter(slug="errata"),
|
has_errata=doc.pk and doc.tags.filter(slug="errata"), # doc.pk == None if using a fake_history_obj
|
||||||
published=published,
|
published=published,
|
||||||
file_urls=file_urls,
|
file_urls=file_urls,
|
||||||
additional_urls=additional_urls,
|
additional_urls=additional_urls,
|
||||||
|
@ -569,7 +581,7 @@ def document_main(request, name, rev=None, document_html=False):
|
||||||
review_assignments=review_assignments,
|
review_assignments=review_assignments,
|
||||||
no_review_from_teams=no_review_from_teams,
|
no_review_from_teams=no_review_from_teams,
|
||||||
due_date=due_date,
|
due_date=due_date,
|
||||||
diff_revisions=get_diff_revisions(request, name, doc if isinstance(doc,Document) else doc.doc) if document_html else None
|
diff_revisions=diff_revisions
|
||||||
))
|
))
|
||||||
|
|
||||||
if doc.type_id == "charter":
|
if doc.type_id == "charter":
|
||||||
|
@ -859,7 +871,7 @@ def document_html(request, name, rev=None):
|
||||||
if not os.path.exists(doc.get_file_name()):
|
if not os.path.exists(doc.get_file_name()):
|
||||||
raise Http404("File not found: %s" % doc.get_file_name())
|
raise Http404("File not found: %s" % doc.get_file_name())
|
||||||
|
|
||||||
return document_main(request, name=doc.name, rev=doc.rev if not doc.is_rfc() else None, document_html=True)
|
return document_main(request, name=doc.canonical_name(), rev=doc.rev if not doc.is_rfc() else None, document_html=True)
|
||||||
|
|
||||||
def document_pdfized(request, name, rev=None, ext=None):
|
def document_pdfized(request, name, rev=None, ext=None):
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue