* Update vnu.jar * Fix py2 -> py3 issue * Run pyupgrade * test: Add default-jdk to images * test: Add option to also validate HTML with vnu.jar Since it's already installed in bin. Don't do this by default, since it increases the time needed for tests by ~50%. * fix: Stop the urlizer from urlizing in linkified mailto: text * More HTML fixes * More HTML validation fixes * And more HTML fixes * Fix floating badge * Ignore unicode errors * Only URLize docs that are existing * Final fixes * Don't URLize everything during test-crawl * Feed HTML into vnu using python rather than Java to speed things up * Allow test-crawl to start vnu on a different port * Increase retry count to vnu. Restore batch size to 30. * More HTML validation fixes * Use urllib3 to make requests to vnu, since overriding requests_mock is tricky * Undo commit of unmodified file * Also urlize ftp links * Fix matching of file name * More HTML fixes * Add `is_valid_url` filter * weekday -> data-weekday * urlencode URLs * Add and use vnu_fmt_message. Bump vnu max buffer. * Simplify doc_exists * Don't add tab link to mail archive if the URL is invalid * Run urlize_ietf_docs before linkify Reduces the possibility of generating incorrect HTML * Undo superfluous change * Runner fixes * Consolidate vnu message filtering into vnu_filter_message * Correctly handle multiple persons with same name * Minimze diff * Fix HTML nits * Print source snippet in vnu_fmt_message * Only escape if there is something to escape * Fix snippet * Skip crufty old IPR declarations * Only include modal when needed. Add handles. * Fix wordwrap+linkification * Update ietf/doc/templatetags/ietf_filters.py * Update ietf/doc/templatetags/tests_ietf_filters.py * Don't right-align second column
215 lines
12 KiB
HTML
215 lines
12 KiB
HTML
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
|
{% load origin %}
|
|
{% origin %}
|
|
{% load ietf_filters %}
|
|
{% load textfilters %}
|
|
<div class="row">
|
|
<div class="col-md-2 d-none d-md-block d-sm-block d-lg-block d-xl-block d-xxl-block">
|
|
{% for n, positions in position_groups %}
|
|
<p class="h5">
|
|
<span class="badge {{ n|pos_to_label_format }}">{{ n.name }}</span>
|
|
</p>
|
|
{% for p in positions %}
|
|
<div class="balloter-name mb-2">
|
|
{% if p.is_old_pos %}<span class="text-muted">({% endif %}{% if p.comment or p.discuss %}<a href="#{{ doc.name|slugify }}_{{ p.balloter.plain_name|slugify }}">{% endif %}{{ p.balloter.plain_name }}{% if p.comment or p.discuss %}</a>{% endif %}{% if p.is_old_pos %})</span>{% endif %}
|
|
</div>
|
|
{% empty %}
|
|
<span class="text-muted">(None)</span>
|
|
{% endfor %}
|
|
<br>
|
|
{% endfor %}
|
|
</div>
|
|
<div class="col-md-10">
|
|
{% if all_ballots and all_ballots|length > 1 %}
|
|
<label class="my-1 fw-bold">Ballots:</label>
|
|
<ul class="pagination pagination-sm flex-wrap">
|
|
{% for b in all_ballots %}
|
|
<li class="page-item{% if b == ballot %} active{% endif %}">
|
|
<a class="page-link" href="{% url "ietf.doc.views_doc.document_ballot" name=doc.name ballot_id=b.pk %}">
|
|
{{ b.ballot_type.name }} ({{ b.rev }})
|
|
</a>
|
|
</li>
|
|
{% endfor %}
|
|
</ul>
|
|
{% endif %}
|
|
{% if doc.type_id == "draft" or doc.type_id == "conflrev" or doc.type_id == "statchg" %}
|
|
{% if deferred %}
|
|
<p class="alert alert-danger my-3">
|
|
Ballot deferred by {{ deferred.by }} on {{ deferred.time|date:"Y-m-d" }}.
|
|
</p>
|
|
{% endif %}
|
|
{% endif %}
|
|
{% if not ballot_open %}
|
|
<p class="alert alert-warning my-3">
|
|
<b>Note:</b> This ballot was opened for revision {{ ballot.rev }} and is now closed.
|
|
</p>
|
|
{% else %}
|
|
<p class="alert alert-info my-3">
|
|
<b>Summary:</b> {{ summary }}
|
|
</p>
|
|
{% endif %}
|
|
{% if ballot.ballot_type.question %}
|
|
<p class="alert alert-secondary my-3">
|
|
<b>Ballot question:</b> "{{ ballot.ballot_type.question }}"
|
|
</p>
|
|
{% endif %}
|
|
{% if editable and user|has_role:"Area Director,Secretariat,IRSG Member" %}
|
|
<a class="btn btn-primary my-3"
|
|
href="https://mailarchive.ietf.org/arch/search/?q=subject:{{ doc.name }}+AND+subject:(discuss+OR+comment+OR+review)">
|
|
Search Mailarchive
|
|
</a>
|
|
{% if user|can_ballot:doc %}
|
|
<a class="btn btn-primary"
|
|
href="{% url "ietf.doc.views_ballot.edit_position" name=doc.name ballot_id=ballot.pk %}">
|
|
Edit position
|
|
</a>
|
|
{% endif %}
|
|
{% if doc.type_id == "draft" or doc.type_id == "conflrev" or doc.type_id == "statchg" %}
|
|
{% if deferred %}
|
|
<a class="btn btn-warning"
|
|
href="{% url 'ietf.doc.views_ballot.undefer_ballot' name=doc.name %}">Undefer ballot</a>
|
|
{% else %}
|
|
{% if doc.telechat_date %}
|
|
<a class="btn btn-warning"
|
|
href="{% url 'ietf.doc.views_ballot.defer_ballot' name=doc.name %}">Defer ballot</a>
|
|
{% endif %}
|
|
{% endif %}
|
|
{% if user|has_role:"Area Director,Secretariat" and ballot.ballot_type.slug != "irsg-approve" %}
|
|
<a class="btn btn-danger"
|
|
href="{% url 'ietf.doc.views_ballot.clear_ballot' name=doc.name ballot_type_slug=ballot.ballot_type.slug %}">
|
|
Clear ballot
|
|
</a>
|
|
{% endif %}
|
|
{% endif %}
|
|
{% endif %}
|
|
{% for n, positions in position_groups %}
|
|
{% for p in positions %}
|
|
{% if not p.is_old_pos %}
|
|
<p class="h5 mt-4"
|
|
id="{{ doc.name|slugify }}_{{ p.balloter.plain_name|slugify }}">
|
|
{{ p.balloter.plain_name }}
|
|
<span class="float-end">
|
|
{% if p.old_positions %}<span class="text-muted small">(was {{ p.old_positions|join:", " }})</span>{% endif %}
|
|
<span class="badge {{ p.pos|pos_to_label_format }}">{{ p.pos }}</span>
|
|
{% if user|has_role:"Secretariat" %}
|
|
<a href="{% url "ietf.doc.views_ballot.edit_position" name=doc.name ballot_id=ballot.pk %}?balloter={{ p.balloter.pk }}"
|
|
title="Click to edit the position of {{ p.balloter.plain_name }}"
|
|
class="btn btn-primary btn-sm">
|
|
Edit
|
|
</a>
|
|
{% endif %}
|
|
</span>
|
|
</p>
|
|
{% if p.pos.blocking and p.discuss %}
|
|
<div class="card border-danger {% if p.comment %} mb-2{% endif %}">
|
|
<div class="card-header bg-danger text-light">
|
|
<div>
|
|
<b>{{ p.pos.name }}</b>
|
|
({{ p.discuss_time|date:"Y-m-d" }}{% if not p.for_current_revision %}{% if p.discuss_time %} {% endif %}for -{{ p.get_dochistory.rev }}{% endif %})
|
|
{% if p.send_email %}
|
|
<i class="bi bi-envelope float-end"
|
|
title="Email requested to be sent for this discuss"></i>
|
|
{% elif p.any_email_sent == True %}
|
|
<i class="bi bi-envelope float-end"
|
|
title="Email requested to be sent for earlier discuss"></i>
|
|
{% elif p.any_email_sent == False %}
|
|
<i class="bi bi-chat float-end"
|
|
title="No email send requests for this discuss"></i>
|
|
{% else %}
|
|
<i class="bi bi-chat float-end"
|
|
title="No email send requests for this discuss"></i>
|
|
{% endif %}
|
|
</div>
|
|
</div>
|
|
<div class="card-body">
|
|
<pre class="ballot pasted">{{ p.discuss|urlize_ietf_docs|linkify }}</pre>
|
|
</div>
|
|
</div>
|
|
{% endif %}
|
|
{% if p.comment %}
|
|
<div class="card {{ p.pos|pos_to_border_format }}">
|
|
<div class="card-header {{ p.pos|pos_to_label_format }}">
|
|
<div>
|
|
<b>Comment</b>
|
|
({{ p.comment_time|date:"Y-m-d" }}{% if not p.for_current_revision %}{% if p.comment_time %} {% endif %}for -{{ p.get_dochistory.rev }}{% endif %})
|
|
{% if p.send_email %}
|
|
<i class="bi bi-envelope-check float-end"
|
|
title="Email requested to be sent for this comment"></i>
|
|
{% elif p.any_email_sent == True %}
|
|
<i class="bi bi-envelope-plus float-end"
|
|
title="Email requested to be sent for earlier comment"></i>
|
|
{% elif p.any_email_sent == False %}
|
|
<i class="bi bi-envelope-dash float-end"
|
|
title="No email send requests for this comment"></i>
|
|
{% else %}
|
|
<i class="bi bi-envelope-exclamation float-end"
|
|
title="No ballot position send log available"></i>
|
|
{% endif %}
|
|
</div>
|
|
</div>
|
|
<div class="card-body">
|
|
<pre class="ballot pasted">{{ p.comment|urlize_ietf_docs|linkify }}</pre>
|
|
</div>
|
|
</div>
|
|
{% endif %}
|
|
{% endif %}
|
|
{% endfor %}
|
|
{% endfor %}
|
|
{% for n, positions in position_groups %}
|
|
{% for p in positions %}
|
|
{% if p.is_old_pos %}
|
|
<p class="h5 mt-4" id="{{ doc.name|slugify }}_{{ p.balloter.plain_name|slugify }}">
|
|
<span class="text-muted">({{ p.balloter.plain_name }}; former steering group member)</span>
|
|
<span class="float-end">
|
|
{% if p.old_positions %}<span class="text-muted small">(was {{ p.old_positions|join:", " }})</span>{% endif %}
|
|
<span class="badge {{ p.pos|pos_to_label_format }}">{{ p.pos }}</span>
|
|
{% if user|has_role:"Secretariat" %}
|
|
<a href="{% url "ietf.doc.views_ballot.edit_position" name=doc.name ballot_id=ballot.pk %}?balloter={{ p.balloter.pk }}"
|
|
title="Click to edit the position of {{ p.balloter.plain_name }}"
|
|
class="btn btn-primary btn-sm">
|
|
Edit
|
|
</a>
|
|
{% endif %}
|
|
</span>
|
|
</p>
|
|
<div class="card {{ p.pos|pos_to_border_format }}">
|
|
<div class="card-header {{ p.pos|pos_to_label_format }}">
|
|
<div>
|
|
<b>{{ p.pos.name }} </b>
|
|
{% if p.pos.blocking and p.discuss %}
|
|
<b>[Treat as non-blocking comment]</b>
|
|
({{ p.discuss_time|date:"Y-m-d" }}{% if not p.for_current_revision %}{% if p.discuss_time %} {% endif %}for -{{ p.get_dochistory.rev }}{% endif %})
|
|
{% else %}
|
|
({{ p.comment_time|date:"Y-m-d" }}{% if not p.for_current_revision %}{% if p.comment_time %} {% endif %}for -{{ p.get_dochistory.rev }}{% endif %})
|
|
{% endif %}
|
|
{% if p.send_email %}
|
|
<i class="bi bi-envelope float-end"
|
|
title="Email requested to be sent for this ballot position"></i>
|
|
{% elif p.any_email_sent == True %}
|
|
<i class="bi bi-envelope float-end"
|
|
title="Email requested to be sent for earlier ballot position"></i>
|
|
{% elif p.any_email_sent == False %}
|
|
<i class="bi bi-chat float-end"
|
|
title="No email send requests for this ballot position"></i>
|
|
{% else %}
|
|
<i class="bi bi-envelope-slash float-end"
|
|
title="No ballot position send log available"></i>
|
|
{% endif %}
|
|
</div>
|
|
</div>
|
|
{% if p.pos.blocking and p.discuss %}
|
|
<div class="card-body">
|
|
<pre class="ballot pasted">{{ p.discuss|urlize_ietf_docs|linkify }}</pre>
|
|
</div>
|
|
{% else %}
|
|
<div class="card-body">
|
|
<pre class="ballot pasted">{{ p.comment|urlize_ietf_docs|linkify }}</pre>
|
|
</div>
|
|
{% endif %}
|
|
</div>
|
|
{% endif %}
|
|
{% endfor %}
|
|
{% endfor %}
|
|
</div>
|
|
</div>
|