More fixes.

- Legacy-Id: 19812
This commit is contained in:
Lars Eggert 2022-01-06 12:26:10 +00:00
parent 46ca676736
commit 6fa5fa073e
53 changed files with 545 additions and 484 deletions

View file

@ -501,7 +501,7 @@ class BallotWriteupsTests(TestCase):
self.assertEqual(r.status_code, 200)
q = PyQuery(r.content)
self.assertEqual(len(q('textarea[name=ballot_writeup]')), 1)
self.assertFalse(q('[class=help-block]:contains("not completed IETF Last Call")'))
self.assertFalse(q('[class=form-text]:contains("not completed IETF Last Call")'))
self.assertTrue(q('[type=submit]:contains("Save")'))
self.assertCountEqual(draft.action_holders.all(), [])
@ -525,7 +525,7 @@ class BallotWriteupsTests(TestCase):
self.assertEqual(r.status_code, 200)
q = PyQuery(r.content)
self.assertEqual(len(q('textarea[name=ballot_writeup]')), 1)
self.assertTrue(q('[class=help-block]:contains("not completed IETF Last Call")'))
self.assertTrue(q('[class=text-danger]:contains("not completed IETF Last Call")'))
self.assertTrue(q('[type=submit]:contains("Save")'))
def test_edit_approval_text(self):

View file

@ -11,7 +11,7 @@ $(function () {
form.on("keydown", ".new-relation-row input[type=text]", function () {
var top = $(this).closest(".new-relation-row");
top.removeClass("new-relation-row");
top.find(".help-block").remove();
top.find(".form-text").remove();
top.find(".delete").show();
top.find("input,select").each(function () {
this.name += counter;

View file

@ -2652,7 +2652,7 @@ Subject: test
r = self.client.post(url, files)
if r.status_code != 302:
q = PyQuery(r.content)
print(q('div.invalid-feedback span.help-block div').text())
print(q('div.invalid-feedback span.form-text div').text())
self.assertEqual(r.status_code, 302)

View file

@ -1,18 +1,22 @@
{# bs5ok #}
{# Copyright The IETF Trust 2007, All Rights Reserved #}
{% extends "base.html" %}
{% load static %}
{% block title %}404 Not Found{% endblock %}
{% block content %}
<img class="ietflogo" src="{% static 'ietf/images/ietflogo.png' %}" alt="IETF" style="width: 10em">
<img class="ietflogo"
src="{% static 'ietf/images/ietflogo.png' %}"
alt="IETF"
style="width: 10em">
<div class='alert'>
<h2>Restricted Access.</h2>
<p>{{ exception }}</p>
<p>If you think this is a server error, please contact <a href="mailto:{{ bugreport_email }}">{{ bugreport_email }}</a>.</p>
<p>
{{ exception }}
</p>
<p>
If you think this is a server error, please contact
<a href="mailto:{{ bugreport_email }}">{{ bugreport_email }}</a>
.
</p>
</div>
{% endblock %}
{% endblock %}

View file

@ -1,20 +1,23 @@
{# bs5ok #}
{# Copyright The IETF Trust 2007, All Rights Reserved #}
{% extends "base.html" %}
{% load static %}
{% block title %}404 Not Found{% endblock %}
{% block content %}
<img class="ietflogo" src="{% static 'ietf/images/ietflogo.png' %}" alt="IETF" style="width: 10em">
<img class="ietflogo"
src="{% static 'ietf/images/ietflogo.png' %}"
alt="IETF"
style="width: 10em">
<div class='alert'>
<h2>The page you were looking for couldn't be found.</h2>
<p> The requested URL was not found on this server. If you entered the URL
manually please check your spelling and try again.</p>
<p>If you think this is a server error, please contact <a href="mailto:{{ bugreport_email }}">{{ bugreport_email }}</a>.</p>
<p>
The requested URL was not found on this server. If you entered the URL
manually please check your spelling and try again.
</p>
<p>
If you think this is a server error, please contact
<a href="mailto:{{ bugreport_email }}">{{ bugreport_email }}</a>
.
</p>
</div>
{% endblock %}
{% endblock %}

View file

@ -1,13 +1,14 @@
{# bs5ok #}
{# Copyright The IETF Trust 2007, All Rights Reserved #}
{% extends "base.html" %}
{% load static %}
{% block title %}500 Internal Server Error{% endblock %}
{% block content %}
<img class="ietflogo" src="{% static 'ietf/images/ietflogo.png' %}" alt="IETF" style="width: 10em">
<img class="ietflogo"
src="{% static 'ietf/images/ietflogo.png' %}"
alt="IETF"
style="width: 10em">
<h2>Internal Server Error.</h2>
<p class="error-text">
The server encountered an internal error and was unable to complete
your request. Either the server is overloaded or there was an
@ -19,7 +20,7 @@
A failure report with details about what happened has been sent to the
server administrators. It would be helpful if you would file a bug
report with additional information at the
<a href="https://trac.ietf.org/trac/ietfdb/newticket">IETF database issue tracker</a>, too.
<a href="https://trac.ietf.org/trac/ietfdb/newticket">IETF database issue tracker</a>
, too.
</p>
{% endblock %}
{% endblock %}

View file

@ -1,3 +1,4 @@
{# bs5ok #}
{% extends "admin/change_form.html" %}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}
@ -14,4 +15,4 @@
{% if has_absolute_url %}<li><a href="../../../r/{{ content_type_id }}/{{ object_id }}/" class="viewsitelink">{% trans "View on site" %}</a></li>{% endif%}
</ul>
{% endif %}{% endif %}
{% endblock %}
{% endblock %}

View file

@ -1,3 +1,4 @@
{# bs5ok #}
{% extends "admin/change_list.html" %}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}
@ -16,4 +17,4 @@
</li>
</ul>
{% endif %}
{% endblock %}
{% endblock %}

View file

@ -1,3 +1,4 @@
{# bs5ok #}
{% extends "admin/base_site.html" %}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}
@ -43,4 +44,4 @@
</form>
{% endif %}
</div>
{% endblock %}
{% endblock %}

View file

@ -1,3 +1,4 @@
{# bs5ok #}
{# Copyright The IETF Trust 2015-2021, All Rights Reserved #}
<!doctype html>
{% load ietf_filters static %}
@ -37,18 +38,7 @@
</head>
<body class="position-relative"
data-group-menu-data-url="{% url 'ietf.group.views.group_menu_data' %}">
<nav class="navbar navbar-expand-lg
{% if server_mode and server_mode != "production" %}
navbar-light bg-warning
{% else %}
navbar-dark bg-secondary
{% endif %}
{% if navbar_mode %}
{{ navbar_mode }}
{% else %}
fixed-top
{% endif %}">
<nav class="navbar navbar-expand-lg {% if server_mode and server_mode != "production" %} navbar-light bg-warning {% else %} navbar-dark bg-secondary {% endif %} {% if navbar_mode %} {{ navbar_mode }} {% else %} fixed-top {% endif %}">
<div class="container-fluid">
<a class="navbar-brand" href="/">
<img alt="IETF Logo"
@ -62,12 +52,7 @@
</ul>
</div>
{% if not user.is_authenticated %}
<a class="d-none d-sm-block mx-5 btn
{% if server_mode and server_mode == "production" %}
btn-warning
{% else %}
btn-info
{% endif %}"
<a class="d-none d-sm-block mx-5 btn {% if server_mode and server_mode == "production" %} btn-warning {% else %} btn-info {% endif %}"
rel="nofollow"
href="/accounts/login/?next={{ request.get_full_path|urlencode }}">
Sign
@ -105,13 +90,7 @@
{% endif %}
<div class="col overflow-hidden mx-3" id="content">
{% for message in messages %}
<div class="alert
{% if message.level_tag %}
alert-{% if message.level_tag == 'error' %}danger{% else %}{{ message.level_tag }}{% endif %}
{% endif %}
{% if message.extra_tags %}
{{ message.extra_tags }}
{% endif %} alert-dismissable fade show">
<div class="alert {% if message.level_tag %} alert-{% if message.level_tag == 'error' %}danger{% else %}{{ message.level_tag }}{% endif %} {% endif %} {% if message.extra_tags %} {{ message.extra_tags }}{% endif %} alert-dismissable fade show">
<button type="button"
class="btn-close float-end"
data-bs-dismiss="alert"
@ -159,11 +138,12 @@
<br />
{% if python_version %}Python {{ python_version }}{% endif %}
{% if django_version %}Django {{ django_version }}{% endif %}
<br>
{% include "debug.html" %}
</p>
</footer>
{% endblock footer %}
</div>
{% include "debug.html" %}
{% block js %}
{% endblock js %}
{% if debug %}

View file

@ -1,23 +1,18 @@
{# bs5ok #}
{% extends "base.html" %}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}
{% load django_bootstrap5 %}
{% block title %}Subscription to {{ clist.long_name }}{% endblock %}
{% block content %}
{% origin %}
<h1>Subscription to {{ clist.long_name }}</h1>
{% bootstrap_messages %}
<p>Get notified when changes happen to any of the tracked documents.</p>
<p>
Get notified when changes happen to any of the tracked documents.
</p>
{% if existing_subscriptions %}
<h2>Existing subscriptions</h2>
<ul class="list-group">
{% for s in existing_subscriptions %}
<li class="list-group-item email-subscription">
@ -25,36 +20,37 @@
{% csrf_token %}
<code>{{ s.email.address }}</code> - {{ s.get_notify_on_display }}
<input type="hidden" name="subscription_id" value="{{ s.pk }}">
<button class="btn btn-danger btn-sm" type="submit" name="action" value="unsubscribe">Unsubscribe</button>
<button class="btn btn-danger btn-sm"
type="submit"
name="action"
value="unsubscribe">Unsubscribe</button>
</form>
</li>
{% endfor %}
</ul>
<p><a class="btn btn-primary" href="{{ clist.get_absolute_url }}">Back to list</a></p>
<p>
<a class="btn btn-secondary" href="{{ clist.get_absolute_url }}">Back to list</a>
</p>
{% endif %}
<h2>Add new subscription</h2>
<p class="text-muted">The email addresses you can choose between are those registered in <a href="{% url "ietf.ietfauth.views.profile" %}">your profile</a>.</p>
<p class="text-muted">
The email addresses you can choose between are those registered in
<a href="{% url "ietf.ietfauth.views.profile" %}">your profile</a>
.
</p>
{% if form.fields.email.queryset %}
<form method="post">
{% csrf_token %}
{% bootstrap_form form %}
<a class="btn btn-primary" href="{{ clist.get_absolute_url }}">Back to list</a>
<a class="btn btn-secondary" href="{{ clist.get_absolute_url }}">Back to list</a>
<button type="submit" name="action" value="subscribe" class="btn btn-primary">Subscribe</button>
</form>
{% else %}
<div class="alert alert-danger">You do not have any active email addresses registered with your account. Go to <a href="{% url "ietf.ietfauth.views.profile" %}">your profile and add or activate one</a>.</div>
<a class="btn btn-primary" href="{{ clist.get_absolute_url }}">Back to list</a>
<div class="alert alert-danger">
You do not have any active email addresses registered with your account. Go to
<a href="{% url "ietf.ietfauth.views.profile" %}">your profile and add or activate one</a>
.
</div>
<a class="btn btn-secondary" href="{{ clist.get_absolute_url }}">Back to list</a>
{% endif %}
{% endblock %}
{% endblock %}

View file

@ -1,18 +1,16 @@
{# bs5ok #}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}{% origin %}
{% load origin %}
{% origin %}
{% load django_bootstrap5 %}
{% block title %}Remove tracking of document {{ name }}{% endblock %}
{% bootstrap_messages %}
<form method="post">
{% csrf_token %}
<p>Remove {{ name }} from the list?</p>
<input type="submit" class="btn btn-primary" value="Remove tracking of document">
</form>
<p>
Remove {{ name }} from the list?
</p>
<input type="submit"
class="btn btn-primary"
value="Remove tracking of document">
</form>

View file

@ -1,94 +1,110 @@
{# bs5ok #}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}{% origin %}
{% load origin %}
{% origin %}
{% if debug %}
{% if sql_debug %}
{% load debug_filters %}
<div id="debug">
<hr>
<p>
{{ sql_queries|length }} queries ({{ sql_queries|timesum }}s)
{% if sql_queries|length != 0 %}
<a class="btn btn-primary btn-sm"
onclick="$('#debug-query-table').toggleClass('hide');">Show</a>
{% endif %}
</p>
<table class="table table-sm tablesorter hide" id="debug-query-table">
<thead>
<tr>
<th data-header="sequence">#</th>
<th data-header="query">SQL</th>
<th data-header="count">Count</th>
<th data-header="where">WHERE</th>
<th data-header="loc">View/ Templ.</th>
<th data-header="time">Time</th>
<th data-header="acc">Acc.</th>
</tr>
</thead>
<tbody>
{% with sql_queries|annotate_sql_queries as sql_query_info %}
{% for query in sql_query_info %}
<tr class="sql">
<td>{{ forloop.counter }}</td>
<td>{{ query.sql|expand_comma|escape }}</td>
<td>{{ query.count }}</td>
<td>{{ query.where }}</td>
<td>
{{ query.loc }}
{% if query.origin %}
<button type="button" class="btn btn-primary btn-sm" data-bs-toggle="modal" data-bs-target="#modal-{{forloop.counter}}" >Origin</button>
{% endif %}
<div class="modal fade" id="modal-{{forloop.counter}}" tabindex="-1" role="dialog" aria-labelledby="modal-title-{{forloop.counter}}">
<div class="modal-dialog modal-max" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-bs-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title" id="modal-title-{{forloop.counter}}">QuerySet Origin for Query #{{forloop.counter}}</h4>
</div>
<div class="modal-body">
<table class="table table-sm">
<thead>
<tr>
<th>File (line)</th>
<th>Method</th>
<th>Code</th>
</tr>
</thead>
<tbody>
{% if query.origin %}
{% for origin in query.origin %}
<tr class="origin">
<td>{{ origin.1 }}({{ origin.2 }})</td>
<td>{{ origin.6 }}()</td>
<td class="code">
{% for l in origin.4 %}
<table>
<tr><td class="{% if forloop.counter0 == origin.5 %} current{% endif %}">&nbsp;{{l}}</td></tr>
</table>
{% endfor %}
</td>
{{ sql_queries|length }} queries ({{ sql_queries|timesum }}s)
{% if sql_queries|length != 0 %}
<a class="btn btn-primary btn-sm"
onclick="$('#debug-query-table').toggleClass('visually-hidden');">Show</a>
{% endif %}
<div id="debug-query-table" class="visually-hidden">
<small class="text-start">
<table class="table table-sm tablesorter">
<thead>
<tr>
<th data-sort="num">#</th>
<th data-sort="query">SQL</th>
<th data-sort="num">Count</th>
<th data-sort="where">WHERE</th>
<th data-sort="num">View/Templ.</th>
<th data-sort="num">Time</th>
<th data-sort="num">Acc.</th>
</tr>
</thead>
<tbody>
{% with sql_queries|annotate_sql_queries as sql_query_info %}
{% for query in sql_query_info %}
<tr class="sql">
<td>{{ forloop.counter }}</td>
<td>{{ query.sql|expand_comma|escape }}</td>
<td>{{ query.count }}</td>
<td>{{ query.where }}</td>
<td>
{{ query.loc }}
{% if query.origin %}
<button type="button"
class="btn btn-primary btn-sm"
data-bs-toggle="modal"
data-bs-target="#modal-{{ forloop.counter }}">
Origin
</button>
<div class="modal fade"
id="modal-{{ forloop.counter }}"
tabindex="-1"
role="dialog"
aria-labelledby="modal-title-{{ forloop.counter }}">
<div class="modal-dialog modal-max" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button"
class="close"
data-bs-dismiss="modal"
aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
<h4 class="modal-title" id="modal-title-{{ forloop.counter }}">QuerySet Origin for Query #{{ forloop.counter }}</h4>
</div>
<div class="modal-body">
<table class="table table-sm">
<thead>
<tr>
<th>File (line)</th>
<th>Method</th>
<th>Code</th>
</tr>
{% endfor %}
{% endif %}
</tbody>
</table>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-primary" data-bs-dismiss="modal">Close</button>
</thead>
<tbody>
{% for origin in query.origin %}
<tr class="origin">
<td>{{ origin.1 }}({{ origin.2 }})</td>
<td>{{ origin.6 }}()</td>
<td class="code">
{% for l in origin.4 %}
<table>
<tr>
<td class="{% if forloop.counter0 == origin.5 %} current{% endif %}">&nbsp;{{l }}</td>
</tr>
</table>
{% endfor %}
</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-primary" data-bs-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
</div>
</div>
</td>
<td>{{ query.time }}</td>
<td>{{ query.time_accum }}</td>
</tr>
{% endfor %}
{% endwith %}
</tbody>
</table>
{% endif %}
</td>
<td>{{ query.time }}</td>
<td>{{ query.time_accum }}</td>
</tr>
{% endfor %}
{% endwith %}
</tbody>
</table>
</small>
</div>
{% else %}
<div class='text-center text-muted small'>Add 'ietf.context_processors.sql_debug' to settings.TEMPLATE_CONTECT_PROCESSORS to turn on the SQL statement table</div>
<div class='text-center text-muted'>
Add 'ietf.context_processors.sql_debug' to settings.TEMPLATE_CONTECT_PROCESSORS to turn on the SQL statement table
</div>
{% endif %}
{% endif %}
{% endif %}

View file

@ -1,24 +1,24 @@
{# bs5ok #}
{% extends "base.html" %}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}
{% load django_bootstrap5 %}
{% block title %}Add comment for {{ doc }}{% endblock %}
{% block content %}
{% origin %}
<h1>Add comment<br><small class="text-muted">{{ doc }}</small></h1>
<h1>
Add comment
<br>
<small class="text-muted">{{ doc }}</small>
</h1>
<form method="post">
{% csrf_token %}
{% bootstrap_form form %}
<p class="help-block">The comment will be added to the history trail.</p>
<p class="form-text">
The comment will be added to the history trail.
</p>
{% bootstrap_button button_type="submit" content="Submit" %}
<a class="btn btn-secondary float-end" href="{% url "ietf.doc.views_doc.document_main" name=doc.name %}">Back</a>
<a class="btn btn-secondary float-end"
href="{% url "ietf.doc.views_doc.document_main" name=doc.name %}">Back</a>
</form>
{% endblock %}

View file

@ -1,29 +1,37 @@
{# bs5ok #}
{% extends "base.html" %}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}
{% load django_bootstrap5 %}
{% load ietf_filters %}
{% block title %}Approval announcement writeup for {{ doc }}{% endblock %}
{% block content %}
{% origin %}
<h1>Approval announcement writeup<br><small class="text-muted"><a href="{% url "ietf.doc.views_doc.document_main" name=doc.canonical_name %}">{{ doc }}</a></small></h1>
<h1>
Approval announcement writeup
<br>
<small class="text-muted">{{ doc }}</small>
</h1>
<form method="post">
{% csrf_token %}
{% bootstrap_form approval_text_form %}
<button type="submit" class="btn btn-primary" name="save_approval_text" value="Save text">Save text</button>
<button type="submit" class="btn btn-warning" name="regenerate_approval_text" value="Regenerate text">Regenerate text</button>
<button type="submit"
class="btn btn-primary"
name="save_approval_text"
value="Save text">Save text</button>
<button type="submit"
class="btn btn-warning"
name="regenerate_approval_text"
value="Regenerate text">
Regenerate text
</button>
{% if user|has_role:"Secretariat" and can_announce %}
<a class="btn btn-primary" href="{% url 'ietf.doc.views_ballot.approve_ballot' name=doc.name %}">Approve ballot</a>
<a class="btn btn-primary"
href="{% url 'ietf.doc.views_ballot.approve_ballot' name=doc.name %}">Approve ballot</a>
{% endif %}
<a class="btn btn-secondary float-end"
href="{% url "ietf.doc.views_doc.document_main" name=doc.canonical_name %}">
Back
</a>
</form>
{% endblock%}
{% endblock %}

View file

@ -1,29 +1,29 @@
{# bs5ok #}
{% extends "base.html" %}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}
{% load django_bootstrap5 %}
{% block title %}Approve ballot for {{ doc }}{% endblock %}
{% block content %}
{% origin %}
<h1>Approve ballot<br><small class="text-muted"><a href="{% url "ietf.doc.views_doc.document_main" name=doc.canonical_name %}">{{ doc }}</a></small></h1>
<h1>
Approve ballot
<br>
<small class="text-muted">{{ doc }}</small>
</h1>
<form method="post">
{% csrf_token %}
<pre>{{ announcement }}</pre>
<pre class="border p-3">{{ announcement }}</pre>
{% if action == "to_announcement_list" %}
<button class="btn btn-primary" type="submit">Notify RFC Editor, send announcement & close ballot</button>
{% elif action == "to_rfc_editor" %}
<button class="btn btn-primary" type="submit">Email RFC Editor & close ballot</button>
{% elif action == "do_not_publish" %}
<button class="btn btn-primary" type="submit">Email RFC Editor (DNP) & close ballot"/>
<button class="btn btn-primary" type="submit">Email RFC Editor (DNP) & close ballot"</button>
{% endif %}
<a class="btn btn-secondary float-end"
href="{% url "ietf.doc.views_doc.document_main" name=doc.canonical_name %}">
Back
</a>
</form>
{% endblock %}
{% endblock %}

View file

@ -1,36 +1,51 @@
{# bs5ok #}
{% extends "base.html" %}
{# Copyright The IETF Trust 2019, All Rights Reserved #}
{% load origin %}
{% load django_bootstrap5 %}
{% block title %}Approve downward references for {{ doc }}{% endblock %}
{% block content %}
{% origin %}
<h1>Approve downward references<br><small class="text-muted">The ballot for <a href="{% url "ietf.doc.views_doc.document_main" name=doc.canonical_name %}">{{ doc }}</a> was just approved</small></h1>
<h1>
Approve downward references
<br>
<small class="text-muted">{{ doc }}</small>
</h1>
<p>
The ballot for
<a href="{% url "ietf.doc.views_doc.document_main" name=doc.canonical_name %}">{{ doc }}</a>
was just approved.
</p>
{% if not downrefs_to_rfc %}
<p>No downward references for <a href="{% url "ietf.doc.views_doc.document_main" name=doc.canonical_name %}">{{ doc }}</a></p>
<p>
No downward references for
<a href="{% url "ietf.doc.views_doc.document_main" name=doc.canonical_name %}">{{ doc }}</a>
</p>
<a class="btn btn-secondary"
href="{% url "ietf.doc.views_doc.document_main" name=doc.canonical_name %}">Back</a>
{% else %}
<p>Add downward references to RFCs to the downref registry, if they were identified in the IETF Last Call and approved by the Sponsoring Area Director.<p>
<p><b>Last Call text for this document:</b><p>
<pre>
{{ last_call_text }}
</pre>
<p><b>This document has downward references to the following RFCs.<br>Which downward references, if any, are to be added to the downref registry?</b></p>
<form action="" method="post">
{% csrf_token %}
{% bootstrap_form approve_downrefs_form %}
<p>
<a class="btn btn-primary" href="{% url "ietf.doc.views_doc.document_main" name=doc.canonical_name %}">Add no downref entries</a>
<button type="submit" class="btn btn-warning" value="Save checked downrefs">Add checked downref entries</button>
</p>
</form>
<p>
Add downward references to RFCs to the DOWNREF registry, if they were identified in the IETF Last Call and approved by the Sponsoring Area Director.
</p>
<p>
<b>Last Call text for this document:</b>
</p>
<pre class="border p-3">
{{ last_call_text }}
</pre>
<p>
<b>This document has downward references to the following RFCs.
<br>
Which downward references, if any, are to be added to the DOWNREF registry?</b>
</p>
<form action="" method="post">
{% csrf_token %}
{% bootstrap_form approve_downrefs_form %}
<a class="btn btn-primary"
href="{% url "ietf.doc.views_doc.document_main" name=doc.canonical_name %}">
Add no DOWNREF entries
</a>
<button type="submit" class="btn btn-warning" value="Save checked downrefs">Add checked DOWNREF entries</button>
</form>
{% endif %}
{% endblock %}
{% endblock %}

View file

@ -1,19 +1,29 @@
{# bs5ok #}
{% extends "base.html" %}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}
{% block title %}Ballot issued for {{ doc }}{% endblock %}
{% block content %}
{% origin %}
<h1>Ballot issued<br><small class="text-muted"><a href="{% url "ietf.doc.views_doc.document_main" name=doc.canonical_name %}">{{ doc }}</a></small></h1>
<p>Ballot has been sent out.</p>
<h1>
Ballot issued
<br>
<small class="text-muted">{{ doc }}</small>
</h1>
<p>
Ballot for
<a href="{% url "ietf.doc.views_doc.document_main" name=doc.canonical_name %}">{{ doc }}</a>
has been sent out.
</p>
{% if doc.telechat_date %}
<p>The document is currently on the {{ doc.telechat_date }} telechat agenda.</p>
<p>
The document is currently on the <b>{{ doc.telechat_date }}</b> telechat agenda.
</p>
{% else %}
<p>The document is not on any telechat agenda.</p>
<p>
The document is not on any telechat agenda.
</p>
{% endif %}
<a class="btn btn-secondary"
href="{% url "ietf.doc.views_doc.document_main" name=doc.canonical_name %}">Back</a>
{% endblock %}

View file

@ -1,27 +1,29 @@
{# bs5ok #}
{% extends "base.html" %}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}
{% load django_bootstrap5 %}
{% block title %}Clear ballot for {{ doc }}{% endblock %}
{% block content %}
{% origin %}
<h1>Clear ballot<br><small class="text-muted"><a href="{% url "ietf.doc.views_doc.document_main" name=doc.canonical_name %}">{{ doc }}</a></small></h1>
<h1>
Clear ballot
<br>
<small class="text-muted">{{ doc }}</small>
</h1>
<form method="post">
{% csrf_token %}
<p class="alert alert-danger">
<b>Clear the ballot for {{ doc }}?</b>
<b>Clear the ballot for
<a href="{% url "ietf.doc.views_doc.document_main" name=doc.canonical_name %}">{{ doc }}</a>?
</b>
<br>
This will clear all ballot positions and discuss entries.
</p>
<button type="submit" class="btn btn-danger">Clear</button>
<a class="btn btn-secondary float-end"
href="{% url "ietf.doc.views_doc.document_main" name=doc.canonical_name %}">
Back
</a>
</form>
{% endblock %}
{% endblock %}

View file

@ -1,28 +1,29 @@
{# bs5ok #}
{% extends "base.html" %}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}
{% load django_bootstrap5 %}
{% block title %}Defer ballot for {{ doc }}{% endblock %}
{% block content %}
{% origin %}
<h1>Defer ballot<br><small class="text-muted"><a href="{% url "ietf.doc.views_doc.document_main" name=doc.canonical_name %}">{{ doc }}</a></small></h1>
<h1>
Defer ballot
<br>
<small class="text-muted">{{ doc }}</small>
</h1>
<form method="post">
{% csrf_token %}
<p class="alert alert-danger">
<b>Defer the ballot for {{ doc }}?</b>
<b>Defer the ballot for
<a href="{% url "ietf.doc.views_doc.document_main" name=doc.canonical_name %}">{{ doc }}</a>?
</b>
<br>
The ballot will then be put on the IESG agenda of {{ telechat_date }}.
</p>
<button type="submit" class="btn btn-danger">Defer ballot</button>
<a class="btn btn-secondary float-end"
href="{% url "ietf.doc.views_doc.document_main" name=doc.canonical_name %}">
Back
</a>
</form>
{% endblock %}
{% endblock %}

View file

@ -1,55 +1,64 @@
{# bs5ok #}
{% extends "base.html" %}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}
{% load django_bootstrap5 %}
{% block title %}Change position for {{ balloter.plain_name }}{% endblock %}
{% block content %}
{% origin %}
<h1>Change position for {{ balloter.plain_name }} regarding <br><small class="text-muted"><a href="{% url "ietf.doc.views_doc.document_main" name=doc.canonical_name %}">{{ doc }}</a></small></h1>
<div class="question">{{ ballot.ballot_type.question }}</div>
<h1>
Change position for {{ balloter.plain_name }}
<br>
<small class="text-muted">{{ doc }}</small>
</h1>
<div class="alert alert-warning my-3">
<b>{{ ballot.ballot_type.question }}</b>
</div>
{% if ballot_deferred %}
<p class="alert alert-info">
<p class="alert alert-info my-3">
Ballot deferred by {{ ballot_deferred.by }} on {{ ballot_deferred.time|date:"Y-m-d" }}.
</p>
{% endif %}
<form method="post" id="ballot-form">
<form method="post" id="ballot-form" class="my-3">
{% csrf_token %}
{% for field in form %}
{% if field.name == "discuss" %}<div id="div_id_discuss">{% endif %}
{% bootstrap_field field %}
{% if field.name == "discuss" and old_pos and old_pos.discuss_time %}
<div class="help-block">Last edited {{ old_pos.discuss_time }}</div>
<div class="form-text">Last edited {{ old_pos.discuss_time }}</div>
{% elif field.name == "comment" and old_pos and old_pos.comment_time %}
<div class="help-block">Last edited {{ old_pos.comment_time }}</div>
<div class="form-text">Last edited {{ old_pos.comment_time }}</div>
{% endif %}
{% if field.name == "discuss" %}</div>{% endif %}
{% endfor %}
<button type="submit" class="btn btn-primary" name="send_mail" value="Save and send email">Save & send email</button>
<input type="submit" class="btn btn-primary" value="Save">
{% if doc.type_id == "draft" or doc.type_id == "conflrev" %}
{% if doc.stream.slug != "irtf" %}
{% if ballot_deferred %}
<input type="submit" class="btn btn-warning" name="Undefer" value="Undefer ballot">
{% else %}
<input type="submit" class="btn btn-danger" name="Defer" value="Defer ballot">
<div class="mt-3">
<button type="submit"
class="btn btn-primary"
name="send_mail"
value="Save and send email">Save & send email</button>
<input type="submit" class="btn btn-primary" value="Save">
{% if doc.type_id == "draft" or doc.type_id == "conflrev" %}
{% if doc.stream.slug != "irtf" %}
{% if ballot_deferred %}
<input type="submit"
class="btn btn-warning"
name="Undefer"
value="Undefer ballot">
{% else %}
<input type="submit"
class="btn btn-danger"
name="Defer"
value="Defer ballot">
{% endif %}
{% endif %}
{% endif %}
{% endif %}
<a class="btn btn-secondary float-end"
href="{% url "ietf.doc.views_doc.document_main" name=doc.canonical_name %}">
Back
</a>
</div>
</form>
{% endblock %}
{% block js %}
<script>
var block_pos = {{ blocking_positions|safe }};
@ -68,4 +77,4 @@
discussToggle($("input[name=position]:checked").val());
</script>
{% endblock %}
{% endblock %}

View file

@ -1,28 +1,32 @@
{# bs5ok #}
{% extends "base.html" %}
{# Copyright The IETF Trust 2019, All Rights Reserved #}
{% load origin %}
{% load static %}
{% load django_bootstrap5 %}
{% block pagehead %}
<link rel="stylesheet" href="{% static 'ietf/css/datepicker.css' %}">
{% endblock %}
{% block title %}Issue ballot for {{ doc }}?{% endblock %}
{% block content %}
{% origin %}
<h1>{{ question }}</h1>
<h1>
Issue ballot
<br>
<small class="text-muted">{{ doc }}</small>
</h1>
<p>
{{ question }}
</p>
<form method="post">
{% csrf_token %}
{# curly percent bootstrap_form approval_text_form curly percent #}
Due date for this ballot:
<input type="text" placeholder={{ fillerdate }} name="duedate">
<input type="text" data-provide="datepicker" data-date-format="yyyy-mm-dd" placeholder={{ fillerdate }} name="duedate">
<button type="submit" class="btn btn-primary" name="irsg_button" value="Yes">Yes</button>
<button type="submit" class="btn btn-primary" name="irsg_button" value="No">No</button>
</form>
{% endblock %}
{% block js %}
<script src="{% static 'ietf/js/datepicker.js' %}"></script>
{% endblock %}

View file

@ -1,25 +1,23 @@
{# bs5ok #}
{% extends "base.html" %}
{# Copyright The IETF Trust 2019, All Rights Reserved #}
{% load origin %}
{% load django_bootstrap5 %}
{% block title %}Close ballot for {{ doc }}?{% endblock %}
{% block title %}Close ballot for {{ doc }}{% endblock %}
{% block content %}
{% origin %}
<h1>{{ question }}</h1>
<h1>
Close ballot
<br>
<small class="text-muted">{{ doc }}</small>
</h1>
<p>
{{ question }}
</p>
<form method="post">
{% csrf_token %}
{# curly percent bootstrap_form approval_text_form curly percent #}
<button type="submit" class="btn btn-primary" name="irsg_button" value="Yes">Yes</button>
<button type="submit" class="btn btn-primary" name="irsg_button" value="No">No</button>
</form>
{% endblock %}
{% endblock %}

View file

@ -1,38 +1,47 @@
{# bs5ok #}
{% extends "base.html" %}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}
{% load django_bootstrap5 %}
{% load ietf_filters %}
{% block title %}Last call text for {{ doc }}{% endblock %}
{% block content %}
{% origin %}
<h1>Last call text<br><small class="text-muted"><a href="{% url "ietf.doc.views_doc.document_main" name=doc.canonical_name %}">{{ doc }}</a></small></h1>
<h1 class="mb-3">
Last call text
<br>
<small class="text-muted">{{ doc }}</small>
</h1>
<form method="post">
{% csrf_token %}
{% bootstrap_form last_call_form %}
{% if can_request_last_call and need_intended_status %}
<div class="help-block">
<div class="form-text">
You need to select intended status of {{ need_intended_status }} and regenerate last call text to request last call.
</div>
{% endif %}
<button type="submit" class="btn btn-primary" name="save_last_call_text">Save text</button>
{% if can_request_last_call and not need_intended_status %}
<button type="submit" class="btn btn-primary" name="send_last_call_request" value="Save and Request Last Call">Save text &amp; request last call</button>
<button type="submit"
class="btn btn-primary"
name="send_last_call_request"
value="Save and Request Last Call">
Save text &amp; request last call
</button>
{% endif %}
<button type="submit" class="btn btn-warning" name="regenerate_last_call_text" value="Regenerate Last Call Text">Regenerate text</button>
<button type="submit"
class="btn btn-warning"
name="regenerate_last_call_text"
value="Regenerate Last Call Text">
Regenerate text
</button>
{% if user|has_role:"Secretariat" and can_make_last_call %}
<a class="btn btn-primary" href="{% url 'ietf.doc.views_ballot.make_last_call' name=doc.name %}">Issue last call</a>
<a class="btn btn-primary"
href="{% url 'ietf.doc.views_ballot.make_last_call' name=doc.name %}">Issue last call</a>
{% endif %}
<a class="btn btn-secondary float-end"
href="{% url "ietf.doc.views_doc.document_main" name=doc.canonical_name %}">
Back
</a>
</form>
{% endblock%}
{% endblock %}

View file

@ -1,32 +1,38 @@
{# bs5ok #}
{% extends "base.html" %}
{# Copyright The IETF Trust 2016, All Rights Reserved #}
{% load origin %}
{% load django_bootstrap5 %}
{% block title %}RFC Editor Note for {{ doc }}{% endblock %}
{% block content %}
{% origin %}
<h1>RFC Editor Note for<br><small class="text-muted"><a href="{% url "ietf.doc.views_doc.document_main" name=doc.canonical_name %}">{{ doc }}</a></small></h1>
<h1 class="mb-3">
RFC Editor Note
<br>
<small class="text-muted">{{ doc }}</small>
</h1>
{% bootstrap_messages %}
<form method="post">
{% csrf_token %}
{% bootstrap_form ballot_rfceditornote_form %}
<div class="help-block">
<div class="form-text mb-3">
RFC Editor Note. This text will be appended to all announcements and messages to the RFC Editor.
</div>
<button type="submit" class="btn btn-primary" name="save_ballot_rfceditornote" value="Save Ballot RFC Editor Note">Save</button>
<button type="submit" class="btn btn-warning" name="clear_ballot_rfceditornote" value="Clear Ballot RFC Editor Note">Clear</button>
<button type="submit"
class="btn btn-primary"
name="save_ballot_rfceditornote"
value="Save Ballot RFC Editor Note">
Save
</button>
<button type="submit"
class="btn btn-warning"
name="clear_ballot_rfceditornote"
value="Clear Ballot RFC Editor Note">
Clear
</button>
<a class="btn btn-secondary float-end"
href="{% url "ietf.doc.views_doc.document_main" name=doc.canonical_name %}">
Back
</a>
</form>
{% endblock%}
{% endblock %}

View file

@ -1,55 +1,45 @@
{# bs5ok #}
{% extends "base.html" %}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}
{% load django_bootstrap5 %}
{% load ietf_filters %}
{% block title %}Send ballot position for {{ balloter }}{% endblock %}
{% block title %}Send ballot position for {{ balloter }} on {{ doc }}{% endblock %}
{% block content %}
{% origin %}
<h1>Send ballot position for {{ balloter }} on <a href="{% url "ietf.doc.views_doc.document_main" name=doc.canonical_name %}">{{ doc }}</a></h1>
<form method="post">
<h1>
Send ballot position for {{ balloter }}
<br>
<small class="text-muted">{{ doc }}</small>
</h1>
<form class="mt-3" method="post">
{% csrf_token %}
<div class="form-group">
<label>From</label>
<div class="mb-3">
<label class="form-label">From</label>
<input class="form-control" type="text" placeholder="{{ frm }}" disabled>
</div>
<div class="form-group">
<label>To</label>
<div class="mb-3">
<label class="form-label">To</label>
<input class="form-control" type="text" placeholder="{{ to }}" disabled>
</div>
<div class="form-group">
{% bootstrap_form cc_select_form %}
{% bootstrap_form cc_select_form %}
<div class="mb-3">
<label class="form-label">Additional Cc Addresses</label>
<input class="form-control" name="extra_cc">
<div class="form-text">Separate email addresses with commas.</div>
</div>
<div class="form-group">
<label>Additional Cc Addresses</label>
<input class="form-control" name="extra_cc" >
<div class="help-block">Separate email addresses with commas.</div>
</div>
<div class="form-group">
<label>Subject</label>
<div class="mb-3">
<label class="form-label">Subject</label>
<input class="form-control" type="text" placeholder="{{ subject }}" disabled>
</div>
<div class="form-group">
<label>Body</label>
<pre>{{ body|maybewordwrap }}</pre>
<div class="mb-3">
<label class="form-label">Body</label>
<pre class="border p-3">{{ body|maybewordwrap }}</pre>
</div>
<button type="submit" class="btn btn-danger">Send</button>
<a class="btn btn-secondary float-end"
href="{% url "ietf.doc.views_doc.document_main" name=doc.canonical_name %}">
Back
</a>
</form>
{% endblock %}
{% endblock %}

View file

@ -1,27 +1,27 @@
{# bs5ok #}
{% extends "base.html" %}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}
{% load django_bootstrap5 %}
{% block title %}Undefer ballot for {{ doc }}{% endblock %}
{% block content %}
{% origin %}
<h1>Undefer ballot<br><small class="text-muted"><a href="{% url "ietf.doc.views_doc.document_main" name=doc.canonical_name %}">{{ doc }}</a></small></h1>
<form class="undefer" method="post">
<h1>
Undefer ballot
<br>
<small class="text-muted">{{ doc }}</small>
</h1>
<form class="undefer mt-3" method="post">
{% csrf_token %}
<p class="alert alert-danger">
<b>Undefer the ballot for {{ doc }}?</b>
<br>
The ballot will then be put on the IESG agenda of {{ telechat_date }}.
The ballot will then be put on the IESG agenda of <b>{{ telechat_date }}</b>.
</p>
<button class="btn btn-danger" type="submit">Undefer ballot</button>
<a class="btn btn-secondary float-end"
href="{% url "ietf.doc.views_doc.document_main" name=doc.canonical_name %}">
Back
</a>
</form>
{% endblock %}
{% endblock %}

View file

@ -1,34 +1,42 @@
{# bs5ok #}
{% extends "base.html" %}
{# Copyright The IETF Trust 2016, All Rights Reserved #}
{% load origin %}
{% load django_bootstrap5 %}
{% block title %}Ballot writeup and notes for {{ doc }}{% endblock %}
{% block content %}
{% origin %}
<h1>Ballot writeup and notes<br><small class="text-muted"><a href="{% url "ietf.doc.views_doc.document_main" name=doc.canonical_name %}">{{ doc }}</a></small></h1>
<h1>
Ballot writeup and notes
<br>
<small class="text-muted">{{ doc }}</small>
</h1>
<form method="post">
{% csrf_token %}
{% bootstrap_form ballot_writeup_form %}
<div class="help-block">
<div class="form-text my-3">
Technical summary, Working Group summary, document quality, personnel, IRTF note, IESG note, IANA note. This text will be appended to all announcements and messages to the IRTF or RFC Editor.
{% if ballot_issue_danger %}
<p class="text-danger">This document has not completed IETF Last Call. Please do not issue the ballot early without good reason.</p>
<p class="text-danger">
This document has not completed IETF Last Call. Please do not issue the ballot early without good reason.
</p>
{% endif %}
</div>
<button type="submit" class="btn btn-primary" name="save_ballot_writeup" value="Save Ballot Writeup">Save</button>
<button type="submit" class={% if ballot_issue_danger %}"btn btn-danger"{% else %}"btn btn-warning"{% endif %} name="issue_ballot" value="Save and Issue Ballot">Save & {% if ballot_issued %}re-{% endif %}issue ballot</button>
<button type="submit"
class="btn btn-primary"
name="save_ballot_writeup"
value="Save Ballot Writeup">Save</button>
<button type="submit"
class="btn {% if ballot_issue_danger %}btn-danger{% else %}btn-warning{% endif %}"
name="issue_ballot"
value="Save and Issue Ballot">
Save &
{% if ballot_issued %}re-{% endif %}
issue ballot
</button>
<a class="btn btn-secondary float-end"
href="{% url "ietf.doc.views_doc.document_main" name=doc.canonical_name %}">
Back
</a>
</form>
{% endblock%}
{% endblock %}

View file

@ -15,7 +15,7 @@
{% csrf_token %}
{% bootstrap_form ballot_writeup_form %}
<div class="help-block">
<div class="form-text">
Working group summary, personnel, IAB note, IESG note, IANA note.
</div>

View file

@ -13,7 +13,7 @@
<form method="post">
{% csrf_token %}
{% bootstrap_form form %}
<p class="help-block">The comment will be added to the history trail.</p>
<p class="form-text">The comment will be added to the history trail.</p>

View file

@ -19,7 +19,7 @@
{% bootstrap_form form %}
{% if state and state.slug == "rfcqueue" %}
<div class="help-block">
<div class="form-text">
<b>Note:</b> If you pull the draft out of the
<i>{{ state.name }}</i> state, the RFC Editor and IANA will be notified
by email with this comment, so they can update their queues.

View file

@ -33,7 +33,7 @@
</small></h1>
{% if action == "new" %}
<p class="help-block">
<p class="form-text">
{% if group is not None %}
Below you can upload a document for the group {{ group.name }}
<a href="{% url "ietf.group.views.materials" acronym=group.acronym %}">({{ group.acronym }})</a>.

View file

@ -24,7 +24,7 @@
<div class="row">
<div class="col-md-5">
<input name="new_relation_row_" type="text" class="form-control" placeholder="rfc...">
<p class="help-block">Enter new affected RFC.</p>
<p class="form-text">Enter new affected RFC.</p>
</div>
<div class="col-md-5">
@ -34,7 +34,7 @@
<option value="{{rel.slug}}" {% if choice_slug == rel.slug %}selected{%endif%}>{{rel.name}}</option>
{% endfor %}
</select>
<p class="help-block">Select proposed new status.</p>
<p class="form-text">Select proposed new status.</p>
</div>
<div class="col-md-2">
<button class="btn btn-danger delete" style="display:none">Delete</button>

View file

@ -13,7 +13,7 @@
<form method="post">
{% csrf_token %}
{% bootstrap_form form %}
<p class="help-block">The comment will be added to the history trail for the group.</p>
<p class="form-text">The comment will be added to the history trail for the group.</p>

View file

@ -14,12 +14,12 @@
<h1>Customize Workflow for {{ group.acronym }} {{ group.type.name }}</h1>
<p class="help-block">Below you can customize the draft states and tags used in the
<p class="form-text">Below you can customize the draft states and tags used in the
<a href="{{ group.about_url }}">{{ group.acronym }} {{ group.type.name }}</a>. Note that some states are
mandatory for group operation and cannot be deactivated.</p>
{% if group.type_id == "wg" %}
<p class="help-block">You can see the default Working Group I-D State Diagram
<p class="form-text">You can see the default Working Group I-D State Diagram
in <a href="/doc/html/rfc6174#section-4.1">Section 4.1 of RFC6174</a>.</p>
{% endif %}

View file

@ -62,7 +62,7 @@
// fixup styling a bit in case the confirm checkbox is shown
if ($(this).next().find("#id_confirm_acronym").length > 0) {
$(this).css("margin-bottom", 0);
$(this).find(".help-block").css("margin-bottom", 0);
$(this).find(".form-text").css("margin-bottom", 0);
if ($(this).hasClass("is-invalid"))
$(this).next().addClass("is-invalid");
}

View file

@ -33,7 +33,7 @@
</button>
{% endif %}
</form>
<p class="help-block my-3">
<p class="form-text my-3">
{% if forms %}Click a milestone to edit it.{% endif %}
{% if forms and not group.uses_milestone_dates %}Drag and drop milestones to reorder them.{% endif %}
{% if needs_review %}

View file

@ -90,7 +90,7 @@
</div>
{% endif %}
<p class="help-block">Fields marked with <label class="required"></label> are required</p>
<p class="form-text">Fields marked with <label class="required"></label> are required</p>
<h2>Updates</h2>
@ -124,7 +124,7 @@
{% if type != "generic" %}
<h2>{% cycle section %}. IETF document or other contribution to which this IPR disclosure relates</h2>
<p class="help-block">
<p class="form-text">
If an Internet-Draft or RFC includes multiple parts and it is not
reasonably apparent which part of such Internet-Draft or RFC is alleged
to be covered by the patent information disclosed in Section

View file

@ -67,7 +67,7 @@
{% if ipr.state_id == 'posted' %}
<p class="help-block">Note: Updates to IPR disclosures must only be made by authorized
<p class="form-text">Note: Updates to IPR disclosures must only be made by authorized
representatives of the original submitters. Updates will automatically
be forwarded to the current Patent Holder's Contact and to the Submitter
of the original IPR disclosure.</p>
@ -413,6 +413,6 @@
{% endif %}
</div>
<p class="help-block">Only those sections of the relevant entry form where the submitter provided information are displayed.</p>
<p class="form-text">Only those sections of the relevant entry form where the submitter provided information are displayed.</p>
</div>
{% endblock content %}

View file

@ -95,7 +95,7 @@
<button class="btn btn-primary" type="submit" name="submit" value="patent"><span class="bi bi-search"></span> Search</button>
</span>
</div>
<div class="help-block">
<div class="form-text">
This search string must contain at least three characters, including
at least one digit, and include punctuation marks. For best results,
please enter the entire string, or as much of it as possible.

View file

@ -34,11 +34,11 @@
{% endif %}
{% bootstrap_form_errors form %}
{% if not liaison %}
<p class="help-block">
<p class="form-text">
If you wish to submit your liaison statement by e-mail, then please send it to
<a href="mailto:statements@ietf.org">statements@ietf.org</a>
</p>
<p class="help-block">
<p class="form-text">
Fields marked with
<label class="required"></label>
are required. For detailed descriptions of the fields see the

View file

@ -34,7 +34,7 @@
<div class="session-info">
<div class="title">
<strong>
<span class="time pull-right"></span>
<span class="time float-end"></span>
{{ session.scheduling_label }} &middot; {{ session.requested_duration_in_hours }}h
{% if session.purpose_label %} &middot; {{ session.purpose_label }} {% endif %}
{% if session.attendees != None %} &middot; {{ session.attendees }} <i class="bi bi-person"></i> {% endif %}

View file

@ -53,7 +53,7 @@
<div class="form-group meeting-type-help mth-multi" style="display: none;">
<div class="col-md-offset-2">
<div class="col-md-10">
<p class="help-block">
<p class="form-text">
Use Multi-Day for a single meeting that spans more than one contiguous
workday. Do not use Multi-Day for a series of separate meetings (such as
periodic interim calls). Use Series instead.
@ -65,7 +65,7 @@
<div class="form-group meeting-type-help mth-series" style="display: none;">
<div class="col-md-offset-2">
<div class="col-md-10">
<p class="help-block">
<p class="form-text">
Use Series for a series of separate meetings, such as periodic interim calls.
Use Multi-Day for a single meeting that spans more than one contiguous
workday.
@ -81,7 +81,7 @@
{% render_field form.country class="form-control location" style="width: 30%" %}
<div id="timezone-field">
{% render_field form.time_zone class="form-control" %}
<span class="help-block">Local Timezone</span></div>
<span class="form-text">Local Timezone</span></div>
</div>
</div>
@ -107,7 +107,7 @@
<div class="col-md-3 form-inline">
{% render_field form.time class="form-control time-field" placeholder="HH:MM" %}
<div id="id_session_set-{{ forloop.counter0 }}-time_utc" class="utc-time"></div>
<span class="help-block">Local Time</span>
<span class="form-text">Local Time</span>
{% if form.time.errors %}<span class="help-inline">{{ form.time.errors }}</span>{% endif %}
</div>
<label for="id_session_set-{{ forloop.counter0 }}-requested_duration" class="col-md-1 col-form-label required">Duration</label>
@ -116,14 +116,14 @@
<div class="col-md-3 form-inline">
{% render_field form.end_time class="form-control time-field computed" placeholder="HH:MM" disabled="disabled" %}
<div id="id_session_set-{{ forloop.counter0 }}-end_time_utc" class="utc-time"></div>
<span class="help-block">Local Time</span>
<span class="form-text">Local Time</span>
</div>
</div>
<div class="form-group{% if form.remote_instructions.errors %} alert alert-danger{% endif %}">
<label for="id_session_set-{{ forloop.counter0 }}-remote_instructions" class="col-md-2 col-form-label required">Remote Instructions</label>
<div class="col-md-10">{% render_field form.remote_instructions class="form-control" placeholder="Webex (or other) URL or descriptive information (see below)" %}
<p class="help-block">
<p class="form-text">
For virtual interims, a conference link <b>should be provided in the original request</b> in all but the most unusual circumstances.
Otherwise, "Remote participation is not supported" or "Remote participation information will be obtained at the time of approval" are acceptable values.
See <a href="https://www.ietf.org/forms/wg-webex-account-request/">here</a> for more on remote participation support.

View file

@ -40,7 +40,7 @@
{% render_field form.country class="form-control location" style="width: 30%" %}
<div id="timezone-field">
{% render_field form.time_zone class="form-control" %}
<span class="help-block">Local Timezone</span></div>
<span class="form-text">Local Timezone</span></div>
</div>
</div>
@ -61,7 +61,7 @@
<div class="col-md-3 form-inline">
{% render_field form.time class="form-control time-field" placeholder="HH:MM" %}
<div id="id_session_set-{{ forloop.counter0 }}-time_utc" class="utc-time"></div>
<span class="help-block">Local Time</span>
<span class="form-text">Local Time</span>
{% if form.time.errors %}<span class="help-inline">{{ form.time.errors }}</span>{% endif %}
</div>
<label for="id_session_set-{{ forloop.counter0 }}-requested_duration" class="col-md-1 col-form-label required">Duration</label>

View file

@ -3,7 +3,7 @@
{% load tz %}
{% block intro %}
<p class="help-block">
<p class="form-text">
{% if material.active %}
This item will be listed on the proceedings as "{{ material }}". To change this, set the title below.<br>
{% else %}

View file

@ -26,7 +26,7 @@
</div>
{% endif %}
<p class="help-block">
<p class="form-text">
The entries below will appear on the proceedings as meeting hosts.
If you need to add more than there are slots, fill out the form below, save, and
reopen this page.

View file

@ -33,7 +33,7 @@
{% block content %}
{% origin %}
<p class="pull-right">
<p class="float-end">
<a href="{% url "ietf.meeting.views.create_timeslot" num=meeting.number %}">New timeslot</a>
&middot;
{% if meeting.schedule %}

View file

@ -10,7 +10,7 @@
{% if nomcom.group.state_id == 'active' %}
<a class="btn btn-primary" href="{% url 'ietf.nomcom.views.edit_position' year %}">Add new position</a>
<p class="help-block">If you need to start processing a new position while other positions are further along or have already closed (such as when the 2016 nomcom needed to seat a second RAI AD after moving an incumbent to the IESG chair position) adding a new position is the right way to start. Please review the <a href="{% url 'ietf.nomcom.views.configuration_help' year=nomcom.year %}">Configuration Hints</a>.</p>
<p class="form-text">If you need to start processing a new position while other positions are further along or have already closed (such as when the 2016 nomcom needed to seat a second RAI AD after moving an incumbent to the IESG chair position) adding a new position is the right way to start. Please review the <a href="{% url 'ietf.nomcom.views.configuration_help' year=nomcom.year %}">Configuration Hints</a>.</p>
{% endif %}
{% if positions %}

View file

@ -39,7 +39,7 @@
</form>
<div class="help-block">
<div class="form-text">
This password form uses the
<a href="https://blogs.dropbox.com/tech/2012/04/zxcvbn-realistic-password-strength-estimation/">zxcvbn</a>
password strength estimator to give an indication of password strength.
@ -48,7 +48,7 @@
</div>
<h4>Offline cracking</h4>
<div class="help-block">
<div class="form-text">
The datatracker currently uses the <b>{{ hasher.algorithm }}</b>
password hasher with
<b>
@ -64,7 +64,7 @@
Calculating offline attack time if password hashes should leak is left
as an excercise for the reader.
</div>
<div class="help-block">
<div class="form-text">
<p class="text-muted password_strength_offline_info hidden">
As a guideline, if we assume offline hashing using the current hasher
at a speed of 10<sup>4</sup> attempts per second, this password would

View file

@ -16,7 +16,7 @@
<div class="col-md-8 col-sm-12">
<h1>Change username</h1>
<div class="help-block">
<div class="form-text">
This form lets you change your username (login) from {{ user.username }} to
one of your other active email addresses. If you want to change to a new
email address, then please first

View file

@ -43,7 +43,7 @@
{% bootstrap_label '<i class="bi bi-file-code"></i> XML source of the I-D' label_class="fw-bold" %}
{% bootstrap_field form.xml show_label=False %}
<p class="help-block">
<p class="form-text">
Preferably, submit a standalone
<a href="{% url 'ietf.doc.views_doc.document_html' name='rfc7991' %}">xml2rfc version 3</a>
source file. You can use this online
@ -63,7 +63,7 @@
<div class="collapse" id="other-formats">
{% bootstrap_label '<i class="bi bi-file-text"></i> Plaintext rendering of the I-D' label_class="fw-bold" %}
{% bootstrap_field form.txt show_label=False %}
<p class="help-block">
<p class="form-text">
Optional to submit, will be auto-generated based
on the submitted XML.
However, if you cannot for some reason submit XML, you must
@ -72,7 +72,7 @@
{% bootstrap_label '<i class="bi bi-file-pdf"></i> PDF rendering of the I-D' label_class="fw-bold" %}
{% bootstrap_field form.pdf show_label=False %}
<p class="help-block">
<p class="form-text">
Optional to submit, will be auto-generated based
on the submitted XML.
</p>

View file

@ -96,4 +96,4 @@ if getattr(settings, 'USE_DEBUG_TOOLBAR', False):
import debug_toolbar
urlpatterns = urlpatterns + [path('__debug__/', include(debug_toolbar.urls)), ]
except ImportError:
pass
pass

View file

@ -7,7 +7,7 @@ import django_bootstrap5.renderers
class SeparateErrorsFromHelpTextFieldRenderer(django_bootstrap5.renderers.FieldRenderer):
def append_to_field(self, html):
if self.field_help:
html += '<div class="help-block">{}</div>'.format(self.field_help)
html += '<div class="form-text">{}</div>'.format(self.field_help)
for e in self.field_errors:
html += '<div class="alert alert-danger">{}</div>'.format(e)
return html