Many more HTML fixes.

- Legacy-Id: 19908
This commit is contained in:
Lars Eggert 2022-02-03 07:49:34 +00:00
parent 64d2ba2558
commit ed30521e14
197 changed files with 1807 additions and 1681 deletions

View file

@ -8,7 +8,7 @@ from pathlib import Path
from pyquery import PyQuery
from random import randint
from tempfile import NamedTemporaryFile
from html import escape
from html import escape, unescape
from django.conf import settings
from django.urls import reverse as urlreverse
@ -191,7 +191,7 @@ This test section has some text.
self.client.login(username=username,password=username+'+password')
r = self.client.get(url)
self.assertEqual(r.status_code,200)
unescaped = unicontent(r).encode('utf-8').decode('unicode-escape')
unescaped = unescape(unicontent(r).encode('utf-8').decode('unicode-escape'))
for editor in previous_editors:
self.assertIn(editor.name,unescaped)
new_editors = set(previous_editors)
@ -231,9 +231,9 @@ This test section has some text.
self.client.login(username=username,password=username+'+password')
r = self.client.get(url)
self.assertEqual(r.status_code,200)
unescaped = unicontent(r).encode('utf-8').decode('unicode-escape')
unescaped = unescape(unicontent(r).encode('utf-8').decode('unicode-escape'))
for responsible in previous_responsible:
self.assertIn(escape(responsible.name), unescaped)
self.assertIn(responsible.name, unescaped)
new_responsible = set(previous_responsible)
new_responsible.add(RoleFactory(group__type_id='area',name_id='ad').person)
postdict = dict(responsible=[str(p.pk) for p in new_responsible])

View file

@ -29,7 +29,7 @@ class LiaisonStatementAdmin(admin.ModelAdmin):
inlines = [ RelatedLiaisonStatementInline, LiaisonStatementAttachmentInline ]
def related_to(self, obj):
return '<br />'.join(['<a href="%s">%s</a>' % (reverse('admin:liaisons_liaisonstatement_change', None, (i.target.id, )), str(i.target)) for i in obj.source_of_set.select_related('target').all()])
return '<br>'.join(['<a href="%s">%s</a>' % (reverse('admin:liaisons_liaisonstatement_change', None, (i.target.id, )), str(i.target)) for i in obj.source_of_set.select_related('target').all()])
related_to.allow_tags = True # type: ignore # https://github.com/python/mypy/issues/2087
class LiaisonStatementAttachmentAdmin(admin.ModelAdmin):
@ -50,4 +50,4 @@ class LiaisonStatementEventAdmin(admin.ModelAdmin):
raw_id_fields = ["statement", "by"]
admin.site.register(LiaisonStatement, LiaisonStatementAdmin)
admin.site.register(LiaisonStatementEvent, LiaisonStatementEventAdmin)
admin.site.register(LiaisonStatementEvent, LiaisonStatementEventAdmin)

View file

@ -211,13 +211,13 @@ class CustomModelMultipleChoiceField(forms.ModelMultipleChoiceField):
class LiaisonModelForm(BetterModelForm):
'''Specify fields which require a custom widget or that are not part of the model.
NOTE: from_groups and to_groups are marked as not required because select2 has
a problem with validating
'''
from_groups = forms.ModelMultipleChoiceField(queryset=Group.objects.all(),label='Groups',required=False)
from_groups.widget.attrs["class"] = "select2-field"
from_contact = forms.EmailField() # type: Union[forms.EmailField, SearchableEmailField]
to_contacts = forms.CharField(label="Contacts", widget=forms.Textarea(attrs={'rows':'3', }), strip=False)
to_groups = forms.ModelMultipleChoiceField(queryset=Group.objects,label='Groups',required=False)
to_groups.widget.attrs["class"] = "select2-field"
deadline = DatepickerDateField(date_format="yyyy-mm-dd", picker_settings={"autoclose": "1" }, label='Deadline', required=True)
related_to = SearchableLiaisonStatementsField(label='Related Liaison Statement', required=False)
submitted_date = DatepickerDateField(date_format="yyyy-mm-dd", picker_settings={"autoclose": "1" }, label='Submission date', required=True, initial=datetime.date.today())
@ -247,8 +247,8 @@ class LiaisonModelForm(BetterModelForm):
self.person = get_person_for_user(user)
self.is_new = not self.instance.pk
self.fields["from_groups"].widget.attrs["placeholder"] = "Type in name to search for group"
self.fields["to_groups"].widget.attrs["placeholder"] = "Type in name to search for group"
self.fields["from_groups"].widget.attrs["data-placeholder"] = "Type in name to search for group"
self.fields["to_groups"].widget.attrs["data-placeholder"] = "Type in name to search for group"
self.fields["to_contacts"].label = 'Contacts'
self.fields["other_identifiers"].widget.attrs["rows"] = 2
@ -449,7 +449,7 @@ class IncomingLiaisonForm(LiaisonModelForm):
else:
queryset = Group.objects.filter(type="sdo", state="active", role__person=self.person, role__name__in=("liaiman", "auth")).distinct().order_by('name')
self.fields['from_contact'].initial = self.person.role_set.filter(group=queryset[0]).first().email.address
self.fields['from_contact'].widget.attrs['readonly'] = True
self.fields['from_contact'].widget.attrs['disabled'] = True
self.fields['from_groups'].queryset = queryset
self.fields['from_groups'].widget.submitter = str(self.person)
@ -504,7 +504,7 @@ class OutgoingLiaisonForm(LiaisonModelForm):
else:
email = self.person.email_address()
self.fields['from_contact'].initial = email
self.fields['from_contact'].widget.attrs['readonly'] = True
self.fields['from_contact'].widget.attrs['disabled'] = True
def set_to_fields(self):
'''Set to_groups and to_contacts options and initial value based on user
@ -551,7 +551,7 @@ class EditLiaisonForm(LiaisonModelForm):
queryset = Group.objects.filter(type="sdo").order_by('name')
else:
queryset = Group.objects.filter(type="sdo", role__person=self.person, role__name__in=("liaiman", "auth")).distinct().order_by('name')
self.fields['from_contact'].widget.attrs['readonly'] = True
self.fields['from_contact'].widget.attrs['disabled'] = True
self.fields['from_groups'].queryset = queryset
def set_to_fields(self):
@ -571,5 +571,4 @@ class EditLiaisonForm(LiaisonModelForm):
class EditAttachmentForm(forms.Form):
title = forms.CharField(max_length=255)
title = forms.CharField(max_length=255)

View file

@ -25,7 +25,7 @@ class ButtonWidget(Widget):
html += '<span style="display: none" class="attachRequiredField">%s</span>' % conditional_escape(i)
required_str = 'Please fill in %s to attach a new file' % conditional_escape(self.required_label)
html += '<span style="display: none" class="attachDisabledLabel">%s</span>' % conditional_escape(required_str)
html += '<input type="button" class="addAttachmentWidget btn btn-primary btn-sm" value="%s" />' % conditional_escape(self.label)
html += '<input type="button" class="addAttachmentWidget btn btn-primary btn-sm" value="%s">' % conditional_escape(self.label)
return mark_safe(html)
@ -39,8 +39,8 @@ class ShowAttachmentsWidget(Widget):
html += '<a class="initialAttach" href="%s">%s</a>&nbsp' % (conditional_escape(attachment.document.get_href()), conditional_escape(attachment.document.title))
html += '<a class="btn btn-primary btn-sm" href="{}">Edit</a>&nbsp'.format(urlreverse("ietf.liaisons.views.liaison_edit_attachment", kwargs={'object_id':attachment.statement.pk,'doc_id':attachment.document.pk}))
html += '<a class="btn btn-primary btn-sm" href="{}">Delete</a>&nbsp'.format(urlreverse("ietf.liaisons.views.liaison_delete_attachment", kwargs={'object_id':attachment.statement.pk,'attach_id':attachment.pk}))
html += '<br />'
html += '<br>'
else:
html += 'No files attached'
html += '</div></div>'
return mark_safe(html)
return mark_safe(html)

View file

@ -3941,7 +3941,7 @@ class EditScheduleListTests(TestCase):
self.assertTrue(r.status_code, 200)
q = PyQuery(r.content)
self.assertEqual(len(q(".schedule-diffs tr")), 3)
self.assertEqual(len(q(".schedule-diffs tr")), 3+1)
def test_delete_schedule(self):
url = urlreverse('ietf.meeting.views.delete_schedule',
@ -5758,14 +5758,14 @@ class MaterialsTests(TestCase):
r = self.client.get(session_overview_url)
self.assertEqual(r.status_code,200)
q = PyQuery(r.content)
self.assertFalse(q('#uploadslides'))
self.assertFalse(q('#proposeslides'))
self.assertFalse(q('.uploadslides'))
self.assertFalse(q('.proposeslides'))
self.client.login(username=newperson.user.username,password=newperson.user.username+"+password")
r = self.client.get(session_overview_url)
self.assertEqual(r.status_code,200)
q = PyQuery(r.content)
self.assertTrue(q('#proposeslides'))
self.assertTrue(q('.proposeslides'))
self.client.logout()
login_testing_unauthorized(self,newperson.user.username,propose_url)
@ -5783,7 +5783,7 @@ class MaterialsTests(TestCase):
r = self.client.get(session_overview_url)
self.assertEqual(r.status_code, 200)
q = PyQuery(r.content)
self.assertEqual(len(q('#proposedslidelist p')), 1)
self.assertEqual(len(q('.proposedslidelist p')), 1)
SlideSubmissionFactory(session = session)
@ -5792,7 +5792,7 @@ class MaterialsTests(TestCase):
r = self.client.get(session_overview_url)
self.assertEqual(r.status_code, 200)
q = PyQuery(r.content)
self.assertEqual(len(q('#proposedslidelist p')), 2)
self.assertEqual(len(q('.proposedslidelist p')), 2)
self.client.logout()
def test_disapprove_proposed_slides(self):

View file

@ -92,7 +92,7 @@ class PersonTests(TestCase):
#debug.show('person.photo_name()')
self.assertContains(r, person.photo_name(), status_code=200)
q = PyQuery(r.content)
self.assertIn("Photo of %s"%person, q("div.bio-text img").attr("alt"))
self.assertIn("Photo of %s"%person.name, q("div.bio-text img").attr("alt"))
bio_text = q("div.bio-text").text()
self.assertIsNotNone(bio_text)

View file

@ -73,7 +73,7 @@ def get_to_choices():
class AnnounceForm(forms.ModelForm):
nomcom = forms.ModelChoiceField(queryset=Group.objects.filter(acronym__startswith='nomcom',type='nomcom',state='active'),required=False)
to_custom = MultiEmailField(required=False,label='')
to_custom = MultiEmailField(required=False)
class Meta:
model = Message
@ -131,4 +131,4 @@ class AnnounceForm(forms.ModelForm):
if nomcom:
message.related_groups.add(nomcom)
return message
return message

View file

@ -24,9 +24,7 @@
{% block footer %}
<div id="footer">
<div id="footer-extras">
<ul>
{% block footer-extras %}{% endblock %}
</ul>
{% block footer-extras %}{% endblock %}
</div>
<div id="footer-version">
<p>IETF Secretariat Tools v. {{ secr_version_num }}</p>
@ -36,4 +34,4 @@
<a href="https://www.amsl.com/"><img src="{% static 'secr/images/ams_logo.png' %}" alt="AMS" align="right" border="0" hspace="5" /></a>
</div>
</div>
{% endblock %}
{% endblock %}

View file

@ -24,9 +24,7 @@
{% block footer %}
<div id="footer">
<div id="footer-extras">
<ul>
{% block footer-extras %}{% endblock %}
</ul>
{% block footer-extras %}{% endblock %}
</div>
<div id="footer-version">
<p>IETF Secretariat Tools v. {{ secr_version_num }}</p>
@ -36,4 +34,4 @@
<a href="https://www.amsl.com/"><img src="{% static 'secr/images/ams_logo.png' %}" alt="AMS" align="right" border="0" hspace="5" /></a>
</div>
</div>
{% endblock %}
{% endblock %}

View file

@ -28,16 +28,18 @@
<th>Action</th>
</tr>
</thead>
<tbody>
{% for role in group.role_set.all %}
<tr class="{% cycle 'row1' 'row2' %}">
<td>{{ role.name }}</td>
<td>{{ role.person }}</td>
<td>{{ role.email }}</td>
<td><a href="{% url 'ietf.secr.groups.views.delete_role' acronym=group.acronym id=role.id %}">Delete</a></td>
</tr>
{% endfor %}
</tbody>
{% if group.role_set.all %}
<tbody>
{% for role in group.role_set.all %}
<tr class="{% cycle 'row1' 'row2' %}">
<td>{{ role.name }}</td>
<td>{{ role.person }}</td>
<td>{{ role.email }}</td>
<td><a href="{% url 'ietf.secr.groups.views.delete_role' acronym=group.acronym id=role.id %}">Delete</a></td>
</tr>
{% endfor %}
</tbody>
{% endif %}
</table>
<div class="inline-related">
@ -65,4 +67,4 @@
</div> <!-- module -->
{% endblock %}
{% endblock %}

View file

@ -7,8 +7,6 @@
<link rel="stylesheet" href="{% static "ietf/css/list.css" %}">
<script src="{% static 'secr/js/utils.js' %}"></script>
<script src="{% static "ietf/js/list.js" %}"></script>
{% endblock %}{% endblock %}
{% endblock %}
{% block breadcrumbs %}{{ block.super }}

View file

@ -63,38 +63,46 @@
<div id="groups-view-col2">
<div class="inline-related">
<h2>Chairperson(s)</h2>
<table>
{% for role in group.chairs %}
<tr><td><a href="{% url 'ietf.secr.rolodex.views.view' id=role.person.id %}">{{ role.person }}</a></td></tr>
{% endfor %}
</table>
{% if group.chairs %}
<table>
{% for role in group.chairs %}
<tr><td><a href="{% url 'ietf.secr.rolodex.views.view' id=role.person.id %}">{{ role.person }}</a></td></tr>
{% endfor %}
</table>
{% endif %}
</div> <!-- inline-related -->
<div class="inline-related">
<h2>Document Editor(s)</h2>
<table>
{% for role in group.editors %}
<tr><td><a href="{% url 'ietf.secr.rolodex.views.view' id=role.person.id %}">{{ role.person }}</a></td></tr>
{% endfor %}
</table>
{% if group.editors %}
<table>
{% for role in group.editors %}
<tr><td><a href="{% url 'ietf.secr.rolodex.views.view' id=role.person.id %}">{{ role.person }}</a></td></tr>
{% endfor %}
</table>
{% endif %}
</div> <!-- inline-related -->
<div class="inline-related">
<h2>Technical Advisor(s)</h2>
<table>
{% for role in group.techadvisors %}
<tr><td><a href="{% url 'ietf.secr.rolodex.views.view' id=role.person.id %}">{{ role.person }}</a></td></tr>
{% endfor %}
</table>
{% if group.techadvisors %}
<table>
{% for role in group.techadvisors %}
<tr><td><a href="{% url 'ietf.secr.rolodex.views.view' id=role.person.id %}">{{ role.person }}</a></td></tr>
{% endfor %}
</table>
{% endif %}
</div> <!-- inline-related -->
<div class="inline-related">
<h2>Secretary(ies)</h2>
<table>
{% for role in group.secretaries %}
<tr><td><a href="{% url 'ietf.secr.rolodex.views.view' id=role.person.id %}">{{ role.person }}</a></td></tr>
{% endfor %}
</table>
{% if group.secretaries %}
<table>
{% for role in group.secretaries %}
<tr><td><a href="{% url 'ietf.secr.rolodex.views.view' id=role.person.id %}">{{ role.person }}</a></td></tr>
{% endfor %}
</table>
{% endif %}
</div> <!-- inline-related -->
</div> <!-- groups-view-col2 -->
@ -111,4 +119,4 @@
</div> <!-- button-group -->
</div> <!-- module -->
{% endblock %}
{% endblock %}

View file

@ -1 +1,3 @@
<ul>
<li><a href="https://datatracker.ietf.org/meeting/{{ meeting.number }}/agenda.txt" target="_blank">View Agenda</a>.</li>
</ul>

View file

@ -6,13 +6,15 @@
<th>ID</th>
</tr>
</thead>
<tbody>
{% for item in results %}
<tr class="{% cycle 'row1' 'row2' %}">
<td><a href="{% url 'ietf.secr.rolodex.views.view' id=item.person.id %}">{{item.name}}</a></td>
<td>{{item.person.email_address}}</td>
<td>{{item.person.id}}</a></td>
</tr>
{% endfor %}
</tbody>
</table>
{% if results %}
<tbody>
{% for item in results %}
<tr class="{% cycle 'row1' 'row2' %}">
<td><a href="{% url 'ietf.secr.rolodex.views.view' id=item.person.id %}">{{item.name}}</a></td>
<td>{{item.person.email_address}}</td>
<td>{{item.person.id}}</a></td>
</tr>
{% endfor %}
</tbody>
{% endif %}
</table>

View file

@ -1,4 +1,6 @@
<ul>
<li><a href="https://www.ietf.org/chairs/session-request-tool-instructions/" target="_blank">Instructions</a>.</li>
<li><a href="{% url 'ietf.secr.proceedings.views.main' %}">IETF Meeting Materials Management Tool</a>.</li>
<li>If you require assistance in using this tool, or wish to report a bug, then please send a message to <a href="mailto:ietf-action@ietf.org">ietf-action@ietf.org</a>.</li>
<li>To submit your request via email, please send your request to <a href="mailto:agenda@ietf.org">agenda@ietf.org</a>.</li>
</ul>

View file

@ -1,4 +1,6 @@
<ul>
<li><a href="https://www.ietf.org/instructions/meeting_materials_tool.html" target="_blank">Instructions</a>.</li>
<li>If you require assistance in using this tool, or wish to report a bug, then please send a message to <a href="mailto:{{settings.SECRETARIAT_ACTION_EMAIL}}">ietf-action@ietf.org</a>.</li>
<li>To submit your materials via email, please send agendas to <a href="mailto:agenda@ietf.org">agenda@ietf.org</a> and minutes/presentation slides to <a href="mailto:proceedings@ietf.org">proceedings@ietf.org</a>.</li>
<li><b>Note:</b> Normal session materials materials management is now performed using the {% if meeting.number %}<a href="{% url 'ietf.meeting.views.materials' num=meeting.number %}">{% endif %}materials page{% if meeting.number %}</a>{% endif %}
<li><b>Note:</b> Normal session materials materials management is now performed using the {% if meeting.number %}<a href="{% url 'ietf.meeting.views.materials' num=meeting.number %}">{% endif %}materials page{% if meeting.number %}</a>{% endif %}
</ul>

View file

@ -22,15 +22,17 @@
<th>IETF Meeting</th>
</tr>
</thead>
<tbody>
{% for meeting in meetings %}
<tr class = "{% cycle 'row1' 'row2' %}{% if meeting.get_submission_correction_date < today %} frozen{% else %} open{% endif %}">
<td>
<a href="{% url 'ietf.secr.proceedings.views.select' meeting_num=meeting.number %}">{{ meeting.number }}</a>
</td>
</tr>
{% endfor %}
</tbody>
{% if meetings %}
<tbody>
{% for meeting in meetings %}
<tr class = "{% cycle 'row1' 'row2' %}{% if meeting.get_submission_correction_date < today %} frozen{% else %} open{% endif %}">
<td>
<a href="{% url 'ietf.secr.proceedings.views.select' meeting_num=meeting.number %}">{{ meeting.number }}</a>
</td>
</tr>
{% endfor %}
</tbody>
{% endif %}
</table>
{% if user|has_role:"Secretariat" %}
<div class="button-group">
@ -49,15 +51,17 @@
<th>Interim Meeting</th>
</tr>
</thead>
<tbody>
{% for meeting in interim_meetings %}
{% if interim_meetings %}
<tbody>
{% for meeting in interim_meetings %}
<tr class = "{% cycle 'row1' 'row2' %}">
<td>{{ meeting.group.acronym }}</td>
<td><a href="{% url "ietf.meeting.views.session_details" num=meeting.number acronym=meeting.group.acronym %}">{{ meeting.date }}</a></td>
</tr>
{% endfor %}
</tbody>
<tr class = "{% cycle 'row1' 'row2' %}">
<td>{{ meeting.group.acronym }}</td>
<td><a href="{% url "ietf.meeting.views.session_details" num=meeting.number acronym=meeting.group.acronym %}">{{ meeting.date }}</a></td>
</tr>
{% endfor %}
</tbody>
{% endif %}
</table>
</div> <!-- scroll -->
<div class="button-group">
@ -89,5 +93,4 @@
{% endblock %}
~
~
~
~

View file

@ -56,32 +56,34 @@
<th>Edit</th>
</tr>
</thead>
<tbody>
{% if sessions %}
<tbody>
{% for session in sessions %}
{% if session.recordings %}
{% for recording in session.recordings %}
{% for session in sessions %}
{% if session.recordings %}
{% for recording in session.recordings %}
<tr>
<td>{{ session.group.acronym }}</td>
<td>{{ session.official_timeslotassignment.timeslot.time|date:"m-d H:i" }}</td>
<td class="document-name" >{{ recording.name }}</td>
<td><a href="{{ recording.get_href }}">{{ recording.get_href }}</a></td>
<td><a href="{% url 'ietf.secr.proceedings.views.recording_edit' meeting_num=meeting.number name=recording.name %}">Edit</a></td>
</tr>
{% endfor %}
{% else %}
<tr>
<td>{{ session.group.acronym }}</td>
<td>{{ session.official_timeslotassignment.timeslot.time|date:"m-d H:i" }}</td>
<td class="document-name" >{{ recording.name }}</td>
<td><a href="{{ recording.get_href }}">{{ recording.get_href }}</a></td>
<td><a href="{% url 'ietf.secr.proceedings.views.recording_edit' meeting_num=meeting.number name=recording.name %}">Edit</a></td>
<td></td>
<td></td>
<td></td>
</tr>
{% endfor %}
{% else %}
<tr>
<td>{{ session.group.acronym }}</td>
<td>{{ session.official_timeslotassignment.timeslot.time|date:"m-d H:i" }}</td>
<td></td>
<td></td>
<td></td>
</tr>
{% endif %}
{% endif %}
{% endfor %}
{% endfor %}
</tbody>
</tbody>
{% endif %}
</table>
</div> <!-- inline-group -->
@ -94,13 +96,15 @@
<th>Filename</th>
</tr>
</thead>
<tbody>
{% for file in unmatched_recordings %}
<tr>
<td>{{ file }}</td>
</tr>
{% endfor %}
</tbody>
{% if unmatched_recordings %}
<tbody>
{% for file in unmatched_recordings %}
<tr>
<td>{{ file }}</td>
</tr>
{% endfor %}
</tbody>
{% endif %}
</table>
</div> <!-- inline-group -->
{% endif %}
@ -112,4 +116,4 @@
{% block footer-extras %}
{% include "includes/upload_footer.html" %}
{% endblock %}
{% endblock %}

View file

@ -50,14 +50,11 @@
<br>
<div class="inline-related">
<h2></h2>
<h3><b>Role Details</b></h3>
<h3>Role Details</h3>
<div id="roles-list"></div>
<p></p>
</div> <!-- inline-related -->
<div class="inline-related">
<h2></h2>
<h3>Add Role</h3>
{% with role_form as form %}
{{ role_form.non_field_errors }}

View file

@ -36,21 +36,23 @@
<th>Email</th>
</tr>
</thead>
<tbody>
{% for role in roles %}
<tr>
<td>{{ role.name }} </td>
<td>
{% if role.group.type.slug == "area" %}
<a href="{% url "ietf.secr.areas.views.view" name=role.group.acronym %}">{{ role.group.acronym }}{% if role.group.state.slug == "conclude" %} (concluded){% endif %}</a>
{% else %}
<a href="{% url 'ietf.secr.groups.views.view' acronym=role.group.acronym %}">{{ role.group.acronym }}{% if role.group.state.slug == "conclude" %} (concluded){% endif %}</a>
{% endif %}
</td>
<td>{{ role.email }}</td>
</tr>
{% endfor %}
</tbody>
{% if roles %}
<tbody>
{% for role in roles %}
<tr>
<td>{{ role.name }} </td>
<td>
{% if role.group.type.slug == "area" %}
<a href="{% url "ietf.secr.areas.views.view" name=role.group.acronym %}">{{ role.group.acronym }}{% if role.group.state.slug == "conclude" %} (concluded){% endif %}</a>
{% else %}
<a href="{% url 'ietf.secr.groups.views.view' acronym=role.group.acronym %}">{{ role.group.acronym }}{% if role.group.state.slug == "conclude" %} (concluded){% endif %}</a>
{% endif %}
</td>
<td>{{ role.email }}</td>
</tr>
{% endfor %}
</tbody>
{% endif %}
</table>
</div> <!-- iniline-related -->

View file

@ -39,13 +39,14 @@
<span class="required"> (Currently, this group does not plan to hold a session at IETF {{ meeting.number }})</span>
{% endif %}
</li>
{% empty %}
<i>NONE</i>
{% endfor %}
</ul>
</div> <!-- inline-related -->
<br>
<div class="inline-related">
<h2></h2>
<h3><b>Edit / Cancel Previously Requested Sessions</b></h3>
<h3>Edit / Cancel Previously Requested Sessions</h3>
<p>The list below includes those working groups for which you or your co-chair has requested sessions at the upcoming IETF meeting. You can click on an acronym to initiate changes to a session, or cancel a session.</p>
<ul>
{% for group in scheduled_groups %}
@ -61,4 +62,4 @@
{% block footer-extras %}
{% include "includes/sessions_footer.html" %}
{% endblock %}
{% endblock %}

View file

@ -122,14 +122,14 @@ input[id$='DELETE'] {
display: none;
}
#id_from_groups + span {
/*#id_from_groups + span {
display: none;
}
#id_to_groups + span {
display: none;
}
*/
.liaison-group-col {
min-width: 10em;
}

View file

@ -27,10 +27,10 @@ $(document)
totalField.val(total);
template.before(el);
el.find(".select2-field")
.each(function () {
setupSelect2Field($(this));
});
// el.find(".select2-field")
// .each(function () {
// setupSelect2Field($(this));
// });
});
function updateRevisions() {

View file

@ -101,7 +101,7 @@ var attachmentWidget = {
initTriggers: function () {
attachmentWidget.config.showOnDisplay.on('click', 'a.removeAttach', attachmentWidget.removeAttachment);
attachmentWidget.button.click(attachmentWidget.doAttach);
attachmentWidget.button.on("click", attachmentWidget.doAttach);
},
initFileInput: function () {
@ -121,8 +121,8 @@ var attachmentWidget = {
fieldids.push('#' + newfield.attr('id'));
});
attachmentWidget.config.fields = $(fieldids.join(","));
attachmentWidget.config.fields.change(attachmentWidget.setState);
attachmentWidget.config.fields.keyup(attachmentWidget.setState);
attachmentWidget.config.fields.on("change", attachmentWidget.setState);
attachmentWidget.config.fields.on("keyup", attachmentWidget.setState);
},
initWidget: function () {
@ -281,14 +281,10 @@ var liaisonForm = {
init: function () {
liaisonForm.form = $(this);
liaisonForm.initVariables();
$('#id_from_groups')
.select2();
$('#id_to_groups')
.select2();
liaisonForm.to_groups.change(function () { liaisonForm.updateInfo(false, $(this)); });
liaisonForm.from_groups.change(function () { liaisonForm.updateInfo(false, $(this)); });
liaisonForm.purpose.change(liaisonForm.updatePurpose);
liaisonForm.form.submit(liaisonForm.checkSubmissionDate);
liaisonForm.to_groups.on("change", function () { liaisonForm.updateInfo(false, $(this)); });
liaisonForm.from_groups.on("change", function () { liaisonForm.updateInfo(false, $(this)); });
liaisonForm.purpose.on("change", liaisonForm.updatePurpose);
liaisonForm.form.on("submit", liaisonForm.checkSubmissionDate);
$('.addAttachmentWidget')
.each(attachmentWidget.initWidget);

View file

@ -18,13 +18,6 @@ $.fn.select2.defaults.set("escapeMarkup", function (m) {
// JS for ietf.utils.fields.SearchableField subclasses
window.setupSelect2Field = function (e) {
var url = e.data("ajax--url");
if (!url) {
if (!e.attr("disabled")) {
console.log("data-ajax--url missing, not enabling select2 on field", e);
}
return;
}
var maxEntries = e.data("max-entries");
var options = e.data("pre");
for (var id in options) {
@ -34,7 +27,7 @@ window.setupSelect2Field = function (e) {
e.select2({
multiple: maxEntries !== 1,
maximumSelectionSize: maxEntries,
ajax: {
ajax: url ? {
url: url,
dataType: "json",
delay: 250,
@ -52,8 +45,10 @@ window.setupSelect2Field = function (e) {
}
};
}
}
} : undefined
});
console.log(e);
};
$(document)

View file

@ -94,30 +94,30 @@ class SubmissionBaseUploadForm(forms.Form):
if cutoff_00 == cutoff_01:
if now.date() >= (cutoff_00.date() - meeting.idsubmit_cutoff_warning_days) and now.date() < cutoff_00.date():
self.cutoff_warning = ( 'The last submission time for Internet-Drafts before %s is %s.<br/><br/>' % (meeting, cutoff_00_str))
self.cutoff_warning = ( 'The last submission time for Internet-Drafts before %s is %s.<br><br>' % (meeting, cutoff_00_str))
elif now <= cutoff_00:
self.cutoff_warning = (
'The last submission time for new Internet-Drafts before the meeting is %s.<br/>'
'The last submission time for new Internet-Drafts before the meeting is %s.<br>'
'After that, you will not be able to submit drafts until after %s (IETF-meeting local time)' % (cutoff_00_str, reopen_str, ))
else:
if now.date() >= (cutoff_00.date() - meeting.idsubmit_cutoff_warning_days) and now.date() < cutoff_00.date():
self.cutoff_warning = ( 'The last submission time for new documents (i.e., version -00 Internet-Drafts) before %s is %s.<br/><br/>' % (meeting, cutoff_00_str) +
'The last submission time for revisions to existing documents before %s is %s.<br/>' % (meeting, cutoff_01_str) )
self.cutoff_warning = ( 'The last submission time for new documents (i.e., version -00 Internet-Drafts) before %s is %s.<br><br>' % (meeting, cutoff_00_str) +
'The last submission time for revisions to existing documents before %s is %s.<br>' % (meeting, cutoff_01_str) )
elif now.date() >= cutoff_00.date() and now <= cutoff_01:
# We are in the first_cut_off
if now < cutoff_00:
self.cutoff_warning = (
'The last submission time for new documents (i.e., version -00 Internet-Drafts) before the meeting is %s.<br/>'
'The last submission time for new documents (i.e., version -00 Internet-Drafts) before the meeting is %s.<br>'
'After that, you will not be able to submit a new document until after %s (IETF-meeting local time)' % (cutoff_00_str, reopen_str, ))
else: # No 00 version allowed
self.cutoff_warning = (
'The last submission time for new documents (i.e., version -00 Internet-Drafts) was %s.<br/>'
'You will not be able to submit a new document until after %s (IETF-meeting local time).<br/><br>'
'The last submission time for new documents (i.e., version -00 Internet-Drafts) was %s.<br>'
'You will not be able to submit a new document until after %s (IETF-meeting local time).<br><br>'
'You can still submit a version -01 or higher Internet-Draft until %s' % (cutoff_00_str, reopen_str, cutoff_01_str, ))
self.in_first_cut_off = True
if now > cutoff_01 and now < reopen:
self.cutoff_warning = (
'The last submission time for the I-D submission was %s.<br/><br>'
'The last submission time for the I-D submission was %s.<br><br>'
'The I-D submission tool will be reopened after %s (IETF-meeting local time).' % (cutoff_01_str, reopen_str))
self.shutdown = True

View file

@ -29,6 +29,8 @@ def show_submission_files(context, submission):
@register.filter
def two_pages_decorated_with_errors(submission, errors):
if not submission.first_two_pages:
return ''
pages = submission.first_two_pages or ''
if 'rev' not in list(errors.keys()):
return mark_safe('<pre>%s</pre>' % escape(pages))

View file

@ -40,7 +40,7 @@
{% endif %}
<form method="post">{% csrf_token %}
<input type="submit" name="send" value="Send reminder" />
<input type="submit" name="send" value="Send reminder">
</form>
{% endif %}
</div>

View file

@ -154,11 +154,11 @@ $ curl 'https://datatracker.ietf.org/api/v1/doc/document/?limit=0&amp;name__cont
available for all documents at the relative url <code>doc.json</code>, e.g.,
<code>{% url 'ietf.doc.views_doc.document_json' name='draft-ietf-poised95-std-proc-3' %}</code>
<a href="{% url 'ietf.doc.views_doc.document_json' name='draft-ietf-poised95-std-proc-3' %}">
<span class="bi bi-box-arrow-up-right"></span>
<i class="bi bi-box-arrow-up-right"></i>
</a>.
You can also specify an RFC: <code>{% url 'ietf.doc.views_doc.document_json' name='rfc2026' %}</code>
<a href="{% url 'ietf.doc.views_doc.document_json' name='rfc2026' %}">
<span class="bi bi-box-arrow-up-right"></span>
<i class="bi bi-box-arrow-up-right"></i>
</a>.
No API key is needed to access this.
</p>

View file

@ -7,16 +7,16 @@
{% load django_bootstrap5 %}
<html lang="en">
<head>
<meta charset="utf-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>
{% block title %}No title{% endblock %}
</title>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<meta name="viewport" content="width=device-width, initial-scale=1">
{% comment Halloween %}
<link href='https://fonts.googleapis.com/css?family=IM+Fell+English+SC|IM+Fell+DW+Pica:400,400italic|Nova+Mono|IM+Fell+English:400,400italic&subset=latin-ext,latin' rel='stylesheet' type='text/css'/>
<link href='https://fonts.googleapis.com/css?family=IM+Fell+English+SC|IM+Fell+DW+Pica:400,400italic|Nova+Mono|IM+Fell+English:400,400italic&subset=latin-ext,latin' rel='stylesheet' type='text/css'>
{% endcomment %}
<link rel="stylesheet" href="{% static 'ietf/css/ietf.css' %}"/>
<link rel="stylesheet" href="{% static 'ietf/css/ietf.css' %}">
<style>
{% block morecss %}{% endblock %}
.leftmenu { width: 13em; }
@ -24,13 +24,13 @@
{% block pagehead %}{% endblock %}
{% if server_mode and server_mode == "production" %}
<link rel="shortcut icon"
href="{% static 'ietf/images/ietf-icon-blue3.png' %}"/>
href="{% static 'ietf/images/ietf-icon-blue3.png' %}">
{% else %}
<link rel="shortcut icon"
href="{% static 'ietf/images/ietf-icon-red3.png' %}"/>
href="{% static 'ietf/images/ietf-icon-red3.png' %}">
{% endif %}
<link rel="apple-touch-icon"
href="{% static 'ietf/images/apple-touch-icon.png' %}"/>
href="{% static 'ietf/images/apple-touch-icon.png' %}">
<script src="{% static 'ietf/js/ietf.js' %}"></script>
</head>
<body {% block bodyAttrs %}{% endblock %} class="position-relative"
@ -39,7 +39,7 @@
<div class="container-fluid">
<a class="navbar-brand" href="/">
<img alt="IETF Logo"
src="{% static 'ietf/images/ietflogo-small-transparent.png' %}"/>
src="{% static 'ietf/images/ietflogo-small-transparent.png' %}">
Datatracker
{% if server_mode and server_mode != "production" %}Dev Mode{% endif %}
</a>
@ -61,9 +61,9 @@
type="text"
name="name"
placeholder="Document search"
required/>
<input type="hidden" name="activedrafts" value="on"/>
<input type="hidden" name="rfcs" value="on"/>
required>
<input type="hidden" name="activedrafts" value="on">
<input type="hidden" name="rfcs" value="on">
</form>
<button class="navbar-toggler"
type="button"
@ -72,7 +72,7 @@
aria-controls="navbar-collapse"
aria-expanded="false"
aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
<i class="navbar-toggler-icon"></i>
</button>
</div>
</nav>
@ -99,7 +99,7 @@
{% block content_end %}{% endblock %}
</div>
</div>
<hr />
<hr>
{% block footer %}
<footer class="col-md-12 col-sm-12 text-center">
<a href="https://www.ietf.org/" class="p-3">IETF</a>
@ -121,15 +121,15 @@
Report a bug:
<a href="https://trac.ietf.org/trac/ietfdb/newticket">
Tracker
<span class="bi bi-bug"></span>
<i class="bi bi-bug"></i>
</a>
{% if bugreport_email %}
<a href="mailto:{{ bugreport_email }}">
Email
<span class="bi bi-envelope"></span>
<i class="bi bi-envelope"></i>
</a>
{% endif %}
<br />
<br>
{% if python_version %}Python {{ python_version }}{% endif %}
{% if django_version %}Django {{ django_version }}{% endif %}
<br>

View file

@ -30,7 +30,7 @@
</a>
{% active_groups_menu flavor %}
</li>
{% if flavor == 'top' %}<li class="dropdown-divider"></li>{% endif %}
{% if flavor == 'top' %}<li><hr class="dropdown-divider"></li>{% endif %}
<li {% if flavor == 'top' %}class="dropdown-header"{% else %}class="nav-item fw-bolder"{% endif %}>New work</li>
<li>
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
@ -50,7 +50,7 @@
BOF Requests
</a>
</li>
{% if flavor == 'top' %}<li class="dropdown-divider"></li>{% endif %}
{% if flavor == 'top' %}<li><hr class="dropdown-divider"></li>{% endif %}
<li {% if flavor == 'top' %}class="dropdown-header"{% else %}class="nav-item fw-bolder"{% endif %}>Other groups</li>
<li>
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
@ -108,7 +108,7 @@
</a>
</li>
{% if user|has_role:"Area Director,Secretariat" %}
{% if flavor == 'top' %}<li class="dropdown-divider"></li>{% endif %}
{% if flavor == 'top' %}<li><hr class="dropdown-divider"></li>{% endif %}
<li>
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
href="{% url 'ietf.doc.views_status_change.rfc_status_changes' %}">
@ -116,7 +116,7 @@
</a>
</li>
{% endif %}
{% if flavor == 'top' %}<li class="dropdown-divider"></li>{% endif %}
{% if flavor == 'top' %}<li><hr class="dropdown-divider"></li>{% endif %}
<li>
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
href="{% url 'ietf.doc.views_ballot.irsg_ballot_status' %}">
@ -124,7 +124,7 @@
</a>
</li>
{% if user|has_role:"WG Chair,RG Chair" %}
{% if flavor == 'top' %}<li class="dropdown-divider"></li>{% endif %}
{% if flavor == 'top' %}<li><hr class="dropdown-divider"></li>{% endif %}
<li {% if flavor == 'top' %}class="dropdown-header"{% else %}class="nav-item fw-bolder"{% endif %}>Manage</li>
<li>
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
@ -151,7 +151,7 @@
{% endif %}
{% if user|has_role:"Review Team Secretary" %}
{% if flavor == 'top' %}
<li class="dropdown-divider">
<li><hr class="dropdown-divider">
</li>
{% endif %}
<li {% if flavor == 'top' %}class="dropdown-header"{% else %}class="nav-item fw-bolder"{% endif %}>
@ -168,7 +168,7 @@
{% endif %}
{% if user|active_nomcoms %}
{% if flavor == 'top' %}
<li class="dropdown-divider">
<li><hr class="dropdown-divider">
</li>
{% endif %}
<li {% if flavor == 'top' %}class="dropdown-header"{% else %}class="nav-item fw-bolder"{% endif %}>
@ -185,7 +185,7 @@
{% endif %}
{% endif %}
{% if flavor == 'top' %}
<li class="dropdown-divider">
<li><hr class="dropdown-divider">
</li>
{% endif %}
<li {% if flavor == 'top' %}class="dropdown-header"{% else %}class="nav-item fw-bolder"{% endif %}>
@ -273,7 +273,7 @@
</li>
{% if flavor == 'top' %}
{% if flavor == 'top' %}
<li class="dropdown-divider">
<li><hr class="dropdown-divider">
</li>
{% endif %}
<li {% if flavor == 'top' %}class="dropdown-header"{% else %}class="nav-item fw-bolder"{% endif %}>
@ -288,7 +288,7 @@
</li>
{% if flavor == 'top' %}
{% if flavor == 'top' %}
<li class="dropdown-divider">
<li><hr class="dropdown-divider">
</li>
{% endif %}
<li {% if flavor == 'top' %}class="dropdown-header"{% else %}class="nav-item fw-bolder"{% endif %}>
@ -404,14 +404,14 @@
</a>
</li>
{% if flavor == 'top' %}
<li class="dropdown-divider">
<li><hr class="dropdown-divider">
</li>
{% endif %}
<li>
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
href="https://trac.ietf.org/trac/ietfdb/newticket">
<span class="bi bi-bug">
</span>
<i class="bi bi-bug">
</i>
Report a bug
</a>
</li>

View file

@ -126,7 +126,7 @@
</li>
{% endif %}
{% if user|has_role:"Area Director" %}
{% if flavor == "top" %}<li class="dropdown-divider"></li>{% endif %}
{% if flavor == "top" %}<li><hr class="dropdown-divider"></li>{% endif %}
<li {% if flavor == "top" %}class="dropdown-header"{% else %}class="nav-item fw-bolder"{% endif %}>AD dashboard</li>
<li>
<a class="dropdown-item {% if flavor != 'top' %} text-wrap link-primary{% endif %}"
@ -160,7 +160,7 @@
</li>
{% endif %}
{% if user|has_role:"Secretariat" %}
{% if flavor == "top" %}<li class="dropdown-divider"></li>{% endif %}
{% if flavor == "top" %}<li><hr class="dropdown-divider"></li>{% endif %}
<li {% if flavor == "top" %}class="dropdown-header"{% else %}class="nav-item fw-bolder"{% endif %}>
IETF secretariat
</li>
@ -197,7 +197,7 @@
{% endif %}
{% if user|has_role:"IANA" %}
{% if flavor == "top" %}
<li class="dropdown-divider">
<li><hr class="dropdown-divider">
</li>
{% endif %}
<li {% if flavor == "top" %}class="dropdown-header"{% else %}class="nav-item fw-bolder"{% endif %}>
@ -212,7 +212,7 @@
{% endif %}
{% if user|has_role:"RFC Editor" %}
{% if flavor == "top" %}
<li class="dropdown-divider">
<li><hr class="dropdown-divider">
</li>
{% endif %}
<li {% if flavor == "top" %}class="dropdown-header"{% else %}class="nav-item fw-bolder"{% endif %}>
@ -225,4 +225,4 @@
</a>
</li>
{% endif %}
{% if flavor == "top" %}</ul>{% endif %}
{% if flavor == "top" %}</ul>{% endif %}

View file

@ -58,7 +58,7 @@
{% else %}
<p>
Conveniently track individual documents in your personal list with the track icon
<span class="bi bi-bookmark"></span>
<i class="bi bi-bookmark"></i>
in
<a href="/doc/search/">search results</a>.
</p>

View file

@ -1,9 +1,9 @@
{# bs5ok #}
<!doctype html>
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}
{% origin %}
{% load ietf_filters %}
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">

View file

@ -49,14 +49,12 @@
<td>{{ req.title }}</td>
<td>
{% for person in req.responsible %}
{% person_link person %}
{% if not forloop.last %},{% endif %}
{% person_link person %}{% if not forloop.last %},{% endif %}
{% endfor %}
</td>
<td>
{% for person in req.editors %}
{% person_link person %}
{% if not forloop.last %},{% endif %}
{% person_link person %}{% if not forloop.last %},{% endif %}
{% endfor %}
</td>
</tr>

View file

@ -48,9 +48,9 @@
{% csrf_token %}
<input type="hidden"
name="charter_state"
value="{{ prev_charter_state.pk }}"/>
<input type="hidden" name="state" value="{{ prev_state.slug }}" />
<input type="submit" value="Back to {{ prev_charter_state.name }}" />
value="{{ prev_charter_state.pk }}">
<input type="hidden" name="state" value="{{ prev_state.slug }}">
<input type="submit" value="Back to {{ prev_charter_state.name }}">
</form>
</div>
{% endif %}

View file

@ -22,15 +22,15 @@
<input type="submit"
class="btn btn-primary"
name="send_annc_only"
value="Send only to IETF-Announce"/>
value="Send only to IETF-Announce">
<input type="submit"
class="btn btn-primary"
name="send_nw_only"
value="Send only to New-Work"/>
value="Send only to New-Work">
<input type="submit"
class="btn btn-primary"
name="send_both"
value="Send to both"/>
value="Send to both">
{% endif %}
<a class="btn btn-secondary float-end" href="{{ back_url }}">Back</a>
</form>

View file

@ -44,6 +44,7 @@
</td>
</tr>
</tbody>
{% if group.personnel %}
<tbody class="meta border-top">
{% for slug, label, roles in group.personnel %}
<tr>
@ -62,6 +63,7 @@
</tr>
{% endfor %}
</tbody>
{% endif %}
{% if group.list_email %}
<tbody class="meta border-top">
<tr>

View file

@ -123,17 +123,17 @@
{% if not p.for_current_revision %}for -{{ p.get_dochistory.rev }}{% endif %}
)
{% if p.send_email %}
<span class="bi bi-envelope float-end"
title="Email requested to be sent for this discuss"></span>
<i class="bi bi-envelope float-end"
title="Email requested to be sent for this discuss"></i>
{% elif p.any_email_sent == True %}
<span class="bi bi-envelope float-end"
title="Email requested to be sent for earlier discuss"></span>
<i class="bi bi-envelope float-end"
title="Email requested to be sent for earlier discuss"></i>
{% elif p.any_email_sent == False %}
<span class="bi bi-chat-o float-end"
title="No email send requests for this discuss"></span>
<i class="bi bi-chat-o float-end"
title="No email send requests for this discuss"></i>
{% else %}
<span class="bi bi-chat-o float-end"
title="No email send requests for this discuss"></span>
<i class="bi bi-chat-o float-end"
title="No email send requests for this discuss"></i>
{% endif %}
</div>
</div>
@ -150,17 +150,17 @@
{% if not p.for_current_revision %}for -{{ p.get_dochistory.rev }}{% endif %}
)
{% if p.send_email %}
<span class="bi bi-envelope-check float-end"
title="Email requested to be sent for this comment"></span>
<i class="bi bi-envelope-check float-end"
title="Email requested to be sent for this comment"></i>
{% elif p.any_email_sent == True %}
<span class="bi bi-envelope-plus float-end"
title="Email requested to be sent for earlier comment"></span>
<i class="bi bi-envelope-plus float-end"
title="Email requested to be sent for earlier comment"></i>
{% elif p.any_email_sent == False %}
<span class="bi bi-envelope-dash float-end"
title="No email send requests for this comment"></span>
<i class="bi bi-envelope-dash float-end"
title="No email send requests for this comment"></i>
{% else %}
<span class="bi bi-envelope-exclamation float-end"
title="No ballot position send log available"></span>
<i class="bi bi-envelope-exclamation float-end"
title="No ballot position send log available"></i>
{% endif %}
</div>
</div>
@ -203,19 +203,19 @@
)
{% endif %}
{% if p.send_email %}
<span class="bi bi-envelope float-end"
title="Email requested to be sent for this ballot position"></span>
<i class="bi bi-envelope float-end"
title="Email requested to be sent for this ballot position"></i>
{% elif p.any_email_sent == True %}
<span class="bi bi-envelope float-end"
title="Email requested to be sent for earlier ballot position"></span>
<i class="bi bi-envelope float-end"
title="Email requested to be sent for earlier ballot position"></i>
{% elif p.any_email_sent == False %}
<span class="bi bi-chat-o float-end"
title="No email send requests for this ballot position"></span>
<i class="bi bi-chat-o float-end"
title="No email send requests for this ballot position"></i>
{% else %}
<div class="float-end small italic"
title="No ballot position send log available">
No email
<br />
<br>
send info
</div>
{% endif %}

View file

@ -4,7 +4,7 @@
{% load origin %}
{% load static %}
{% load ietf_filters %}
{% load person_filters %}
{% load person_filters textfilters %}
{% block title %}{{ doc.title }}{% endblock %}
{% block content %}
{% origin %}
@ -73,8 +73,7 @@
</td>
<td>
{% for editor in editors %}
{% person_link editor %}
{% if not forloop.last %},{% endif %}
{% person_link editor %}{% if not forloop.last %},{% endif %}
{% endfor %}
</td>
</tr>
@ -90,8 +89,7 @@
</td>
<td>
{% for leader in responsible %}
{% person_link leader %}
{% if not forloop.last %},{% endif %}
{% person_link leader %}{% if not forloop.last %},{% endif %}
{% endfor %}
</td>
</tr>
@ -158,7 +156,7 @@
{{ doc.name }}-{{ doc.rev }}
</div>
<div class="card-body">
{{ content|sanitize|safe }}
{{ content|linkify|urlize_ietf_docs }}
</div>
</div>
{% endblock %}

View file

@ -4,7 +4,7 @@
{% load origin %}
{% load static %}
{% load ietf_filters %}
{% load person_filters %}
{% load person_filters textfilters %}
{% block pagehead %}
<link rel="alternate"
type="application/atom+xml"
@ -227,8 +227,7 @@
{{ doc.canonical_name }}-{{ doc.rev }}
</div>
<div class="card-body">
{# this content is already wrapped in 'pre' #}
{{ content|sanitize|maybewordwrap|safe }}
<pre>{{ content|maybewordwrap|linkify|urlize_ietf_docs }}</pre>
</div>
</div>
{% endif %}

View file

@ -139,7 +139,7 @@
{{ doc.name }}-{{ doc.rev }}
</div>
<div class="card-body">
{{ content|sanitize|maybewordwrap|safe }}
<pre>{{ content|maybewordwrap|linkify|urlize_ietf_docs }}</pre>
</div>
</div>
{% endif %}

View file

@ -96,8 +96,7 @@
<td>
{# Implementation that uses the current primary email for each author #}
{% for author in doc.authors %}
{% person_link author %}
{% if not forloop.last %},{% endif %}
{% person_link author %}{% if not forloop.last %},{% endif %}
{% endfor %}
</td>
</tr>
@ -245,8 +244,8 @@
{% if file_urls %}
{% for label, url in file_urls %}
<a class="btn btn-primary btn-sm" href="{{ url }}">
<span class="bi bi-file-{% if label == "pdf" %}pdf{% elif label == "xml" or label == "htmlized" %}code{% elif label == "bibtex" %}ruled{% elif label == "plain text" %}text{% endif %}">
</span>
<i class="bi bi-file-{% if label == "pdf" %}pdf{% elif label == "xml" or label == "htmlized" %}code{% elif label == "bibtex" %}ruled{% elif label == "plain text" %}text{% endif %}">
</i>
{{ label }}
</a>
{% endfor %}
@ -306,8 +305,7 @@
{% endfor %}
{% if no_review_from_teams %}
{% for team in no_review_from_teams %}
{{ team.acronym.upper }}
{% if not forloop.last %},{% endif %}
{{ team.acronym.upper }}{% if not forloop.last %},{% endif %}
{% endfor %}
will not review this version
{% endif %}
@ -316,23 +314,23 @@
{% if can_request_review %}
<a class="btn btn-primary btn-sm"
href="{% url "ietf.doc.views_review.request_review" doc.name %}">
<span class="bi bi-check-circle">
</span>
<i class="bi bi-check-circle">
</i>
Request review
</a>
{% endif %}
{% if can_submit_unsolicited_review_for_teams|length == 1 %}
<a class="btn btn-primary btn-sm"
href="{% url "ietf.doc.views_review.complete_review" doc.name can_submit_unsolicited_review_for_teams.0.acronym %}">
<span class="bi bi-pencil-square">
</span>
<i class="bi bi-pencil-square">
</i>
Submit unsolicited review
</a>
{% elif can_submit_unsolicited_review_for_teams %}
<a class="btn btn-primary btn-sm"
href="{% url "ietf.doc.views_review.submit_unsolicited_review_choose_team" doc.name %}">
<span class="bi bi-pencil-square">
</span>
<i class="bi bi-pencil-square">
</i>
Submit unsolicited review
</a>
{% endif %}
@ -444,16 +442,14 @@
<span title="{{ m.desc }} ({{ m.group.acronym }} milestone)"
class="milestone">
{{ m.due|date:"M Y" }} - {{m }}
</span>
{% if not forloop.last %},{% endif %}
</span>{% if not forloop.last %},{% endif %}
{% endfor %}
)
{% endif %}
{% if stream_tags %}
<div class="stream-tags">
{% for tag in stream_tags %}
{{ tag.name }}
{% if not forloop.last %},{% endif %}
{{ tag.name }}{% if not forloop.last %},{% endif %}
{% endfor %}
</div>
{% endif %}
@ -512,12 +508,11 @@
{% if presentations %}
{% for pres in presentations %}
<a href="{% url 'ietf.meeting.views.agenda_ical' num=pres.session.meeting.number session_id=pres.session.id %}">
<span class="bi bi-calendar">
</span>
<i class="bi bi-calendar">
</i>
</a>
{{ pres.session.short_name }} at {{ pres.session.meeting }}
{% if pres.rev and pres.rev != doc.rev %}(version -{{ pres.rev }}){% endif %}
{% if not forloop.last %},{% endif %}
{% if pres.rev and pres.rev != doc.rev %}(version -{{ pres.rev }}){% endif %}{% if not forloop.last %},{% endif %}
{% endfor %}
{% else %}
<span class="text-muted">
@ -674,8 +669,8 @@
{% if can_edit %}
<a class="btn btn-primary btn-sm mt-3"
href="{% url "ietf.doc.views_doc.remind_action_holders" name=doc.name %}">
<span class="bi bi-envelope">
</span>
<i class="bi bi-envelope">
</i>
Send reminder email
</a>
{% endif %}
@ -939,8 +934,8 @@
{% endif %}
</tbody>
{% endif %}
<tbody class="meta border-top">
{% if rfc_editor_state %}
{% if rfc_editor_state %}
<tbody class="meta border-top">
<tr>
<th>
RFC Editor
@ -981,29 +976,29 @@
<td>
</td>
</tr>
{% endif %}
</tbody>
</tbody>
{% endif %}
</table>
<div class="buttonlist">
<a class="btn btn-primary btn-sm"
href="mailto:{{ doc.name }}@ietf.org?subject=Mail%20regarding%20{{ doc.name }}">
<span class="bi bi-envelope">
</span>
<i class="bi bi-envelope">
</i>
Email authors
</a>
{% if doc.group.type.slug == 'wg' or doc.group.type.slug == 'rg' %}
<a class="btn btn-primary btn-sm"
href="mailto:{{ doc.group.list_email }}?subject=Mail%20regarding%20{{ doc.name }}">
<span class="bi bi-envelope">
</span>
<i class="bi bi-envelope">
</i>
Email {{ doc.group.type }}
</a>
{% endif %}
<a class="btn btn-primary btn-sm"
href="{% url "ietf.ipr.views.search" %}?submit=draft&amp;id={{ doc.name }}"
rel="nofollow">
<span class="bi bi-lightning">
</span>
<i class="bi bi-lightning">
</i>
IPR
{% if doc.related_ipr %}
<span class="badge">
@ -1014,23 +1009,23 @@
<a class="btn btn-primary btn-sm"
href="{% url 'ietf.doc.views_doc.document_references' doc.canonical_name %}"
rel="nofollow">
<span class="bi bi-arrow-left">
</span>
<i class="bi bi-arrow-left">
</i>
References
</a>
<a class="btn btn-primary btn-sm"
href="{% url 'ietf.doc.views_doc.document_referenced_by' doc.canonical_name %}"
rel="nofollow">
<span class="bi bi-arrow-right">
</span>
<i class="bi bi-arrow-right">
</i>
Referenced by
</a>
<a class="btn btn-primary btn-sm"
href="{{ settings.IDNITS_BASE_URL }}?url=https://www.ietf.org/archive/id/{{ doc.filename_with_rev }}"
rel="nofollow"
target="_blank">
<span class="bi bi-exclamation">
</span>
<i class="bi bi-exclamation">
</i>
Nits
</a>
<div class="dropdown inline">
@ -1039,11 +1034,11 @@
id="ddSearchMenu"
data-bs-toggle="dropdown"
aria-expanded="true">
<span class="bi bi-search">
</span>
<i class="bi bi-search">
</i>
Search lists
<span class="caret">
</span>
<i class="caret">
</i>
</button>
<ul class="dropdown-menu" role="menu">
<li role="presentation">
@ -1078,15 +1073,15 @@
<a class="btn btn-primary btn-sm track-untrack-doc {% if not doc.tracked_in_personal_community_list %}hide{% endif %}"
href="{% url "ietf.community.views.untrack_document" username=user.username name=doc.name %}"
title="Remove from your personal ID list">
<span class="bi bi-bookmark-check-fill">
</span>
<i class="bi bi-bookmark-check-fill">
</i>
Untrack
</a>
<a class="btn btn-primary btn-sm track-untrack-doc {% if doc.tracked_in_personal_community_list %}hide{% endif %}"
href="{% url "ietf.community.views.track_document" username=user.username name=doc.name %}"
title="Add to your personal ID list">
<span class="bi bi-bookmark">
</span>
<i class="bi bi-bookmark">
</i>
Track
</a>
{% endif %}
@ -1094,15 +1089,15 @@
<a class="btn btn-primary btn-sm review-wish-add-remove-doc ajax {% if not doc.has_review_wish %}hide{% endif %}"
href="{% url "ietf.doc.views_review.review_wishes_remove" name=doc.name %}?next={{ request.get_full_path|urlencode }}"
title="Remove from your review wishes for all teams">
<span class="bi bi-chats">
</span>
<i class="bi bi-chats">
</i>
Remove review wishes
</a>
<a class="btn btn-primary btn-sm review-wish-add-remove-doc {% if user.review_teams|length_is:"1" %}ajax {% endif %}{% if doc.has_review_wish %}hide{% endif %}"
href="{% url "ietf.doc.views_review.review_wish_add" name=doc.name %}?next={{ request.get_full_path|urlencode }}"
title="Add to your review wishes">
<span class="bi bi-chats">
</span>
<i class="bi bi-chats">
</i>
Add review wish
</a>
{% endif %}
@ -1138,13 +1133,13 @@
{% endif %}
</div>
<div class="card-body">
{{ content|sanitize|safe }}
<pre>{{ content|sanitize|safe|default:"(Unavailable)" }}</pre>
</div>
</div>
{% if split_content %}
<a class="btn btn-primary my-3" href="?include_text=1">
<span class="bi bi-caret-down">
</span>
<i class="bi bi-caret-down">
</i>
Show full document text
</a>
{% endif %}
@ -1153,7 +1148,7 @@
<div class="card-header bg-warning">
<b>This Internet-Draft is no longer active. A copy of
the expired Internet-Draft can be found at:</b>
<br />
<br>
<a href="{{ doc.get_href }}">
{{ doc.get_href }}
</a>

View file

@ -11,7 +11,7 @@
{% block pagehead %}
<link rel="alternate"
type="application/atom+xml"
href="/feed/document-changes/{{ doc.name }}/"/>
href="/feed/document-changes/{{ doc.name }}/">
<link rel="stylesheet" href="{% static "ietf/css/list.css" %}">
{% endblock %}
{% block content %}
@ -104,7 +104,7 @@
<div class="buttonlist">
<a class="btn btn-primary"
href="{% url 'ietf.doc.views_doc.add_comment' name=doc.name %}">
<span class="bi bi-plus"></span>
<i class="bi bi-plus"></i>
Add comment
</a>
</div>

View file

@ -3,7 +3,7 @@
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}
{% load static %}
{% load ietf_filters %}
{% load ietf_filters textfilters %}
{% block title %}{{ doc.title }}{% endblock %}
{% block content %}
{% origin %}
@ -92,8 +92,7 @@
{% if presentations %}
{% for pres in presentations %}
{{ pres.session.short_name }} at {{ pres.session.meeting }}
{% if pres.rev != doc.rev %}(version -{{ pres.rev }}){% endif %}
{% if not forloop.last %},{% endif %}
{% if pres.rev != doc.rev %}(version -{{ pres.rev }}){% endif %}{% if not forloop.last %},{% endif %}
{% endfor %}
{% else %}
None
@ -124,7 +123,7 @@
{% if content_is_html %}
{{ content|sanitize|safe }}
{% else %}
<pre>{{ content|sanitize|maybewordwrap|safe }}</pre>
<pre>{{ content|maybewordwrap|linkify|urlize_ietf_docs }}</pre>
{% endif %}
{% else %}
Not available as plain text.

View file

@ -54,13 +54,13 @@
<a class="btn btn-primary btn-sm"
href="{% url 'ietf.doc.views_doc.document_references' name %}"
rel="nofollow">
<span class="bi bi-arrow-left"></span>
<i class="bi bi-arrow-left"></i>
References
</a>
<a class="btn btn-primary btn-sm"
href="{% url 'ietf.doc.views_doc.document_referenced_by' name %}"
rel="nofollow">
<span class="bi bi-arrow-right"></span>
<i class="bi bi-arrow-right"></i>
Referenced by
</a>
</td>

View file

@ -41,13 +41,13 @@
<a class="btn btn-primary btn-sm"
href="{% url 'ietf.doc.views_doc.document_references' name %}"
rel="nofollow">
<span class="bi bi-arrow-left"></span>
<i class="bi bi-arrow-left"></i>
References
</a>
<a class="btn btn-primary btn-sm"
href="{% url 'ietf.doc.views_doc.document_referenced_by' name %}"
rel="nofollow">
<span class="bi bi-arrow-right"></span>
<i class="bi bi-arrow-right"></i>
Referenced by
</a>
</td>

View file

@ -14,35 +14,37 @@
{% if doc.rev != latest_rev %}
<div class="alert alert-warning my-3">The information below is for an old version of the document.</div>
{% endif %}
<table class="table table-sm table-borderless">
<tbody class="meta border-top">
{% if doc.get_state_slug != "active" %}
<tr>
<th></th>
<th>State</th>
<td class="edit"></td>
<td>{{ doc.get_state.name }}</td>
</tr>
{% endif %}
{% if other_reviews %}
<tr>
<th></th>
<th>Other reviews</th>
<td class="edit"></td>
<td>
{% for review_assignment in other_reviews %}
{% include "doc/review_assignment_summary.html" with current_doc_name=review_assignemnt.review_request.doc.name current_rev=review_assignment.reviewed_rev %}
{% endfor %}
</td>
</tr>
{% endif %}
</tbody>
</table>
{% if doc.get_state_slug != "active" or other_reviews %}
<table class="table table-sm table-borderless">
<tbody class="meta border-top">
{% if doc.get_state_slug != "active" %}
<tr>
<th></th>
<th>State</th>
<td class="edit"></td>
<td>{{ doc.get_state.name }}</td>
</tr>
{% endif %}
{% if other_reviews %}
<tr>
<th></th>
<th>Other reviews</th>
<td class="edit"></td>
<td>
{% for review_assignment in other_reviews %}
{% include "doc/review_assignment_summary.html" with current_doc_name=review_assignemnt.review_request.doc.name current_rev=review_assignment.reviewed_rev %}
{% endfor %}
</td>
</tr>
{% endif %}
</tbody>
</table>
{% endif %}
{% if doc.rev and content != None %}
<div class="card mt-5">
<div class="card-header">{{ doc.name }}-{{ doc.rev }}</div>
<div class="card-body">
<pre class="pasted">{{ content|linkify|urlize_ietf_docs }}</pre>
<pre class="pasted">{{ content|maybewordwrap|linkify|urlize_ietf_docs }}</pre>
</div>
</div>
{% endif %}

View file

@ -53,8 +53,7 @@
<td class="edit"></td>
<td>
{% for rel in relation_group.list %}
{{ rel.target.document.canonical_name|upper|urlize_ietf_docs }}
{% if not forloop.last %},{% endif %}
{{ rel.target.document.canonical_name|upper|urlize_ietf_docs }}{% if not forloop.last %},{% endif %}
{% endfor %}
</td>
</tr>
@ -164,7 +163,7 @@
{{ doc.name }}-{{ doc.rev }}
</div>
<div class="card-body">
<pre> {{ content|sanitize|maybewordwrap|safe }}</pre>
<pre>{{ content|maybewordwrap|linkify|urlize_ietf_docs }}</pre>
</div>
</div>
{% endif %}

View file

@ -56,8 +56,7 @@
<br>
Action holder{{ doc.documentactionholder_set.all|pluralize }}:
{% for action_holder in doc.documentactionholder_set.all %}
{% person_link action_holder.person title=action_holder.role_for_doc %} {{ action_holder|action_holder_badge }}
{% if not forloop.last %},{% endif %}
{% person_link action_holder.person title=action_holder.role_for_doc %} {{ action_holder|action_holder_badge }}{% if not forloop.last %},{% endif %}
{% endfor %}
{% endif %}
{% if doc.note %}

View file

@ -29,7 +29,7 @@
{% for form in formset %}
<div class="card author-panel mb-3">
<div role="button" class="handle card-header">
<span class="bi bi-list"></span>
<i class="bi bi-list"></i>
</div>
<div class="card-body draggable">
<div class="form-horizontal">{% bootstrap_form form layout='horizontal' %}</div>
@ -40,7 +40,7 @@
<div id="empty-author-form" class="template" style="display: none;">
<div class="card author-panel mb-3">
<div role="button" class="handle card-header">
<span class="bi bi-list"></span>
<i class="bi bi-list"></i>
</div>
<div class="card-body draggable">
<div class="form-horizontal">{% bootstrap_form formset.empty_form layout='horizontal' %}</div>

View file

@ -23,7 +23,7 @@
<p>
The IETF Datatracker is the day-to-day front-end to the IETF database for people
who work on IETF standards.
<br />
<br>
It contains data about the documents, working groups,
meetings, agendas, minutes, presentations, and more, of the IETF.
</p>

View file

@ -18,14 +18,16 @@
<th data-sort="status">Status</th>
</tr>
</thead>
<tbody>
{% for doc in docs %}
<tr>
<td>{{ doc.displayname_with_link }}</td>
{% include "doc/search/status_columns.html" %}
</tr>
{% endfor %}
</tbody>
{% if docs %}
<tbody>
{% for doc in docs %}
<tr>
<td>{{ doc.displayname_with_link }}</td>
{% include "doc/search/status_columns.html" %}
</tr>
{% endfor %}
</tbody>
{% endif %}
</table>
{% endblock %}
{% block js %}

View file

@ -20,10 +20,8 @@
This reminder will be sent to
{% for person in doc.action_holders.all %}
{% if forloop.last and not forloop.first %}and{% endif %}
{% person_link person %}
{% if not forloop.last %},{% endif %}
{% endfor %}
.
{% person_link person %}{% if not forloop.last %},{% endif %}
{% endfor %}.
</p>
<button type="submit"
class="btn btn-primary"

View file

@ -117,10 +117,10 @@
<div class="list-group"></div>
</div>
<div class="error alert alert-warning visually-hidden my-3">
<span class="content"></span>
<span class="content">&nbsp;</span>
<span class="visually-hidden try-yourself">
(searched for
<a class="query-url" href="#">"<span class="query"></span>"</a>,
<a class="query-url" href="#">"<span class="query">&nbsp;</span>"</a>,
corresponding
<a class="query-data-url" href="#">export</a>).
</span>
@ -137,9 +137,9 @@
{% spaceless %}
<div class="template" style="display:none">
<button type="button" class="mail-archive-search-result list-group-item">
<small class="date float-end"></small>
<small class="from float-end"></small>
<span class="subject"></span>
<small class="date float-end">&nbsp;</small>
<small class="from float-end">&nbsp;</small>
<span class="subject">&nbsp;</span>
</button>
</div>
{% endspaceless %}

View file

@ -59,7 +59,7 @@
{% if can_edit_deadline %}
<a class="btn btn-primary btn-sm"
href="{% url "ietf.doc.views_review.edit_deadline" name=doc.name request_id=review_req.pk %}">
<span class="bi bi-pencil"></span>
<i class="bi bi-pencil"></i>
Edit
</a>
{% endif %}
@ -83,8 +83,7 @@
<th>Authors</th>
<td>
{% for author in review_req.doc.authors %}
{% person_link author %}
{% if not forloop.last %},{% endif %}
{% person_link author %}{% if not forloop.last %},{% endif %}
{% endfor %}
</td>
</tr>
@ -95,8 +94,7 @@
<th>WG chairs</th>
<td>
{% for chair in wg_chairs %}
{% person_link chair %}
{% if not forloop.last %},{% endif %}
{% person_link chair %}{% if not forloop.last %},{% endif %}
{% endfor %}
</td>
</tr>
@ -160,8 +158,8 @@
{% if can_edit_comment %}
<a class="btn btn-primary btn-sm"
href="{% url "ietf.doc.views_review.edit_comment" name=doc.name request_id=review_req.pk %}">
<span class="bi bi-pencil">
</span>
<i class="bi bi-pencil">
</i>
Edit comment
</a>
{% endif %}
@ -192,8 +190,8 @@
{% if assignment.can_reject_reviewer_assignment %}
<a class="btn btn-danger btn-sm"
href="{% url "ietf.doc.views_review.reject_reviewer_assignment" name=doc.name assignment_id=assignment.pk %}">
<span class="bi bi-x-circle">
</span>
<i class="bi bi-x-circle">
</i>
Reject
</a>
{% endif %}
@ -206,8 +204,8 @@
type="submit"
name="action"
value="accept">
<span class="bi bi-check">
</span>
<i class="bi bi-check">
</i>
Accept
</button>
</form>
@ -254,8 +252,8 @@
{% if assignment.can_complete_review %}
<a class="btn btn-primary btn-sm"
href="{% url "ietf.doc.views_review.complete_review" name=doc.name assignment_id=assignment.pk %}">
<span class="bi bi-pencil">
</span>
<i class="bi bi-pencil">
</i>
{% if assignment.state_id == "assigned" or assignment.state_id == "accepted" %}
Complete review
{% else %}
@ -267,14 +265,14 @@
{% if can_assign_reviewer %}
<a class="btn btn-danger btn-sm"
href="{% url "ietf.doc.views_review.mark_reviewer_assignment_no_response" name=doc.name assignment_id=assignment.pk %}">
<span class="bi bi-question-circle">
</span>
<i class="bi bi-question-circle">
</i>
No response
</a>
<a class="btn btn-danger btn-sm"
href="{% url "ietf.doc.views_review.withdraw_reviewer_assignment" name=doc.name assignment_id=assignment.pk %}">
<span class="bi bi-x-circle">
</span>
<i class="bi bi-x-circle">
</i>
Withdraw
</a>
{% endif %}
@ -342,8 +340,8 @@
{% if can_assign_reviewer %}
<a class="btn btn-primary"
href="{% url "ietf.doc.views_review.assign_reviewer" name=doc.name request_id=review_req.pk %}">
<span class="bi bi-forward">
</span>
<i class="bi bi-forward">
</i>
Assign reviewer
</a>
{% endif %}

View file

@ -17,7 +17,7 @@
{% if can_close_request %}
<a class="btn btn-danger"
href="{% url "ietf.doc.views_review.close_request" name=doc.name request_id=review_req.pk %}">
<span class="bi bi-x-circle"></span>
<i class="bi bi-x-circle"></i>
Close request
</a>
{% endif %}
@ -31,17 +31,15 @@
<th data-sort="description">Description</th>
</tr>
</thead>
<tbody>
{% for h in history %}
{% if h.history_change_reason %}
<tr>
<td>{{ h.history_date|date }}</td>
<td>{% person_link h.history_user.person %}</td>
<td>{{ h.history_change_reason }}</td>
</tr>
{% endif %}
{% endfor %}
</tbody>
{% for h in history %}
{% if h.history_change_reason %}
<tr>
<td>{{ h.history_date|date }}</td>
<td>{% person_link h.history_user.person %}</td>
<td>{{ h.history_change_reason }}</td>
</tr>
{% endif %}
{% endfor %}
</table>
</div>
{% endblock %}

View file

@ -7,8 +7,10 @@
{% origin %}
<h1>
Remove review wish
<br>
<small class="text-muted">{{ doc.name }}</small>
{% if doc.name %}
<br>
<small class="text-muted">{{ doc.name }}</small>
{% endif %}
</h1>
<form class="my-3" method="post">
{% csrf_token %}

View file

@ -12,7 +12,7 @@
{{ form.name|add_class:"form-control"|attr:"placeholder:Document name/title/RFC number" }}
<span class="input-group-btn">
<button class="btn btn-primary" type="submit">
<span class="bi bi-search"/>
<i class="bi bi-search"></i>
Search
</button>
</span>
@ -59,7 +59,7 @@
{% if value in form.doctypes.value %}checked{% endif %}
name="doctypes"
value="{{ value }}"
id="id_doctypes_{{ value }}"/>
id="id_doctypes_{{ value }}">
<label class="form-check-label" for="id_doctypes_{{ value }}">{{ label|safe|capfirst_allcaps }}</label>
</div>
{% endfor %}
@ -73,7 +73,7 @@
name="by"
value="author"
{% if form.by.value == "author" %}checked{% endif %}
id="author"/>
id="author">
<label for="author" class="form-check-label fw-bold">Author or Affiliation Name</label>
</div>
</div>
@ -87,7 +87,7 @@
name="by"
value="group"
{% if form.by.value == "group" %}checked{% endif %}
id="group"/>
id="group">
<label for="group" class="form-check-label fw-bold">WG</label>
</div>
</div>
@ -101,7 +101,7 @@
name="by"
value="area"
{% if form.by.value == "area" %}checked{% endif %}
id="area"/>
id="area">
<label for="area" class="form-check-label fw-bold">Area</label>
</div>
</div>
@ -115,7 +115,7 @@
name="by"
value="ad"
{% if form.by.value == "ad" %}checked{% endif %}
id="areadir"/>
id="areadir">
<label for="areadir" class="form-check-label fw-bold">AD</label>
</div>
</div>
@ -129,7 +129,7 @@
name="by"
value="state"
{% if form.by.value == "state" %}checked{% endif %}
id="state"/>
id="state">
<label for="state" class="form-check-label fw-bold">IESG State</label>
</div>
</div>
@ -144,7 +144,7 @@
name="by"
value="irtfstate"
{% if form.by.value == "irtfstate" %}checked{% endif %}
id="irtfstate"/>
id="irtfstate">
<label for="irtfstate" class="form-check-label fw-bold">IRTF State</label>
</div>
</div>
@ -158,7 +158,7 @@
name="by"
value="stream"
{% if form.by.value == "stream" %}checked{% endif %}
id="stream"/>
id="stream">
<label for="stream" class="form-check-label fw-bold">Stream</label>
</div>
</div>
@ -167,7 +167,7 @@
<div class="row mb-3 search_field">
<div class="col-sm-4 d-grid">
<button class="btn btn-primary" type="submit">
<span class="bi bi-search"/>
<i class="bi bi-search"></i>
Search
</button>
</div>

View file

@ -17,12 +17,12 @@
<a href="{% url "ietf.community.views.untrack_document" username=request.user.username name=doc.name %}"
class="track-untrack-doc {% if not doc.tracked_in_personal_community_list %}visually-hidden{% endif %}"
title="Remove from your personal ID list">
<span class="bi bi-bookmark-check-fill"></span>
<i class="bi bi-bookmark-check-fill"></i>
</a>
<a href="{% url "ietf.community.views.track_document" username=request.user.username name=doc.name %}"
class="track-untrack-doc {% if doc.tracked_in_personal_community_list %}visually-hidden{% endif %}"
title="Add to your personal ID list">
<span class="bi bi-bookmark"></span>
<i class="bi bi-bookmark"></i>
</a>
<br>
{% endif %}
@ -30,19 +30,19 @@
<a class="review-wish-add-remove-doc ajax {% if not doc.has_review_wish %}visually-hidden{% endif %}"
href="{% url "ietf.doc.views_review.review_wishes_remove" name=doc.name %}?next={{ request.get_full_path|urlencode }}"
title="Remove from your review wishes for all teams">
<span class="bi bi-chats"></span>
<i class="bi bi-chats"></i>
</a>
<a class="review-wish-add-remove-doc {% if user.review_teams|length_is:"1" %}ajax {% endif %} {% if doc.has_review_wish %}visually-hidden{% endif %}"
href="{% url "ietf.doc.views_review.review_wish_add" name=doc.name %}?next={{ request.get_full_path|urlencode }}"
title="Add to your review wishes">
<span class="bi bi-chats-o"></span>
<i class="bi bi-chats-o"></i>
</a>
<br>
{% endif %}
{% for session in doc.sessions %}
<a href="{% url 'ietf.meeting.views.agenda_ical' num=session.meeting.number session_id=session.id %}"
title="Calendar entry: document is on the agenda for {{ session.group.acronym }}@{{ session.meeting }}">
<span class="bi bi-calendar"></span>
<i class="bi bi-calendar"></i>
</a>
{% endfor %}
</td>

View file

@ -24,9 +24,9 @@
{{ h.title|cut:" " }}
{% if h.sorted and meta.max %}
{% if h.direction == "asc" %}
<span class="bi bi-caret-up"></span>
<i class="bi bi-caret-up"></i>
{% else %}
<span class="bi bi-caret-down"></span>
<i class="bi bi-caret-down"></i>
{% endif %}
{% endif %}
</a>

View file

@ -56,23 +56,20 @@
Review{{ doc.reviewed_by_teams|pluralize }}:
{% spaceless %}
{% for acronym in doc.reviewed_by_teams %}
<a href="{% url "ietf.group.views.group_home" acronym=acronym %}">{{ acronym }}</a>
{% if not forloop.last %},{% endif %}
<a href="{% url "ietf.group.views.group_home" acronym=acronym %}">{{ acronym }}</a>{% if not forloop.last %},{% endif %}
{% endfor %}
{% endspaceless %}
{% endif %}
{% for m in doc.milestones %}
{% if forloop.first %}<br>{% endif %}
<span title="Part of {{ m.group.acronym }} milestone: {{ m.desc }}"
class="milestone">{{ m.due|date:"M Y" }}</span>
{% if not forloop.last %},{% endif %}
class="milestone">{{ m.due|date:"M Y" }}</span>{% if not forloop.last %},{% endif %}
{% endfor %}
{% if doc.action_holders_enabled and doc.action_holders.exists %}
<br>
Action Holder{{ doc.documentactionholder_set.all|pluralize }}:
{% for action_holder in doc.documentactionholder_set.all %}
{% person_link action_holder.person title=action_holder.role_for_doc %} {{ action_holder|action_holder_badge }}
{% if not forloop.last %},{% endif %}
{% person_link action_holder.person title=action_holder.role_for_doc %} {{ action_holder|action_holder_badge }}{% if not forloop.last %},{% endif %}
{% endfor %}
{% endif %}
{% else %}

View file

@ -33,7 +33,7 @@
<td>
{% for s in state.next_states.all %}
{{ s.name }}
<br />
<br>
{% endfor %}
</td>
{% endif %}

View file

@ -34,6 +34,6 @@
format: "yyyy-mm-dd",
todayBtn: "linked",
todayHighlight: true
}).wrap('<div class="input-group mb-3"></div>').parent().prepend('<span class="input-group-text"><span class="bi bi-calendar"></span></span>');
}).wrap('<div class="input-group mb-3"></div>').parent().prepend('<span class="input-group-text"><i class="bi bi-calendar"></i></span>');
</script>
{% endblock %}

View file

@ -67,8 +67,7 @@
(None)
{% else %}
{% for tag in tags %}
{{ tag }}
{% if not forloop.last %},{% endif %}
{{ tag }}{% if not forloop.last %},{% endif %}
{% endfor %}
{% endif %}
</td>

View file

@ -11,9 +11,11 @@
{% block content %}
{% origin %}
<h1>{{ title|safe }}</h1>
<p>
{{ description|safe }}
</p>
{% if description %}
<p>
{{ description|safe }}
</p>
{% endif %}
<form method="post" class="show-required">
{% csrf_token %}
{% bootstrap_form form layout='horizontal' %}

View file

@ -2,7 +2,13 @@
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}
{% origin %}
<!doctype html>
<html>
<head>
<title>
Google Webmaster Tools Verification
</title>
</head>
<body>
<h3>
This is a verification page for the

View file

@ -28,21 +28,17 @@
<td>{{ group.name }}</td>
<td>
{% for ad in group.ads %}
{% person_link ad.person %}
{% if not forloop.last %},{% endif %}
{% person_link ad.person %}{% if not forloop.last %},{% endif %}
{% endfor %}
</td>
<td>
{% for secretary in group.secretaries %}
{% person_link
{{.%erson.plain_nam
{% if not forloop.last %},{% endif %}
{% person_link secretary.person %}{% if not forloop.last %},{% endif %}
{% endfor %}
</td>
<td>
{% for chair in group.chairs %}
{% person_link chair.person %}
{% if not forloop.last %},{% endif %}
{% person_link chair.person %}{% if not forloop.last %},{% endif %}
{% endfor %}
</td>
</tr>

View file

@ -49,8 +49,10 @@
{{ area.name }}
<a href="{% url 'ietf.group.views.active_groups' group_type='wg' %}#{{ area.acronym }}">({{ area.acronym|upper }})</a>
</h2>
<p>
{{ area.description|linkify|urlize_ietf_docs|safe }}
</p>
{% if area.description %}
<p>
{{ area.description|linkify|urlize_ietf_docs|safe }}
</p>
{% endif %}
{% endfor %}
{% endblock %}

View file

@ -30,7 +30,7 @@
<td>{{ group.name }}</td>
<td class="text-center">
{% if group.type_id == 'review' %}
<span class="bi bi-check-lg text-success"></span>
<i class="bi bi-check-lg text-success"></i>
<span class="visually-hidden">yes</span>
{% endif %}
</td>
@ -39,20 +39,17 @@
</td>
<td>
{% for ad in group.ads %}
{% person_link ad.person %}
{% if not forloop.last %},{% endif %}
{% person_link ad.person %}{% if not forloop.last %},{% endif %}
{% endfor %}
</td>
<td>
{% for secretary in group.secretaries %}
{% person_link secretary.person %}
{% if not forloop.last %},{% endif %}
{% person_link secretary.person %}{% if not forloop.last %},{% endif %}
{% endfor %}
</td>
<td>
{% for chair in group.chairs %}
{% person_link chair.person %}
{% if not forloop.last %},{% endif %}
{% person_link chair.person %}{% if not forloop.last %},{% endif %}
{% endfor %}
</td>
</tr>

View file

@ -34,8 +34,7 @@
<td>{{ group.name }}</td>
<td>
{% for lead in group.leads %}
{% person_link lead.person %}
{% if not forloop.last %},{% endif %}
{% person_link lead.person %}{% if not forloop.last %},{% endif %}
{% endfor %}
</td>
</tr>

View file

@ -27,14 +27,12 @@
<td>{{ group.name }}</td>
<td>
{% for secretary in group.secretaries %}
{% person_link secretary.person %}
{% if not forloop.last %},{% endif %}
{% person_link secretary.person %}{% if not forloop.last %},{% endif %}
{% endfor %}
</td>
<td>
{% for chair in group.chairs %}
{% person_link chair.person %}
{% if not forloop.last %},{% endif %}
{% person_link chair.person %}{% if not forloop.last %},{% endif %}
{% endfor %}
</td>
</tr>
@ -44,4 +42,4 @@
{% endblock %}
{% block js %}
<script src="{% static "ietf/js/list.js" %}"></script>
{% endblock %}
{% endblock %}

View file

@ -32,20 +32,17 @@
</td>
<td>
{% for ad in group.ads %}
{% person_link ad.person %}
{% if not forloop.last %},{% endif %}
{% person_link ad.person %}{% if not forloop.last %},{% endif %}
{% endfor %}
</td>
<td>
{% for secretary in group.secretaries %}
{% person_link secretary.person %}
{% if not forloop.last %},{% endif %}
{% person_link secretary.person %}{% if not forloop.last %},{% endif %}
{% endfor %}
</td>
<td>
{% for chair in group.chairs %}
{% person_link chair.person %}
{% if not forloop.last %},{% endif %}
{% person_link chair.person %}{% if not forloop.last %},{% endif %}
{% endfor %}
</td>
</tr>

View file

@ -37,8 +37,7 @@
<td>{{ group.name }}</td>
<td>
{% for chair in group.chairs %}
{% person_link chair.person %}
{% if not forloop.last %},{% endif %}
{% person_link chair.person %}{% if not forloop.last %},{% endif %}
{% endfor %}
</td>
</tr>

View file

@ -26,8 +26,7 @@
<td>{{ group.name }}</td>
<td>
{% for chair in group.chairs %}
{% person_link chair.person %}
{% if not forloop.last %},{% endif %}
{% person_link chair.person %}{% if not forloop.last %},{% endif %}
{% endfor %}
</td>
</tr>

View file

@ -74,8 +74,7 @@
<td>{{ group.name }}</td>
<td>
{% for chair in group.chairs %}
{% role_person_link chair %}
{% if not forloop.last %},{% endif %}
{% role_person_link chair %}{% if not forloop.last %},{% endif %}
{% endfor %}
{% if group.ad_out_of_area %}
(Assigned AD: {% role_person_link group.ad_role %})

View file

@ -103,15 +103,17 @@
<th data-sort="description">Description</th>
</tr>
</thead>
<tbody>
{% for h in reviewersettings.history.all %}
<tr>
<td>{{ h.history_date|date }}</td>
<td>{% person_link h.history_user.person %}</td>
<td>{{ h.history_change_reason }}</td>
</tr>
{% endfor %}
</tbody>
{% if reviewersettings.history.all %}
<tbody>
{% for h in reviewersettings.history.all %}
<tr>
<td>{{ h.history_date|date }}</td>
<td>{% person_link h.history_user.person %}</td>
<td>{{ h.history_change_reason }}</td>
</tr>
{% endfor %}
</tbody>
{% endif %}
</table>
</div>
<h2 class="mt-5">History of unavailable periods</h2>
@ -128,21 +130,23 @@
</th>
</tr>
</thead>
<tbody>
{% for h in unavailable_periods_history.all %}
<tr>
<td>
{{ h.history_date|date }}
</td>
<td>
{% person_link h.history_user.person %}
</td>
<td>
{{ h.history_change_reason }}
</td>
</tr>
{% endfor %}
</tbody>
{% if unavailable_periods_history.all %}
<tbody>
{% for h in unavailable_periods_history.all %}
<tr>
<td>
{{ h.history_date|date }}
</td>
<td>
{% person_link h.history_user.person %}
</td>
<td>
{{ h.history_change_reason }}
</td>
</tr>
{% endfor %}
</tbody>
{% endif %}
</table>
</div>
<p style="padding-top: 2em;">

View file

@ -83,8 +83,8 @@
</label>
</div>
{% endfor %}
<input type="hidden" name="state" value="{{ state.pk }}" />
<input type="hidden" name="action" value="setnextstates" />
<input type="hidden" name="state" value="{{ state.pk }}">
<input type="hidden" name="action" value="setnextstates">
<button class="mt-2 btn btn-primary btn-sm" type="submit">Save</button>
</form>
</td>
@ -92,9 +92,9 @@
{% if not state.mandatory %}
<form class="set-state text-end" method="post">
{% csrf_token %}
<input type="hidden" name="state" value="{{ state.pk }}" />
<input type="hidden" name="action" value="setstateactive" />
<input type="hidden" name="active" value="{{ state.used|yesno:"0,1" }}" />
<input type="hidden" name="state" value="{{ state.pk }}">
<input type="hidden" name="action" value="setstateactive">
<input type="hidden" name="active" value="{{ state.used|yesno:"0,1" }}">
<button class="btn btn-{% if state.used %}danger{% else %}success{% endif %} btn-sm"
type="submit"
title="Click to {% if state.used %}de{% endif %}activate this state">
@ -129,9 +129,9 @@
<td>
<form class="set-tag text-end" method="post">
{% csrf_token %}
<input type="hidden" name="tag" value="{{ tag.pk }}" />
<input type="hidden" name="action" value="settagactive" />
<input type="hidden" name="active" value="{{ tag.used|yesno:"0,1" }}" />
<input type="hidden" name="tag" value="{{ tag.pk }}">
<input type="hidden" name="action" value="settagactive">
<input type="hidden" name="active" value="{{ tag.used|yesno:"0,1" }}">
<button class="btn btn-{% if tag.used %}danger{% else %}success{% endif %} btn-sm"
type="submit"
title="Click to {% if tag.used %}de{% endif %}activate this tag">

View file

@ -68,10 +68,8 @@
<div class="due handle col-md-2 col-form-label col-form-label-md">
{% if form.milestone.resolved %}
<span class="badge bg-success">{{ form.milestone.resolved }}</span>
{% else %}
<b>
{% if group.uses_milestone_dates %}{{ form.milestone.due|date:"M Y" }}{% endif %}
</b>
{% elif group.uses_milestone_dates and form.milestone.due %}
<b>{{ form.milestone.due|date:"M Y" }}</b>
{% endif %}
</div>
<div class="col-md-10 col-form-label col-form-label-md">

View file

@ -22,28 +22,30 @@
<table class="table table-striped table-sm tablesorter my-3">
<thead>
<tr>
<th data-sort="Alias">Alias</th>
<th data-sort="Expansion">Expansion</th>
<th data-sort="alias">Alias</th>
<th data-sort="expansion">Expansion</th>
</tr>
</thead>
<tbody>
{% for alias in alias_list %}
{% for item in alias.list %}
<tr>
<td>
{% with alias.grouper|add:item.alias_type|default:'' as x %}
{% with x|add:"@"|add:ietf_domain as email %}
{{ email|linkify }}
{% if alias_list %}
<tbody>
{% for alias in alias_list %}
{% for item in alias.list %}
<tr>
<td>
{% with alias.grouper|add:item.alias_type|default:'' as x %}
{% with x|add:"@"|add:ietf_domain as email %}
{{ email|linkify }}
{% endwith %}
{% endwith %}
{% endwith %}
</td>
<td>{{ item.expansion|linkify }}</td>
</tr>
</td>
<td>{{ item.expansion|linkify }}</td>
</tr>
{% endfor %}
{% endfor %}
{% endfor %}
</tbody>
</tbody>
{% endif %}
</table>
{% endblock %}
{% block js %}
<script src="{% static "ietf/js/list.js" %}"></script>
{% endblock %}
{% endblock %}

View file

@ -167,6 +167,7 @@
{% endif %}
{% endwith %}
</tbody>
{% if group.personnel %}
<tbody class="meta border-top">
{% for slug, label, roles in group.personnel %}
<tr>
@ -198,6 +199,7 @@
</tr>
{% endfor %}
</tbody>
{% endif %}
{% if group.list_email %}
<tbody class="meta border-top">
<tr>
@ -314,8 +316,8 @@
{% if group.state_id == "proposed" %}proposed{% endif %}
{{ group.type.desc.title }}
</h2>
{# the linebreaks filter adds <p />, no surrounding <p /> necessary: #}
{{ group.charter_text|linebreaks }}
{# the linebreaks filter adds <p>, no surrounding <p> necessary: #}
{{ group.charter_text|linkify|urlize_ietf_docs|linebreaks }}
{% else %}
<h2 class="mt-3">
{% if requested_close or group.state_id == "conclude" %}Final{% endif %}

View file

@ -13,7 +13,7 @@
{% if can_add_comment %}
<a class="btn btn-primary"
href="{% url 'ietf.group.views.add_comment' acronym=group.acronym %}">
<span class="bi bi-plus"></span>
<i class="bi bi-plus"></i>
Add comment
</a>
{% endif %}
@ -25,15 +25,17 @@
<th data-sort="action">Action</th>
</tr>
</thead>
<tbody>
{% for e in events %}
<tr>
<td class="text-nowrap">{{ e.time|date:"Y-m-d" }}</td>
<td class="text-nowrap">{% person_link e.by %}</td>
<td>{{ e.desc|format_history_text }}</td>
</tr>
{% endfor %}
</tbody>
{% if events %}
<tbody>
{% for e in events %}
<tr>
<td class="text-nowrap">{{ e.time|date:"Y-m-d" }}</td>
<td class="text-nowrap">{% person_link e.by %}</td>
<td>{{ e.desc|format_history_text }}</td>
</tr>
{% endfor %}
</tbody>
{% endif %}
</table>
{% endblock %}
{% block js %}

View file

@ -70,8 +70,7 @@
{% if r.doc.authors %}
<span class="fw-bold">Authors:</span>
{% for person in r.doc.authors %}
{% person_link person %}
{% if not forloop.last %},{% endif %}
{% person_link person %}{% if not forloop.last %},{% endif %}
{% endfor %}
<br>
{% endif %}
@ -85,8 +84,7 @@
{% if r.wg_chairs %}
<span class="fw-bold">{{ r.doc.group.type.name }} chairs:</span>
{% for person in r.wg_chairs %}
{% person_link person %}
{% if not forloop.last %},{% endif %}
{% person_link person %}{% if not forloop.last %},{% endif %}
{% endfor %}
<br>
{% endif %}

View file

@ -45,8 +45,7 @@
{% for pr in p.list %}
{% if pr.rev != d.rev %}(-{{ pr.rev }}){% endif %}
{% endfor %}
{% endif %}
{% if not forloop.last %},{% endif %}
{% endif %}{% if not forloop.last %},{% endif %}
{% endfor %}
</td>
<td>
@ -59,8 +58,7 @@
{% for pr in p.list %}
{% if pr.rev != d.rev %}(-{{ pr.rev }}){% endif %}
{% endfor %}
{% endif %}
{% if not forloop.last %},{% endif %}
{% endif %}{% if not forloop.last %},{% endif %}
{% endfor %}
</td>
</tr>

View file

@ -33,12 +33,12 @@
{{ s.time|date:"H:i" }}
<a class="btn btn-primary btn-sm"
href="{% url 'ietf.meeting.views.agenda_ical' num=s.meeting.number session_id=s.id %}">
<span class="bi bi-calendar"></span>
<i class="bi bi-calendar"></i>
</a>
{% else %}
<a class="btn btn-primary btn-sm"
href="{% url 'ietf.meeting.views.agenda_ical' num=s.meeting.number acronym=s.group.acronym %}">
<span class="bi bi-calendar"></span>
<i class="bi bi-calendar"></i>
</a>
{% endif %}
{% endif %}

View file

@ -44,7 +44,7 @@
<a class="float-end"
title="icalendar entry for all scheduled future {{ group.acronym }} meetings"
href="{% url 'ietf.meeting.views.upcoming_ical' %}?show={{ group.acronym }}">
<span class="bi bi-calendar"></span>
<i class="bi bi-calendar"></i>
</a>
</h2>
<table class="table table-sm table-striped tablesorter">
@ -81,10 +81,10 @@
{% with sessions=past can_edit_materials=False %}
{% include "group/meetings-row.html" %}
{% endwith %}
<tbody>
</table>
{% endif %}
<p>
This page shows meetings within the last four years. For earlier meetings, please see the proceedings.
</p>
{% endblock %}
</tbody>
</table>
{% endif %}
<p>
This page shows meetings within the last four years. For earlier meetings, please see the proceedings.
</p>
{% endblock %}

View file

@ -4,5 +4,5 @@
{% origin %}
{# assumes group, form, needs_review, reviewer are in the context #}
{% load django_bootstrap5 %}
<input type="hidden" name="prefix" value="{{ form.prefix|default:"" }}"/>
<input type="hidden" name="prefix" value="{{ form.prefix|default:"" }}">
{% bootstrap_form form layout='horizontal' %}

View file

@ -13,7 +13,7 @@
{% if can_access_stats %}
<div class="float-end">
<a href="{% url "ietf.stats.views.review_stats" %}" class="icon-link">
<span class="bi bi-bar-chart-line"></span>
<i class="bi bi-bar-chart-line"></i>
</a>
</div>
{% endif %}

View file

@ -14,7 +14,7 @@
<div class="float-end">
<a href="{% url "ietf.stats.views.review_stats" stats_type="completion" acronym=group.acronym %}"
class="icon-link">
<span class="bi bi-bar-chart-line">&nbsp;</span>
<i class="bi bi-bar-chart-line"></i>
</a>
</div>
{% endif %}

View file

@ -13,8 +13,7 @@
<p>
<b>Chair{{ chairs|pluralize }}:</b>
{% for chair in chairs %}
{% person_link chair.person %}
{% if not forloop.last %},{% endif %}
{% person_link chair.person %}{% if not forloop.last %},{% endif %}
{% endfor %}
</p>
<p>

View file

@ -3,7 +3,7 @@
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}
{% load ietf_filters %}
{% block pagehead %}<link rel="alternate" type="application/atom+xml" href="/feed/iesg-agenda/"/>{% endblock %}
{% block pagehead %}<link rel="alternate" type="application/atom+xml" href="/feed/iesg-agenda/">{% endblock %}
{% block title %}IESG agenda: {{ date }}{% endblock %}
{% block content %}
{% origin %}

View file

@ -26,13 +26,13 @@
</h2>
<div class="buttonlist">
<a class="btn btn-primary" role="button" href="/iesg/agenda/">
<span class="bi bi-list"></span>
<i class="bi bi-list"></i>
Full IESG agenda
</a>
<a class="btn btn-primary"
role="button"
href="/iesg/agenda/telechat-{{ t.date|date:'Y' }}-{{ t.date|date:'m' }}-{{ t.date|date:'d' }}-docs.tgz">
<span class="bi bi-download"></span>
<i class="bi bi-download"></i>
Download documents
</a>
</div>

View file

@ -35,13 +35,14 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Some parts Copyright (c) 2009 The IETF Trust, all rights reserved.
{% endcomment %}
{% load ietf_filters static %}
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Moderator Package for {{ date }} IESG Telechat</title>
<link rel="stylesheet" href="{% static 'ietf/css/ietf.css' %}"/>
<link rel="stylesheet" href="{% static 'ietf/css/ietf.css' %}">
<style type="text/css">
h3 { page-break-before:always; }
@media print {
@ -153,4 +154,4 @@ Some parts Copyright (c) 2009 The IETF Trust, all rights reserved.
{% endif %}
{% endfor %}
</body>
</html>
</html>

View file

@ -20,7 +20,7 @@
</li>
<li class="nav-item">
<a class="nav-link
{% if active == 'discusses' %}active{% endif %}""
{% if active == 'discusses' %}active{% endif %}"
href="{% url 'ietf.iesg.views.discusses' %}">DISCUSS positions
</a>
</li>

View file

@ -30,36 +30,38 @@
<th data-sort="discusses">Discusses</th>
</tr>
</thead>
<tbody>
{% for doc in docs %}
<tr class="{% if doc.by_me %}
byme
{% endif %}
{% if docs %}
<tbody>
{% for doc in docs %}
<tr class="{% if doc.by_me %}
byme
{% endif %}
{% if doc.for_me %}
forme
{% endif %}">
<td>
{{ doc.displayname_with_link }}
<br>
<span class="fw-bold">{{ doc.title }}</span>
</td>
<td>{{ doc.telechat }}</td>
{% include "doc/search/status_columns.html" %}
<td>{% person_link doc.ad nowrap=False %}</td>
<td>
{% for p in doc.blocking_positions %}
{% if p.is_old_pos %}<span class="text-muted">{% endif %}
{% person_link p.balloter nowrap=False %}
({% if p.discuss_time %}{{ p.discuss_time|timesince_days }} days ago{% endif %}
{% if doc.get_state_url != "rfc" and p.rev != doc.rev %}for -{{ p.rev }}{% endif %})
{% if doc.for_me %}
forme
{% endif %}">
<td>
{{ doc.displayname_with_link }}
<br>
{% if p.is_old_pos %}</span>{% endif %}
{% endfor %}
</td>
</tr>
{% endfor %}
</tbody>
<span class="fw-bold">{{ doc.title }}</span>
</td>
<td>{{ doc.telechat }}</td>
{% include "doc/search/status_columns.html" %}
<td>{% person_link doc.ad nowrap=False %}</td>
<td>
{% for p in doc.blocking_positions %}
{% if p.is_old_pos %}<span class="text-muted">{% endif %}
{% person_link p.balloter nowrap=False %}
({% if p.discuss_time %}{{ p.discuss_time|timesince_days }} days ago{% endif %}
{% if doc.get_state_url != "rfc" and p.rev != doc.rev %}for -{{ p.rev }}{% endif %})
<br>
{% if p.is_old_pos %}</span>{% endif %}
{% endfor %}
</td>
</tr>
{% endfor %}
</tbody>
{% endif %}
</table>
{% endblock %}
{% block js %}

View file

@ -12,8 +12,7 @@
<p>
<b>Announcements in:</b>
{% for y in years %}
<a {% if y != year %}href="{% url "ietf.iesg.views.review_decisions" year=y %}"{% endif %}>{{ y }}</a>
{% if not forloop.last %},{% endif %}
<a {% if y != year %}href="{% url "ietf.iesg.views.review_decisions" year=y %}"{% endif %}>{{ y }}</a>{% if not forloop.last %},{% endif %}
{% endfor %}
</p>
{% for e in events %}

View file

@ -22,54 +22,54 @@
</p>
<p>
Before you do so, please complete the following 3 verification steps:
<ol>
<li>
Has the person provided relevant information in his request, or has he simply
copied the text from the account creation failure message? All genuine (non-spam)
account creation requests seen between 2009 and 2016 for tools.ietf.org have
contained a reasonable request message, rather than just copy-pasting the account
creation failure message. If there's no proper request message, step 2 below can
be performed to make sure the request is bogus, but if that also fails, no further
effort should be needed.
</li>
<li>
Google for the person's name within the ietf.org site: "Jane Doe site:ietf.org". If
found, and the email address matches an address used in drafts or discussions,
things are fine, and it's OK to add the address to the whitelist using this form,
and ask the person to please try the
</p>
<ol class="d-grid gap-3">
<li>
Has the person provided relevant information in his request, or has he simply
copied the text from the account creation failure message? All genuine (non-spam)
account creation requests seen between 2009 and 2016 for tools.ietf.org have
contained a reasonable request message, rather than just copy-pasting the account
creation failure message. If there's no proper request message, step 2 below can
be performed to make sure the request is bogus, but if that also fails, no further
effort should be needed.
</li>
<li>
Google for the person's name within the ietf.org site: "Jane Doe site:ietf.org". If
found, and the email address matches an address used in drafts or discussions,
things are fine, and it's OK to add the address to the whitelist using this form,
and ask the person to please try the
<a href="{% url 'ietf.ietfauth.views.create_account' %}">account creation form</a>
again.
</li>
<li>
<p>
If google finds no trace of the person being an ietf participant, he or she could
still be somebody who is just getting involved in IETF work. A datatracker account
is probably not necessary, (no account is necessary to 'join' a WG -- the right thing
in that case is to join the right mailing list, and the person could be told so) --
but in case this is a legitimate request, please email the person and ask:
<i>
"Which wgs do you require a password for?"
</i>
</p>
<p>
This is a bit of a trick question, because it is very unlikely that somebody who
isn't involved in IETF work will give a reasonable response, while almost any answer
from somebody who is doing IETF work will show that they have some clue.
</p>
<p>
Please note the exact wording. Do <b><i>not</i></b> ask about "working groups" --
that will make it easier for people to google for IETF working groups. Ask the
question as given above, with lowercase "wgs".
</p>
<p>
If the answer to this question shows clue, then add the address to the whitelist
using this form, and ask the person to please try the
<a href="{% url 'ietf.ietfauth.views.create_account' %}">account creation form</a>
again.
</li>
<li>
<p>
If google finds no trace of the person being an ietf participant, he or she could
still be somebody who is just getting involved in IETF work. A datatracker account
is probably not necessary, (no account is necessary to 'join' a WG -- the right thing
in that case is to join the right mailing list, and the person could be told so) --
but in case this is a legitimate request, please email the person and ask:
<i>
"Which wgs do you require a password for?"
</i>
</p>
<p>
This is a bit of a trick question, because it is very unlikely that somebody who
isn't involved in IETF work will give a reasonable response, while almost any answer
from somebody who is doing IETF work will show that they have some clue.
</p>
<p>
Please note the exact wording. Do <b><i>not</i></b> ask about "working groups" --
that will make it easier for people to google for IETF working groups. Ask the
question as given above, with lowercase "wgs".
</p>
<p>
If the answer to this question shows clue, then add the address to the whitelist
using this form, and ask the person to please try the
<a href="{% url 'ietf.ietfauth.views.create_account' %}">account creation form</a>
again.
</p>
</li>
</ol>
</p>
</p>
</li>
</ol>
<form role="form" method="post">
{% csrf_token %}
{% bootstrap_form form %}

View file

@ -90,7 +90,7 @@
{% endif %}
<p class="required">
Fields marked with
<label></label>
<label class="required">&nbsp;</label>
are required.
</p>
<h2 class="mt-4">Updates</h2>
@ -98,7 +98,7 @@
{% if user|has_role:"Secretariat" %}
{% bootstrap_field form.compliant layout="horizontal" %}
{% else %}
<input type="hidden" id="id_compliant" name="compliant" value="checked" />
<input type="hidden" id="id_compliant" name="compliant" value="checked">
{% endif %}
<h2 class="mt-4">
{% cycle 'I' 'II' 'III' 'IV' 'V' 'VI' 'VII' 'VIII' as section %}.
@ -167,7 +167,7 @@
<div class="col-md-2"></div>
<div class="col-md-10">
<a class="draft-add-row btn btn-primary">
<span class="bi bi-plus" aria-hidden="true"></span> Add more
<i class="bi bi-plus" aria-hidden="true"></i> Add more
</a>
</div>
</div>

View file

@ -38,28 +38,30 @@
<th data-sort="text">Text</th>
</tr>
</thead>
<tbody>
{% for e in events %}
<tr id="history-{{ e.pk }}">
<td class="text-nowrap">{{ e.time|date:"Y-m-d" }}</td>
<td>
{{ e.type }}
{% if e.response_due and e.response_past_due %}
<span class="bi bi-exclamation-circle" title="Response overdue"></span>
{% endif %}
</td>
<td>{% person_link e.by %}</td>
<td>
{% if e.message %}
{% if e.response_due %}<span class="badge bg-info">Response due: {{ e.response_due|date:"Y-m-d" }}</span>{% endif %}
<pre>{{ e.message|render_message_for_history|format_history_text:"100" }}</pre>
{% else %}
{{ e.desc|format_history_text }}
{% endif %}
</td>
</tr>
{% endfor %}
</tbody>
{% if events %}
<tbody>
{% for e in events %}
<tr id="history-{{ e.pk }}">
<td class="text-nowrap">{{ e.time|date:"Y-m-d" }}</td>
<td>
{{ e.type }}
{% if e.response_due and e.response_past_due %}
<i class="bi bi-exclamation-circle" title="Response overdue"></i>
{% endif %}
</td>
<td>{% person_link e.by %}</td>
<td>
{% if e.message %}
{% if e.response_due %}<span class="badge bg-info">Response due: {{ e.response_due|date:"Y-m-d" }}</span>{% endif %}
<pre>{{ e.message|render_message_for_history|format_history_text:"100" }}</pre>
{% else %}
{{ e.desc|format_history_text }}
{% endif %}
</td>
</tr>
{% endfor %}
</tbody>
{% endif %}
</table>
{% endblock %}
{% block js %}

View file

@ -5,9 +5,7 @@
{% load ietf_filters ipr_filters %}
{% block title %}IPR Details - {{ ipr.title }}{% endblock %}
{% block pagehead %}
<meta name="description"
content="IPR disclosure #{{ ipr.ipr_id }}: {{ ipr.title }} ({{ ipr.time|date:"
Y/>
<meta name="description" content="IPR disclosure #{{ipr.ipr_id}}: {{ ipr.title }} ({{ ipr.time|date:'Y' }})">
{% endblock %}
{% block content %}
{% origin %}
@ -37,13 +35,13 @@
{% if ipr.updates and ipr.state_id == 'pending' and ipr.update_notified_date or not ipr.updates and ipr.state_id == 'pending' %}
<a class="btn btn-primary"
href="{% url 'ietf.ipr.views.post' id=ipr.id %}">
<span class="bi bi-check" aria-hidden="true"></span> Post
<i class="bi bi-check" aria-hidden="true"></i> Post
</a>
{% endif %}
<a class="btn btn-primary"
href="{% url 'ietf.ipr.views.email' id=ipr.id %}"
title="Email submitter of this disclsoure">
<span class="bi bi-envelope" aria-hidden="true"></span> Email
<i class="bi bi-envelope" aria-hidden="true"></i> Email
</a>
<a class="btn btn-primary"
href="{% url 'ietf.ipr.views.edit' id=ipr.id %}">Edit</a>
@ -78,12 +76,12 @@
<strong>Submitted:</strong>
{{ ipr.time|date:"F j, Y" }} under the rules in {{ in_force_ipr_rfc }}
</div>
<div>
{% if user|has_role:"Secretariat" %}
{% if user|has_role:"Secretariat" %}
<div>
<strong>State:</strong>
{{ ipr.state }}
{% endif %}
</div>
</div>
{% endif %}
{% if ipr.state_id == 'posted' %}
<p class="alert alert-info my-3">
Note: Updates to IPR disclosures must only be made by authorized
@ -220,7 +218,9 @@
Holder contact info
</th>
<td class="ipr-this">
{{ ipr.holder_contact_info|linebreaks }}
{% if ipr.holder_contact_info %}
{{ ipr.holder_contact_info|linebreaks }}
{% endif %}
</td>
</tr>
</tbody>

Some files were not shown because too many files have changed in this diff Show more