datatracker/ietf/templates/doc/document_ballot_content.html
Robert Sparks afac1f8f19
feat: enable editorial stream adoption and balloting (#5011)
* feat: enable editorial stream adoption and balloting

* fix: bring tests into line with refactor

* feat: force intended_std_level to Informational when adopting into a non-ietf stream.

* fix: improve blocking position labels and email content

* fix: simplify pointer to group on doc main page for rswg docs

* fix: recover from merge typos

* fix: correct defer and clear ballot behavior

* fix: improve publication request access logic

* fix: clean up broken editorial state

* fix: adjust test to match migrations
2023-01-31 13:50:51 -06:00

219 lines
13 KiB
HTML

{# Copyright The IETF Trust 2015-2022, All Rights Reserved #}
{% load origin %}
{% origin %}
{% load ietf_filters %}
{% load textfilters %}
<div class="row">
<div class="col-md-2">
{% for n, positions in position_groups %}
<p class="h5">
<span class="badge rounded-pill {{ 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 or iesg_state == "ann" or iesg_state == "approved" %}
<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,RSAB 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+OR+concern)">
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 user|can_defer:doc %}
{% 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 %}
{% endif %}
{% if user|can_clear_ballot:doc %}
<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 %}
{% for n, positions in position_groups %}
{% for p in positions %}
{% if not p.is_old_pos %}
<div class="h5 d-flex mt-4"
id="{{ doc.name|slugify }}_{{ p.balloter.plain_name|slugify }}">
<div class="flex-fill">
{{ p.balloter.plain_name }}
</div>
<div class="flex-fill text-end">
{% if p.old_positions %}<span class="text-muted small">(was {{ p.old_positions|join:", " }})</span>{% endif %}
<span class="badge rounded-pill {{ 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 %}
</div>
</div>
{% 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 and p.get_dochistory.rev %}{% 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|escape|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 and p.get_dochistory.rev %}{% 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|escape|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 %}
<div class="h5 d-flex mt-4"
id="{{ doc.name|slugify }}_{{ p.balloter.plain_name|slugify }}">
<div class="flex-fill text-muted">
{{ p.balloter.plain_name }} <span class="badge rounded-pill bg-secondary">Former IESG member</span>
</div>
<div class="flex-fill text-end">
{% if p.old_positions %}<span class="text-muted small">(was {{ p.old_positions|join:", " }})</span>{% endif %}
<span class="badge rounded-pill {{ 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 %}
</div>
</div>
<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 and p.get_dochistory.rev %}{% 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 and p.get_dochistory.rev %}{% 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|escape|urlize_ietf_docs|linkify }}</pre>
</div>
{% else %}
<div class="card-body">
<pre class="ballot pasted">{{ p.comment|escape|urlize_ietf_docs|linkify }}</pre>
</div>
{% endif %}
</div>
{% endif %}
{% endfor %}
{% endfor %}
</div>
</div>