Run tidy as part of tests, and fix HTML issues it finds.
- Legacy-Id: 19904
This commit is contained in:
parent
a507b31669
commit
64d2ba2558
|
@ -38,6 +38,7 @@ RUN apt-get install -qy \
|
||||||
less \
|
less \
|
||||||
libmagic-dev \
|
libmagic-dev \
|
||||||
libmariadb-dev \
|
libmariadb-dev \
|
||||||
|
libtidy-dev \
|
||||||
locales \
|
locales \
|
||||||
mariadb-client \
|
mariadb-client \
|
||||||
netcat \
|
netcat \
|
||||||
|
|
|
@ -363,7 +363,7 @@ def add_links_in_new_revision_events(doc, events, diff_revisions):
|
||||||
links += ""
|
links += ""
|
||||||
|
|
||||||
if prev != None:
|
if prev != None:
|
||||||
links += ' (<a href="%s?url1=%s&url2=%s">diff from previous</a>)' % (settings.RFCDIFF_BASE_URL, quote(prev, safe="~"), quote(diff_url, safe="~"))
|
links += ' (<a href="%s?url1=%s&url2=%s">diff from previous</a>)' % (settings.RFCDIFF_BASE_URL, quote(prev, safe="~"), quote(diff_url, safe="~"))
|
||||||
|
|
||||||
# replace the bold filename part
|
# replace the bold filename part
|
||||||
e.desc = re.sub(r"<b>(.+-[0-9][0-9].txt)</b>", links, e.desc)
|
e.desc = re.sub(r"<b>(.+-[0-9][0-9].txt)</b>", links, e.desc)
|
||||||
|
@ -1087,7 +1087,7 @@ def build_doc_supermeta_block(doc):
|
||||||
items.append(f'[<a href="{urlreverse("ietf.group.views.group_home",kwargs=dict(acronym=doc.group.acronym))}" title="The working group handling this document">WG</a>]')
|
items.append(f'[<a href="{urlreverse("ietf.group.views.group_home",kwargs=dict(acronym=doc.group.acronym))}" title="The working group handling this document">WG</a>]')
|
||||||
items.append(f'[<a href="mailto:{doc.name}@ietf.org?subject={doc.name}" title="Send email to the document authors">Email</a>]')
|
items.append(f'[<a href="mailto:{doc.name}@ietf.org?subject={doc.name}" title="Send email to the document authors">Email</a>]')
|
||||||
if doc.rev != "00":
|
if doc.rev != "00":
|
||||||
items.append(f'[<a href="{settings.RFCDIFF_BASE_URL}?difftype=--hwdiff&url2={doc.name}-{doc.rev}.txt" title="Inline diff (wdiff)">Diff1</a>]')
|
items.append(f'[<a href="{settings.RFCDIFF_BASE_URL}?difftype=--hwdiff&url2={doc.name}-{doc.rev}.txt" title="Inline diff (wdiff)">Diff1</a>]')
|
||||||
items.append(f'[<a href="{settings.RFCDIFF_BASE_URL}?url2={doc.name}-{doc.rev}.txt" title="Side-by-side diff">Diff2</a>]')
|
items.append(f'[<a href="{settings.RFCDIFF_BASE_URL}?url2={doc.name}-{doc.rev}.txt" title="Side-by-side diff">Diff2</a>]')
|
||||||
items.append(f'[<a href="{settings.IDNITS_BASE_URL}?url={settings.IETF_ID_ARCHIVE_URL}{doc.name}-{doc.rev}.txt" title="Run an idnits check of this document">Nits</a>]')
|
items.append(f'[<a href="{settings.IDNITS_BASE_URL}?url={settings.IETF_ID_ARCHIVE_URL}{doc.name}-{doc.rev}.txt" title="Run an idnits check of this document">Nits</a>]')
|
||||||
|
|
||||||
|
@ -1321,4 +1321,4 @@ def fuzzy_find_documents(name, rev=None):
|
||||||
rev = None # found a doc by name with rev = None, so update that
|
rev = None # found a doc by name with rev = None, so update that
|
||||||
|
|
||||||
FoundDocuments = namedtuple('FoundDocuments', 'documents matched_name matched_rev')
|
FoundDocuments = namedtuple('FoundDocuments', 'documents matched_name matched_rev')
|
||||||
return FoundDocuments(docs, name, rev)
|
return FoundDocuments(docs, name, rev)
|
|
@ -14,7 +14,7 @@ from django.template.defaultfilters import striptags
|
||||||
from django.template.loader import render_to_string
|
from django.template.loader import render_to_string
|
||||||
from django.urls import reverse as urlreverse
|
from django.urls import reverse as urlreverse
|
||||||
from django.views.decorators.csrf import csrf_exempt
|
from django.views.decorators.csrf import csrf_exempt
|
||||||
|
from django.utils.html import escape
|
||||||
|
|
||||||
import debug # pyflakes:ignore
|
import debug # pyflakes:ignore
|
||||||
|
|
||||||
|
@ -527,7 +527,7 @@ def lastcalltext(request, name):
|
||||||
if not existing:
|
if not existing:
|
||||||
existing = generate_last_call_announcement(request, doc)
|
existing = generate_last_call_announcement(request, doc)
|
||||||
|
|
||||||
form = LastCallTextForm(initial=dict(last_call_text=existing.text))
|
form = LastCallTextForm(initial=dict(last_call_text=escape(existing.text)))
|
||||||
|
|
||||||
if request.method == 'POST':
|
if request.method == 'POST':
|
||||||
if "save_last_call_text" in request.POST or "send_last_call_request" in request.POST:
|
if "save_last_call_text" in request.POST or "send_last_call_request" in request.POST:
|
||||||
|
@ -612,7 +612,7 @@ def ballot_writeupnotes(request, name):
|
||||||
if not existing:
|
if not existing:
|
||||||
existing = generate_ballot_writeup(request, doc)
|
existing = generate_ballot_writeup(request, doc)
|
||||||
|
|
||||||
form = BallotWriteupForm(initial=dict(ballot_writeup=existing.text))
|
form = BallotWriteupForm(initial=dict(ballot_writeup=escape(existing.text)))
|
||||||
|
|
||||||
if request.method == 'POST' and "save_ballot_writeup" in request.POST or "issue_ballot" in request.POST:
|
if request.method == 'POST' and "save_ballot_writeup" in request.POST or "issue_ballot" in request.POST:
|
||||||
form = BallotWriteupForm(request.POST)
|
form = BallotWriteupForm(request.POST)
|
||||||
|
@ -727,7 +727,7 @@ def ballot_rfceditornote(request, name):
|
||||||
if not existing or (existing.text == ""):
|
if not existing or (existing.text == ""):
|
||||||
existing = generate_ballot_rfceditornote(request, doc)
|
existing = generate_ballot_rfceditornote(request, doc)
|
||||||
|
|
||||||
form = BallotRfcEditorNoteForm(auto_id=False, initial=dict(rfc_editor_note=existing.text))
|
form = BallotRfcEditorNoteForm(auto_id=False, initial=dict(rfc_editor_note=escape(existing.text)))
|
||||||
|
|
||||||
if request.method == 'POST' and "save_ballot_rfceditornote" in request.POST:
|
if request.method == 'POST' and "save_ballot_rfceditornote" in request.POST:
|
||||||
form = BallotRfcEditorNoteForm(request.POST)
|
form = BallotRfcEditorNoteForm(request.POST)
|
||||||
|
@ -791,7 +791,7 @@ def ballot_approvaltext(request, name):
|
||||||
if not existing:
|
if not existing:
|
||||||
existing = generate_approval_mail(request, doc)
|
existing = generate_approval_mail(request, doc)
|
||||||
|
|
||||||
form = ApprovalTextForm(initial=dict(approval_text=existing.text))
|
form = ApprovalTextForm(initial=dict(approval_text=escape(existing.text)))
|
||||||
|
|
||||||
if request.method == 'POST':
|
if request.method == 'POST':
|
||||||
if "save_approval_text" in request.POST:
|
if "save_approval_text" in request.POST:
|
||||||
|
@ -1206,4 +1206,4 @@ def irsg_ballot_status(request):
|
||||||
|
|
||||||
docs.append(doc)
|
docs.append(doc)
|
||||||
|
|
||||||
return render(request, 'doc/irsg_ballot_status.html', {'docs':docs})
|
return render(request, 'doc/irsg_ballot_status.html', {'docs':docs})
|
|
@ -10,7 +10,7 @@ from django.contrib.auth.decorators import login_required
|
||||||
from django.shortcuts import get_object_or_404, redirect, render
|
from django.shortcuts import get_object_or_404, redirect, render
|
||||||
from django.template.loader import render_to_string
|
from django.template.loader import render_to_string
|
||||||
from django.urls import reverse as urlreverse
|
from django.urls import reverse as urlreverse
|
||||||
|
from django.utils.html import escape
|
||||||
|
|
||||||
from ietf.doc.mails import (email_bofreq_title_changed, email_bofreq_editors_changed,
|
from ietf.doc.mails import (email_bofreq_title_changed, email_bofreq_editors_changed,
|
||||||
email_bofreq_new_revision, email_bofreq_responsible_changed)
|
email_bofreq_new_revision, email_bofreq_responsible_changed)
|
||||||
|
@ -172,7 +172,7 @@ def new_bof_request(request):
|
||||||
return redirect('ietf.doc.views_doc.document_main', name=bofreq.name)
|
return redirect('ietf.doc.views_doc.document_main', name=bofreq.name)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
init = {'bofreq_content':render_to_string('doc/bofreq/bofreq_template.md',{}),
|
init = {'bofreq_content':escape(render_to_string('doc/bofreq/bofreq_template.md',{})),
|
||||||
'bofreq_submission':'enter',
|
'bofreq_submission':'enter',
|
||||||
}
|
}
|
||||||
form = NewBofreqForm(initial=init)
|
form = NewBofreqForm(initial=init)
|
||||||
|
|
|
@ -17,6 +17,7 @@ from django.conf import settings
|
||||||
from django.contrib import messages
|
from django.contrib import messages
|
||||||
from django.contrib.auth.decorators import login_required
|
from django.contrib.auth.decorators import login_required
|
||||||
from django.utils.encoding import force_text
|
from django.utils.encoding import force_text
|
||||||
|
from django.utils.html import escape
|
||||||
|
|
||||||
import debug # pyflakes:ignore
|
import debug # pyflakes:ignore
|
||||||
|
|
||||||
|
@ -507,7 +508,7 @@ def review_announcement_text(request, name):
|
||||||
existing_new_work.text = derive_new_work_text(existing.text,group)
|
existing_new_work.text = derive_new_work_text(existing.text,group)
|
||||||
existing_new_work.time = datetime.datetime.now()
|
existing_new_work.time = datetime.datetime.now()
|
||||||
|
|
||||||
form = ReviewAnnouncementTextForm(initial=dict(announcement_text=existing.text,new_work_text=existing_new_work.text))
|
form = ReviewAnnouncementTextForm(initial=dict(announcement_text=escape(existing.text),new_work_text=escape(existing_new_work.text)))
|
||||||
|
|
||||||
if request.method == 'POST':
|
if request.method == 'POST':
|
||||||
form = ReviewAnnouncementTextForm(request.POST)
|
form = ReviewAnnouncementTextForm(request.POST)
|
||||||
|
@ -588,7 +589,7 @@ def action_announcement_text(request, name):
|
||||||
if not existing:
|
if not existing:
|
||||||
raise Http404
|
raise Http404
|
||||||
|
|
||||||
form = ActionAnnouncementTextForm(initial=dict(announcement_text=existing.text))
|
form = ActionAnnouncementTextForm(initial=dict(announcement_text=escape(existing.text)))
|
||||||
|
|
||||||
if request.method == 'POST':
|
if request.method == 'POST':
|
||||||
form = ActionAnnouncementTextForm(request.POST)
|
form = ActionAnnouncementTextForm(request.POST)
|
||||||
|
@ -650,7 +651,7 @@ def ballot_writeupnotes(request, name):
|
||||||
|
|
||||||
reissue = charter.latest_event(DocEvent, type="sent_ballot_announcement")
|
reissue = charter.latest_event(DocEvent, type="sent_ballot_announcement")
|
||||||
|
|
||||||
form = BallotWriteupForm(initial=dict(ballot_writeup=existing.text))
|
form = BallotWriteupForm(initial=dict(ballot_writeup=escape(existing.text)))
|
||||||
|
|
||||||
if request.method == 'POST' and ("save_ballot_writeup" in request.POST or "send_ballot" in request.POST):
|
if request.method == 'POST' and ("save_ballot_writeup" in request.POST or "send_ballot" in request.POST):
|
||||||
form = BallotWriteupForm(request.POST)
|
form = BallotWriteupForm(request.POST)
|
||||||
|
@ -802,7 +803,7 @@ def approve(request, name):
|
||||||
|
|
||||||
return render(request, 'doc/charter/approve.html',
|
return render(request, 'doc/charter/approve.html',
|
||||||
dict(charter=charter,
|
dict(charter=charter,
|
||||||
announcement=announcement))
|
announcement=escape(announcement)))
|
||||||
|
|
||||||
def charter_with_milestones_txt(request, name, rev):
|
def charter_with_milestones_txt(request, name, rev):
|
||||||
charter = get_object_or_404(Document, type="charter", docalias__name=name)
|
charter = get_object_or_404(Document, type="charter", docalias__name=name)
|
||||||
|
@ -833,4 +834,4 @@ def charter_with_milestones_txt(request, name, rev):
|
||||||
return render(request, 'doc/charter/charter_with_milestones.txt',
|
return render(request, 'doc/charter/charter_with_milestones.txt',
|
||||||
dict(charter_text=charter_text,
|
dict(charter_text=charter_text,
|
||||||
milestones=milestones),
|
milestones=milestones),
|
||||||
content_type="text/plain; charset=%s"%settings.DEFAULT_CHARSET)
|
content_type="text/plain; charset=%s"%settings.DEFAULT_CHARSET)
|
|
@ -12,6 +12,7 @@ from django.http import HttpResponseRedirect, Http404
|
||||||
from django.urls import reverse
|
from django.urls import reverse
|
||||||
from django.template.loader import render_to_string
|
from django.template.loader import render_to_string
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
|
from django.utils.html import escape
|
||||||
|
|
||||||
import debug # pyflakes:ignore
|
import debug # pyflakes:ignore
|
||||||
|
|
||||||
|
@ -215,7 +216,7 @@ def submit(request, name):
|
||||||
|
|
||||||
elif "reset_text" in request.POST:
|
elif "reset_text" in request.POST:
|
||||||
|
|
||||||
init = { "content": render_to_string("doc/conflict_review/review_choices.txt",dict())}
|
init = { "content": escape(render_to_string("doc/conflict_review/review_choices.txt",dict()))}
|
||||||
form = UploadForm(initial=init)
|
form = UploadForm(initial=init)
|
||||||
|
|
||||||
# Protect against handcrufted malicious posts
|
# Protect against handcrufted malicious posts
|
||||||
|
@ -229,9 +230,9 @@ def submit(request, name):
|
||||||
init = { "content": ""}
|
init = { "content": ""}
|
||||||
|
|
||||||
if not_uploaded_yet:
|
if not_uploaded_yet:
|
||||||
init["content"] = render_to_string("doc/conflict_review/review_choices.txt",
|
init["content"] = escape(render_to_string("doc/conflict_review/review_choices.txt",
|
||||||
dict(),
|
dict(),
|
||||||
)
|
))
|
||||||
else:
|
else:
|
||||||
filename = os.path.join(settings.CONFLICT_REVIEW_PATH, '%s-%s.txt' % (review.canonical_name(), review.rev))
|
filename = os.path.join(settings.CONFLICT_REVIEW_PATH, '%s-%s.txt' % (review.canonical_name(), review.rev))
|
||||||
try:
|
try:
|
||||||
|
@ -358,7 +359,7 @@ def approve_conflict_review(request, name):
|
||||||
|
|
||||||
else:
|
else:
|
||||||
|
|
||||||
init = { "announcement_text" : default_approval_text(review) }
|
init = { "announcement_text" : escape(default_approval_text(review)) }
|
||||||
form = AnnouncementForm(initial=init)
|
form = AnnouncementForm(initial=init)
|
||||||
|
|
||||||
return render(request, 'doc/conflict_review/approve.html',
|
return render(request, 'doc/conflict_review/approve.html',
|
||||||
|
@ -522,4 +523,4 @@ def start_review_as_stream_owner(request, name):
|
||||||
{'form': form,
|
{'form': form,
|
||||||
'doc_to_review': doc_to_review,
|
'doc_to_review': doc_to_review,
|
||||||
},
|
},
|
||||||
)
|
)
|
|
@ -16,6 +16,7 @@ from django.urls import reverse
|
||||||
from django.template.loader import render_to_string
|
from django.template.loader import render_to_string
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.utils.encoding import force_text
|
from django.utils.encoding import force_text
|
||||||
|
from django.utils.html import escape
|
||||||
|
|
||||||
import debug # pyflakes:ignore
|
import debug # pyflakes:ignore
|
||||||
from ietf.doc.mails import email_ad_approved_status_change
|
from ietf.doc.mails import email_ad_approved_status_change
|
||||||
|
@ -396,7 +397,7 @@ def approve(request, name):
|
||||||
|
|
||||||
init = []
|
init = []
|
||||||
for rel in status_change.relateddocument_set.filter(relationship__slug__in=STATUSCHANGE_RELATIONS):
|
for rel in status_change.relateddocument_set.filter(relationship__slug__in=STATUSCHANGE_RELATIONS):
|
||||||
init.append({"announcement_text" : default_approval_text(status_change,rel),
|
init.append({"announcement_text" : escape(default_approval_text(status_change,rel)),
|
||||||
"label": "Announcement text for %s to %s"%(rel.target.document.canonical_name(),newstatus(rel)),
|
"label": "Announcement text for %s to %s"%(rel.target.document.canonical_name(),newstatus(rel)),
|
||||||
})
|
})
|
||||||
formset = AnnouncementFormSet(initial=init)
|
formset = AnnouncementFormSet(initial=init)
|
||||||
|
@ -674,7 +675,7 @@ def last_call(request, name):
|
||||||
if not last_call_event:
|
if not last_call_event:
|
||||||
last_call_event = generate_last_call_text(request, status_change)
|
last_call_event = generate_last_call_text(request, status_change)
|
||||||
|
|
||||||
form = LastCallTextForm(initial=dict(last_call_text=last_call_event.text))
|
form = LastCallTextForm(initial=dict(last_call_text=escape(last_call_event.text)))
|
||||||
|
|
||||||
if request.method == 'POST':
|
if request.method == 'POST':
|
||||||
if "save_last_call_text" in request.POST or "send_last_call_request" in request.POST:
|
if "save_last_call_text" in request.POST or "send_last_call_request" in request.POST:
|
||||||
|
@ -724,4 +725,4 @@ def last_call(request, name):
|
||||||
last_call_form = form,
|
last_call_form = form,
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
|
@ -244,7 +244,7 @@ class SecrMeetingTestCase(TestCase):
|
||||||
response = self.client.get(url)
|
response = self.client.get(url)
|
||||||
self.assertEqual(response.status_code, 200)
|
self.assertEqual(response.status_code, 200)
|
||||||
q = PyQuery(response.content)
|
q = PyQuery(response.content)
|
||||||
self.assertEqual(len(q("#id_rooms_table tr input[type='checkbox']")),meeting.room_set.count())
|
self.assertEqual(len(q("#id_rooms_table tr input[type='checkbox']")),meeting.room_set.count()+1)
|
||||||
|
|
||||||
# test delete
|
# test delete
|
||||||
# first unschedule sessions so we can delete
|
# first unschedule sessions so we can delete
|
||||||
|
@ -441,4 +441,4 @@ class SecrMeetingTestCase(TestCase):
|
||||||
times = get_times(meeting,day)
|
times = get_times(meeting,day)
|
||||||
values = [ x[0] for x in times ]
|
values = [ x[0] for x in times ]
|
||||||
self.assertTrue(times)
|
self.assertTrue(times)
|
||||||
self.assertTrue(timeslot.time.strftime('%H%M') in values)
|
self.assertTrue(timeslot.time.strftime('%H%M') in values)
|
|
@ -52,17 +52,11 @@
|
||||||
<!-- END Breadcrumbs -->
|
<!-- END Breadcrumbs -->
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% comment %}
|
|
||||||
<!-- Removed per Glen 08-04-2010 -->
|
|
||||||
<!-- Javascript Warning -->
|
|
||||||
<noscript class="errornote"> You have Javascript disabled. Javascript is required for this application.</noscript>
|
|
||||||
{% endcomment %}
|
|
||||||
|
|
||||||
<!-- Django Messages -->
|
<!-- Django Messages -->
|
||||||
{% if messages %}
|
{% if messages %}
|
||||||
<ul class="messages">
|
<ul class="messages">
|
||||||
{% for message in messages %}
|
{% for message in messages %}
|
||||||
<li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li>
|
<li {% if message.tags %}class="{{ message.tags }}"{% endif %}>{{ message }}</li>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</ul>
|
</ul>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -83,6 +77,5 @@
|
||||||
{% block footer %}<div id="footer"></div>{% endblock %}
|
{% block footer %}<div id="footer"></div>{% endblock %}
|
||||||
</div>
|
</div>
|
||||||
<!-- END Container -->
|
<!-- END Container -->
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
|
@ -53,12 +53,6 @@
|
||||||
<!-- END Breadcrumbs -->
|
<!-- END Breadcrumbs -->
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% comment %}
|
|
||||||
<!-- Removed per Glen 08-04-2010 -->
|
|
||||||
<!-- Javascript Warning -->
|
|
||||||
<noscript class="errornote"> You have Javascript disabled. Javascript is required for this application.</noscript>
|
|
||||||
{% endcomment %}
|
|
||||||
|
|
||||||
<!-- Django Messages -->
|
<!-- Django Messages -->
|
||||||
{% if messages %}
|
{% if messages %}
|
||||||
<ul class="messages">
|
<ul class="messages">
|
||||||
|
|
|
@ -4,7 +4,11 @@
|
||||||
{% block title %}Groups - Search{% endblock %}
|
{% block title %}Groups - Search{% endblock %}
|
||||||
|
|
||||||
{% block extrahead %}{{ block.super }}
|
{% block extrahead %}{{ block.super }}
|
||||||
|
<link rel="stylesheet" href="{% static "ietf/css/list.css" %}">
|
||||||
<script src="{% static 'secr/js/utils.js' %}"></script>
|
<script src="{% static 'secr/js/utils.js' %}"></script>
|
||||||
|
<script src="{% static "ietf/js/list.js" %}"></script>
|
||||||
|
{% endblock %}{% endblock %}
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block breadcrumbs %}{{ block.super }}
|
{% block breadcrumbs %}{{ block.super }}
|
||||||
|
@ -31,4 +35,4 @@
|
||||||
</div> <!-- inline-group -->
|
</div> <!-- inline-group -->
|
||||||
</div> <!-- module -->
|
</div> <!-- module -->
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
|
@ -57,8 +57,8 @@
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<td width="320">{{ cname|title }}</td>
|
<td width="320">{{ cname|title }}</td>
|
||||||
<td><input type="text" value="{{ value }}" maxlength="255" class="wg_constraint" disabled><br>{{ field }} {{ field.label }}</td>
|
<td><input type="text" value="{{ value }}" maxlength="255" class="wg_constraint" disabled><br>{{ field }} {{ field.label }}</td>
|
||||||
{% endfor %}
|
|
||||||
</tr>
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<tr>
|
<tr>
|
||||||
<td colspan="2">BOF Sessions:</td>
|
<td colspan="2">BOF Sessions:</td>
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
<li><a href="https://www.ietf.org/instructions/meeting_materials_tool.html" target="_blank">Instructions</a>.</li>
|
<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>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>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><bold>Note:</bold> 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 %}
|
||||||
|
|
|
@ -10,29 +10,37 @@
|
||||||
<tr valign="top">
|
<tr valign="top">
|
||||||
<td>
|
<td>
|
||||||
<h3>IESG</h3>
|
<h3>IESG</h3>
|
||||||
<li> <a href="{% url 'ietf.secr.announcement.views.main' %}"><b>Announcement</b></a></li><br>
|
<ul>
|
||||||
<li> <a href="{% url 'ietf.secr.telechat.views.main' %}"><b>Telechat</b></a></li><br>
|
<li> <a href="{% url 'ietf.secr.announcement.views.main' %}"><b>Announcement</b></a></li>
|
||||||
<li> <a href="{% url 'ietf.secr.console.views.main' %}"><b>Console</b></a></li><br>
|
<li> <a href="{% url 'ietf.secr.telechat.views.main' %}"><b>Telechat</b></a></li>
|
||||||
|
<li> <a href="{% url 'ietf.secr.console.views.main' %}"><b>Console</b></a></li>
|
||||||
|
</ul>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<h3>IDs and WGs Process</h3>
|
<h3>IDs and WGs Process</h3>
|
||||||
<li> <a href="{% url "ietf.secr.areas.views.list_areas" %}"><b>Areas</b></a></li><br>
|
<ul>
|
||||||
<li> <a href="{% url 'ietf.secr.groups.views.search' %}"><b>Groups</b></a></li><br>
|
<li> <a href="{% url "ietf.secr.areas.views.list_areas" %}"><b>Areas</b></a></li>
|
||||||
<li> <a href="{% url 'ietf.secr.rolodex.views.search' %}"><b>Rolodex</b></a></li><br>
|
<li> <a href="{% url 'ietf.secr.groups.views.search' %}"><b>Groups</b></a></li>
|
||||||
<li> <a href="{% url 'ietf.secr.roles.views.main' %}"><b>Roles</b></a></li><br>
|
<li> <a href="{% url 'ietf.secr.rolodex.views.search' %}"><b>Rolodex</b></a></li>
|
||||||
|
<li> <a href="{% url 'ietf.secr.roles.views.main' %}"><b>Roles</b></a></li>
|
||||||
|
</ul>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr valign="top">
|
<tr valign="top">
|
||||||
<td>
|
<td>
|
||||||
<h3>Meetings and Proceedings</h3>
|
<h3>Meetings and Proceedings</h3>
|
||||||
<li> <a href="{% url "ietf.secr.sreq.views.main" %}"><b>Session Requests</b></a></li><br>
|
<ul>
|
||||||
<li> <a href="{% url 'ietf.secr.proceedings.views.main' %}"><b>Meeting Materials Manager (Proceedings)</b></a></li><br>
|
<li> <a href="{% url "ietf.secr.sreq.views.main" %}"><b>Session Requests</b></a></li>
|
||||||
<li> <a href="{% url "ietf.secr.meetings.views.main" %}"><b>Meeting Manager</b></a></li><br>
|
<li> <a href="{% url 'ietf.secr.proceedings.views.main' %}"><b>Meeting Materials Manager (Proceedings)</b></a></li>
|
||||||
<li> <a href="{% url "ietf.secr.meetings.views.blue_sheet_redirect" %}"><b>Blue Sheets</b></a></li><br>
|
<li> <a href="{% url "ietf.secr.meetings.views.main" %}"><b>Meeting Manager</b></a></li>
|
||||||
|
<li> <a href="{% url "ietf.secr.meetings.views.blue_sheet_redirect" %}"><b>Blue Sheets</b></a></li>
|
||||||
|
</ul>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<h3>IPR</h3>
|
<h3>IPR</h3>
|
||||||
<li> <a href="{% url 'ietf.ipr.views.admin' state='pending' %}"><b>IPR Admin</b></a></li><br>
|
<ul>
|
||||||
|
<li> <a href="{% url 'ietf.ipr.views.admin' state='pending' %}"><b>IPR Admin</b></a></li>
|
||||||
|
</ul>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
@ -43,9 +51,11 @@
|
||||||
<tr valign="top">
|
<tr valign="top">
|
||||||
<td>
|
<td>
|
||||||
<h3>Section 1</h3>
|
<h3>Section 1</h3>
|
||||||
<li> <a href="{% url "ietf.secr.sreq.views.main" %}"><b>Session Requests</b></a></li><br>
|
<ul>
|
||||||
<li> <a href="{% url 'ietf.secr.proceedings.views.main' %}"><b>Meeting Material Manager</b></a></li><br>
|
<li> <a href="{% url "ietf.secr.sreq.views.main" %}"><b>Session Requests</b></a></li>
|
||||||
<li> <a href="{% url 'ietf.secr.announcement.views.main' %}"><b>Announcements</b></a></li><br>
|
<li> <a href="{% url 'ietf.secr.proceedings.views.main' %}"><b>Meeting Material Manager</b></a></li>
|
||||||
|
<li> <a href="{% url 'ietf.secr.announcement.views.main' %}"><b>Announcements</b></a></li>
|
||||||
|
</ul>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<h3>Section 2</h3>
|
<h3>Section 2</h3>
|
||||||
|
@ -64,4 +74,4 @@
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
|
@ -14,9 +14,6 @@
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
<noscript class="errornote"> You have javascript disabled. Javascript is required for this application.</noscript>
|
|
||||||
|
|
||||||
<div class="module">
|
<div class="module">
|
||||||
<h2>Proceedings - Add</h2>
|
<h2>Proceedings - Add</h2>
|
||||||
<form id="proceedings-add-form" enctype="multipart/form-data" action="" method="post">{% csrf_token %}
|
<form id="proceedings-add-form" enctype="multipart/form-data" action="" method="post">{% csrf_token %}
|
||||||
|
@ -27,5 +24,4 @@
|
||||||
</form>
|
</form>
|
||||||
</div> <!-- module -->
|
</div> <!-- module -->
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
|
@ -28,12 +28,12 @@
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
<form action="" method="post">{% csrf_token %}
|
<form action="" method="post">{% csrf_token %}
|
||||||
<p>
|
<table>
|
||||||
{{ form }}
|
{{ form }}
|
||||||
<input type="submit" value="Select" />
|
</table>
|
||||||
</p>
|
<input type="submit" value="Select" />
|
||||||
</form>
|
</form>
|
||||||
</div> <!-- inline-related -->
|
</div> <!-- inline-related -->
|
||||||
</div> <!-- module -->
|
</div> <!-- module -->
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
|
@ -4,7 +4,7 @@
|
||||||
|
|
||||||
<div class="module interim-container">
|
<div class="module interim-container">
|
||||||
<h2>Meeting - {{ meeting }}</h2>
|
<h2>Meeting - {{ meeting }}</h2>
|
||||||
<p><h3>Session: {{ slot.name }}</h3></p>
|
<h3>Session: {{ slot.name }}</h3>
|
||||||
<form id="misc-session-edit-form" enctype="multipart/form-data" action="." method="post">{% csrf_token %}
|
<form id="misc-session-edit-form" enctype="multipart/form-data" action="." method="post">{% csrf_token %}
|
||||||
<table class="full-width amstable">
|
<table class="full-width amstable">
|
||||||
{{ form.as_table }}
|
{{ form.as_table }}
|
||||||
|
|
|
@ -55,7 +55,7 @@
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<form id="timeslot-form" action="" method="post">{% csrf_token %}
|
<form id="timeslot-form" action="" method="post">{% csrf_token %}
|
||||||
<table id="timeslot-form" class="full-width amstable">
|
<table class="full-width amstable">
|
||||||
<col width="150">
|
<col width="150">
|
||||||
{{ form.as_table }}
|
{{ form.as_table }}
|
||||||
<tr><td colspan="2" align="center"><input type="submit" name="submit" value="Add" /></td></tr>
|
<tr><td colspan="2" align="center"><input type="submit" name="submit" value="Add" /></td></tr>
|
||||||
|
@ -69,7 +69,6 @@
|
||||||
</ul>
|
</ul>
|
||||||
</div> <!-- button-group -->
|
</div> <!-- button-group -->
|
||||||
|
|
||||||
</form>
|
|
||||||
</div> <!-- module -->
|
</div> <!-- module -->
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -40,7 +40,6 @@
|
||||||
{{ form }}
|
{{ form }}
|
||||||
</table>
|
</table>
|
||||||
</div> <!-- inline-related -->
|
</div> <!-- inline-related -->
|
||||||
</div> <!-- inline-group -->
|
|
||||||
|
|
||||||
<div class="button-group">
|
<div class="button-group">
|
||||||
<ul>
|
<ul>
|
||||||
|
@ -57,25 +56,4 @@
|
||||||
|
|
||||||
{% block footer-extras %}
|
{% block footer-extras %}
|
||||||
{% include "includes/meetings_footer.html" %}
|
{% include "includes/meetings_footer.html" %}
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -16,6 +16,7 @@
|
||||||
<table id="id_rooms_table" class="full-width">
|
<table id="id_rooms_table" class="full-width">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
|
<th></th>
|
||||||
{% for field in formset.forms.0.visible_fields %}
|
{% for field in formset.forms.0.visible_fields %}
|
||||||
<th>{{ field.label|capfirst }}</th>
|
<th>{{ field.label|capfirst }}</th>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
@ -27,9 +28,11 @@
|
||||||
<tr><td colspan="3">{{ form.non_field_errors }}</td></tr>
|
<tr><td colspan="3">{{ form.non_field_errors }}</td></tr>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<tr class="{% cycle 'row1' 'row2' %}">
|
<tr class="{% cycle 'row1' 'row2' %}">
|
||||||
|
<td>
|
||||||
{% for hidden in form.hidden_fields %}
|
{% for hidden in form.hidden_fields %}
|
||||||
{{ hidden }}
|
{{ hidden }}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
</td>
|
||||||
{% for field in form.visible_fields %}
|
{% for field in form.visible_fields %}
|
||||||
<td>
|
<td>
|
||||||
{{ field.errors }}
|
{{ field.errors }}
|
||||||
|
@ -38,16 +41,15 @@
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
{% if options_form %}{{ options_form }}{% endif %}
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
</form>
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
{% if options_form %}{{ options_form }}{% endif %}
|
|
||||||
{% include "includes/buttons_save.html" %}
|
{% include "includes/buttons_save.html" %}
|
||||||
|
|
||||||
</form>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
|
@ -52,7 +52,6 @@
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</form>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
|
@ -40,13 +40,12 @@
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
<div class="module interim-container">
|
<div class="module interim-container">
|
||||||
|
<form id="roles-form" action="" method="post">{% csrf_token %}
|
||||||
<h2>Role Tool</h2>
|
<h2>Role Tool</h2>
|
||||||
<div class="inline-related">
|
<div class="inline-related">
|
||||||
<h3><b>Select Group</b></h3>
|
<h3><b>Select Group</b></h3>
|
||||||
<p>Select a Group to change roles.</p>
|
<p>Select a Group to change roles.</p>
|
||||||
<form id="roles-form".>
|
|
||||||
{{ group_form.as_p }}
|
{{ group_form.as_p }}
|
||||||
</form>
|
|
||||||
</div> <!-- inline-related -->
|
</div> <!-- inline-related -->
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
|
@ -61,20 +60,19 @@
|
||||||
<h2></h2>
|
<h2></h2>
|
||||||
<h3>Add Role</h3>
|
<h3>Add Role</h3>
|
||||||
{% with role_form as form %}
|
{% with role_form as form %}
|
||||||
<form id="roles-form" action="" method="post">{% csrf_token %}
|
|
||||||
{{ role_form.non_field_errors }}
|
{{ role_form.non_field_errors }}
|
||||||
<table class="full-width">
|
<table class="full-width">
|
||||||
<tr>
|
<tr>
|
||||||
{{ form.group_acronym.errors }}{{ form.group_acronym }}
|
<td>{{ form.group_acronym.errors }}{{ form.group_acronym }}</td>
|
||||||
<td>{{ form.name.errors }}{{ form.name }}</td>
|
<td>{{ form.name.errors }}{{ form.name }}</td>
|
||||||
<td>{{ form.person.errors }}{{ form.person }}{% if form.person.help_text %}<br>{{ form.person.help_text }}{% endif %}</td>
|
<td>{{ form.person.errors }}{{ form.person }}{% if form.person.help_text %}<br>{{ form.person.help_text }}{% endif %}</td>
|
||||||
<td>{{ form.email.errors }}{{ form.email }}{% if form.email.help_text %}<br>{{ form.email.help_text }}{% endif %}</td>
|
<td>{{ form.email.errors }}{{ form.email }}{% if form.email.help_text %}<br>{{ form.email.help_text }}{% endif %}</td>
|
||||||
<td><input type="submit" name="submit" value="Add" /></td>
|
<td><input type="submit" name="submit" value="Add" /></td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</form>
|
|
||||||
{% endwith %}
|
{% endwith %}
|
||||||
</div> <!-- inline-related -->
|
</div> <!-- inline-related -->
|
||||||
|
</form>
|
||||||
|
|
||||||
<div class="button-group">
|
<div class="button-group">
|
||||||
<ul>
|
<ul>
|
||||||
|
|
|
@ -29,6 +29,7 @@
|
||||||
<table id="rolodex-email-table" class="full-width">
|
<table id="rolodex-email-table" class="full-width">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
|
<th></th>
|
||||||
{% for field in email_formset.forms.0 %}
|
{% for field in email_formset.forms.0 %}
|
||||||
{% if not field.is_hidden %}
|
{% if not field.is_hidden %}
|
||||||
<th>{{ field.label }}</th>
|
<th>{{ field.label }}</th>
|
||||||
|
@ -40,10 +41,12 @@
|
||||||
{% for form in email_formset.forms %}
|
{% for form in email_formset.forms %}
|
||||||
{% if form.non_field_errors %}{{ form.non_field_errors }}{% endif %}
|
{% if form.non_field_errors %}{{ form.non_field_errors }}{% endif %}
|
||||||
<tr class="{% cycle 'row1' 'row2' %}">
|
<tr class="{% cycle 'row1' 'row2' %}">
|
||||||
|
<td>
|
||||||
{# Include the hidden fields in the form #}
|
{# Include the hidden fields in the form #}
|
||||||
{% for hidden in form.hidden_fields %}
|
{% for hidden in form.hidden_fields %}
|
||||||
{{ hidden }}
|
{{ hidden }}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
</td>
|
||||||
{% for field in form.visible_fields %}
|
{% for field in form.visible_fields %}
|
||||||
<td>
|
<td>
|
||||||
{{ field.errors }}
|
{{ field.errors }}
|
||||||
|
@ -59,8 +62,8 @@
|
||||||
|
|
||||||
{% include "includes/buttons_save_cancel.html" %}
|
{% include "includes/buttons_save_cancel.html" %}
|
||||||
|
|
||||||
</form>
|
</div> <!-- module -->
|
||||||
|
</form>
|
||||||
|
|
||||||
</div> <!-- module -->
|
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
|
@ -17,9 +17,9 @@
|
||||||
<tr><td>Name:</td><td>{{ person.name }}</td></tr>
|
<tr><td>Name:</td><td>{{ person.name }}</td></tr>
|
||||||
<tr><td>Ascii Name:</td><td>{{ person.ascii }}</td></tr>
|
<tr><td>Ascii Name:</td><td>{{ person.ascii }}</td></tr>
|
||||||
<tr><td>Short Name:</td><td>{{ person.ascii_short }}</td></tr>
|
<tr><td>Short Name:</td><td>{{ person.ascii_short }}</td></tr>
|
||||||
<tr><td>Aliases:</td><td>{% for alias in person.alias_set.all %}{% if not forloop.first %}, {% endif %}{{ alias.name }}{% endfor %}
|
<tr><td>Aliases:</td><td>{% for alias in person.alias_set.all %}{% if not forloop.first %}, {% endif %}{{ alias.name }}{% endfor %}</td>
|
||||||
<tr><td>User:</td><td>{{ person.user }}</td></tr>
|
<tr><td>User:</td><td>{{ person.user }}</td></tr>
|
||||||
<tr></tr>
|
<tr><td></td><td></td></tr>
|
||||||
{% for email in person.emails %}
|
{% for email in person.emails %}
|
||||||
<tr><td>Email {{ forloop.counter }}:</td><td>{{ email }}</td></tr>
|
<tr><td>Email {{ forloop.counter }}:</td><td>{{ email }}</td></tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
@ -66,4 +66,4 @@
|
||||||
</div> <!-- view-buttons -->
|
</div> <!-- view-buttons -->
|
||||||
|
|
||||||
</div> <!-- view-container -->
|
</div> <!-- view-container -->
|
||||||
{% endblock %}
|
{% endblock %}
|
|
@ -19,14 +19,6 @@
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
<noscript>
|
|
||||||
<div style="position: fixed; top: 0px; left: 0px; z-index: 3000;
|
|
||||||
height: 100%; width: 100%; background-color: #FFFFFF">
|
|
||||||
<p style="margin-left: 10px">This page requires JavaScript.</p>
|
|
||||||
</div>
|
|
||||||
</noscript>
|
|
||||||
|
|
||||||
<div class="module interim-container">
|
<div class="module interim-container">
|
||||||
<h2>IETF {{ meeting.number }}: Edit Session Request</h2>
|
<h2>IETF {{ meeting.number }}: Edit Session Request</h2>
|
||||||
<div class="inline-related">
|
<div class="inline-related">
|
||||||
|
@ -35,9 +27,9 @@
|
||||||
{% include "includes/sessions_request_form.html" %}
|
{% include "includes/sessions_request_form.html" %}
|
||||||
|
|
||||||
</div> <!-- module -->
|
</div> <!-- module -->
|
||||||
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block footer-extras %}
|
{% block footer-extras %}
|
||||||
{% include "includes/sessions_footer.html" %}
|
{% include "includes/sessions_footer.html" %}
|
||||||
{% endblock %}
|
{% endblock %}
|
|
@ -19,14 +19,6 @@
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
<noscript>
|
|
||||||
<div style="position: fixed; top: 0px; left: 0px; z-index: 3000;
|
|
||||||
height: 100%; width: 100%; background-color: #FFFFFF">
|
|
||||||
<p style="margin-left: 10px">This page requires JavaScript.</p>
|
|
||||||
</div>
|
|
||||||
</noscript>
|
|
||||||
|
|
||||||
<div class="module interim-container">
|
<div class="module interim-container">
|
||||||
<h2>IETF {{ meeting.number }}: New {% if is_virtual %}Virtual {% endif %}Session Request</h2>
|
<h2>IETF {{ meeting.number }}: New {% if is_virtual %}Virtual {% endif %}Session Request</h2>
|
||||||
<div class="inline-related">
|
<div class="inline-related">
|
||||||
|
@ -35,7 +27,7 @@
|
||||||
<li><button onclick="if (window.confirm('A message will be sent to agenda@ietf.com as well as to the area director(s).\n\nContinue?')) { window.location='{% url "ietf.secr.sreq.views.no_session" acronym=group.acronym %}'};">Send a notification that the group does not plan to hold a session at IETF {{ meeting.number }}</button></li>
|
<li><button onclick="if (window.confirm('A message will be sent to agenda@ietf.com as well as to the area director(s).\n\nContinue?')) { window.location='{% url "ietf.secr.sreq.views.no_session" acronym=group.acronym %}'};">Send a notification that the group does not plan to hold a session at IETF {{ meeting.number }}</button></li>
|
||||||
<li><button onclick="window.location='{% url "ietf.secr.sreq.views.new" acronym=group.acronym %}?previous'">Retrieve all information from previous meeting</button></li>
|
<li><button onclick="window.location='{% url "ietf.secr.sreq.views.new" acronym=group.acronym %}?previous'">Retrieve all information from previous meeting</button></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
</div>
|
||||||
{% include "includes/sessions_request_form.html" %}
|
{% include "includes/sessions_request_form.html" %}
|
||||||
|
|
||||||
</div> <!-- module -->
|
</div> <!-- module -->
|
||||||
|
@ -44,4 +36,4 @@
|
||||||
|
|
||||||
{% block footer-extras %}
|
{% block footer-extras %}
|
||||||
{% include "includes/sessions_footer.html" %}
|
{% include "includes/sessions_footer.html" %}
|
||||||
{% endblock %}
|
{% endblock %}
|
|
@ -32,9 +32,8 @@
|
||||||
{% else %}
|
{% else %}
|
||||||
<div>None</div>
|
<div>None</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</li>
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
</li>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</ul>
|
</ul>
|
||||||
|
@ -61,4 +60,4 @@
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
|
@ -46,7 +46,7 @@
|
||||||
{% endwith %}
|
{% endwith %}
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</tr>
|
|
||||||
</table>
|
</table>
|
||||||
<div class="telechat-button">
|
<div class="telechat-button">
|
||||||
<ul><li><button type="submit" name="submit" value="update_ballot">Update Ballot</button></li></ul>
|
<ul><li><button type="submit" name="submit" value="update_ballot">Update Ballot</button></li></ul>
|
||||||
|
@ -98,4 +98,4 @@
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
|
@ -1,7 +1,7 @@
|
||||||
{% extends "telechat/base_telechat.html" %}
|
{% extends "telechat/base_telechat.html" %}
|
||||||
|
|
||||||
{% block subsection %}
|
{% block subsection %}
|
||||||
<div id="telechat-main">
|
<div id="telechat-main-DUPLICATE">
|
||||||
<h3>Select a Telechat</h3>
|
<h3>Select a Telechat</h3>
|
||||||
<form action="" method="post">{% csrf_token %}
|
<form action="" method="post">{% csrf_token %}
|
||||||
{{ form.date.label_tag }} {{ form.date }} <button type="submit" name="submit" value="Select">Select</button>
|
{{ form.date.label_tag }} {{ form.date }} <button type="submit" name="submit" value="Select">Select</button>
|
||||||
|
@ -9,4 +9,4 @@
|
||||||
<br>
|
<br>
|
||||||
<a href="/admin/iesg/telechatdate/" target="_blank">Add a new Telechat Date</a>
|
<a href="/admin/iesg/telechatdate/" target="_blank">Add a new Telechat Date</a>
|
||||||
</div>
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
|
@ -16,6 +16,8 @@ table .sort:hover {
|
||||||
table .sort:after {
|
table .sort:after {
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
font-family: 'bootstrap-icons';
|
font-family: 'bootstrap-icons';
|
||||||
|
font-size: larger;
|
||||||
|
color: $secondary;
|
||||||
content: '\f283'; // chevron-expand
|
content: '\f283'; // chevron-expand
|
||||||
float: right;
|
float: right;
|
||||||
padding-right: .25em;
|
padding-right: .25em;
|
||||||
|
|
|
@ -95,13 +95,13 @@ $(document)
|
||||||
}
|
}
|
||||||
attachTo.append(menu.join(""));
|
attachTo.append(menu.join(""));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!("ontouchstart" in document.documentElement)) {
|
||||||
|
$("ul.nav li.dropdown, ul.nav li.dropend")
|
||||||
|
.on("mouseenter mouseleave", dropdown_hover);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
if (!("ontouchstart" in document.documentElement)) {
|
|
||||||
$("ul.nav li.dropdown, ul.nav li.dropend")
|
|
||||||
.on("mouseenter mouseleave", dropdown_hover);
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
// Automatically add a navigation pane to long pages
|
// Automatically add a navigation pane to long pages
|
||||||
|
|
|
@ -99,13 +99,13 @@
|
||||||
<ul>
|
<ul>
|
||||||
<li>
|
<li>
|
||||||
If a document has an rfc-editor state, you can select for it by asking for, e.g.,
|
If a document has an rfc-editor state, you can select for it by asking for, e.g.,
|
||||||
<a href="https://datatracker.ietf.org/api/v1/doc/document/?limit=0&name__contains=-v6ops-&states__type__slug__in=draft-rfceditor">
|
<a href="https://datatracker.ietf.org/api/v1/doc/document/?limit=0&name__contains=-v6ops-&states__type__slug__in=draft-rfceditor">
|
||||||
v6ops documents which match <code>states__type__slug__in=draft-rfceditor</code>
|
v6ops documents which match <code>states__type__slug__in=draft-rfceditor</code>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
If a document has an IESG state, you can select for it by asking for, e.g.,
|
If a document has an IESG state, you can select for it by asking for, e.g.,
|
||||||
<a href="https://datatracker.ietf.org/api/v1/doc/document/?name__contains=-v6ops&states__type__slug__in=draft-iesg">
|
<a href="https://datatracker.ietf.org/api/v1/doc/document/?name__contains=-v6ops&states__type__slug__in=draft-iesg">
|
||||||
v6ops documents which match <code>states__type__slug__in=draft-iesg</code>
|
v6ops documents which match <code>states__type__slug__in=draft-iesg</code>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
@ -127,22 +127,22 @@
|
||||||
You could either fetch and remember the different state groups of interest to you
|
You could either fetch and remember the different state groups of interest to you
|
||||||
with queries like
|
with queries like
|
||||||
<pre>
|
<pre>
|
||||||
$ curl 'https://datatracker.ietf.org/api/v1/doc/state/?format=json&limit=0&type__slug__in=draft-rfceditor'
|
$ curl 'https://datatracker.ietf.org/api/v1/doc/state/?format=json&limit=0&type__slug__in=draft-rfceditor'
|
||||||
$ curl 'https://datatracker.ietf.org/api/v1/doc/state/?format=json&limit=0&type__slug__in=draft-iesg'
|
$ curl 'https://datatracker.ietf.org/api/v1/doc/state/?format=json&limit=0&type__slug__in=draft-iesg'
|
||||||
$ curl 'https://datatracker.ietf.org/api/v1/doc/state/?format=json&limit=0&type__slug__in=draft-stream-ietf'
|
$ curl 'https://datatracker.ietf.org/api/v1/doc/state/?format=json&limit=0&type__slug__in=draft-stream-ietf'
|
||||||
</pre>
|
</pre>
|
||||||
and then match the listed "resource_uri" of the results to the states listed for each
|
and then match the listed "resource_uri" of the results to the states listed for each
|
||||||
document when you ask for
|
document when you ask for
|
||||||
<pre>
|
<pre>
|
||||||
$ curl 'https://datatracker.ietf.org/api/v1/doc/document/?limit=0&name__contains=-v6ops-'
|
$ curl 'https://datatracker.ietf.org/api/v1/doc/document/?limit=0&name__contains=-v6ops-'
|
||||||
</pre>
|
</pre>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
Or alternatively you could do a series of queries asking for matches to the RFC Editor
|
Or alternatively you could do a series of queries asking for matches to the RFC Editor
|
||||||
state first, then the IESG state, then the Stream state, and exclude earlier hits:
|
state first, then the IESG state, then the Stream state, and exclude earlier hits:
|
||||||
<pre>
|
<pre>
|
||||||
$ curl 'https://datatracker.ietf.org/api/v1/doc/document/?limit=0&name__contains=-v6ops-&states__type__slug__in=draft-rfceditor' ...
|
$ curl 'https://datatracker.ietf.org/api/v1/doc/document/?limit=0&name__contains=-v6ops-&states__type__slug__in=draft-rfceditor' ...
|
||||||
$ curl 'https://datatracker.ietf.org/api/v1/doc/document/?limit=0&name__contains=-v6ops-&states__type__slug__in=draft-iesg' ...
|
$ curl 'https://datatracker.ietf.org/api/v1/doc/document/?limit=0&name__contains=-v6ops-&states__type__slug__in=draft-iesg' ...
|
||||||
</pre>
|
</pre>
|
||||||
etc.
|
etc.
|
||||||
</li>
|
</li>
|
||||||
|
|
|
@ -79,7 +79,7 @@
|
||||||
<div class="pt-3 container-fluid">
|
<div class="pt-3 container-fluid">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
{% if request.COOKIES.left_menu == "on" and not hide_menu %}
|
{% if request.COOKIES.left_menu == "on" and not hide_menu %}
|
||||||
<div class="col-1 d-none d-md-block border-end lh-sm leftmenu small">
|
<div class="col-1 d-none d-md-block bg-light py-3 lh-sm leftmenu small">
|
||||||
<ul class="nav nav-pills flex-column">
|
<ul class="nav nav-pills flex-column">
|
||||||
{% include "base/menu.html" with flavor="left" %}
|
{% include "base/menu.html" with flavor="left" %}
|
||||||
</ul>
|
</ul>
|
||||||
|
|
|
@ -19,394 +19,406 @@
|
||||||
<ul class="dropdown-menu {% if flavor == 'top' %}mt-n1{% else %}ms-n1{% endif %}">
|
<ul class="dropdown-menu {% if flavor == 'top' %}mt-n1{% else %}ms-n1{% endif %}">
|
||||||
{% else %}
|
{% else %}
|
||||||
<span class="fw-bolder">Groups</span>
|
<span class="fw-bolder">Groups</span>
|
||||||
{% endif %}
|
|
||||||
{% if flavor == 'top' %}<li class="dropdown-header">By area/parent</li>{% endif %}
|
|
||||||
{% wg_menu flavor %}
|
|
||||||
<li class="dropend">
|
|
||||||
<a class="dropdown-item dropdown-toggle {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
|
||||||
href="{% url "ietf.group.views.active_groups" %}">
|
|
||||||
Other
|
|
||||||
</a>
|
|
||||||
{% active_groups_menu flavor %}
|
|
||||||
</li>
|
</li>
|
||||||
{% if flavor == 'top' %}<li class="dropdown-divider"></li>{% endif %}
|
{% endif %}
|
||||||
<li {% if flavor == 'top' %}class="dropdown-header"{% else %}class="nav-item fw-bolder"{% endif %}>New work</li>
|
{% if flavor == 'top' %}<li class="dropdown-header">By area/parent</li>{% endif %}
|
||||||
<li>
|
{% wg_menu flavor %}
|
||||||
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
<li class="dropend">
|
||||||
href="{% url "ietf.group.views.chartering_groups" %}">
|
<a class="dropdown-item dropdown-toggle {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
||||||
Chartering groups
|
href="{% url "ietf.group.views.active_groups" %}">
|
||||||
</a>
|
Other
|
||||||
</li>
|
</a>
|
||||||
<li>
|
{% active_groups_menu flavor %}
|
||||||
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
|
||||||
href="{% url "ietf.group.views.bofs" group_type="wg" %}">
|
|
||||||
BOFs
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
|
||||||
href="{% url "ietf.doc.views_bofreq.bof_requests" %}">
|
|
||||||
BOF Requests
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
{% if flavor == 'top' %}<li 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 %}"
|
|
||||||
href="{% url "ietf.group.views.concluded_groups" %}">
|
|
||||||
Concluded groups
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
|
||||||
href="{% url 'ietf.mailinglists.views.nonwg' %}">
|
|
||||||
Non-WG lists
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
{% if flavor == "top" %}</ul>{% endif %}
|
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item dropdown">
|
{% if flavor == 'top' %}<li class="dropdown-divider"></li>{% endif %}
|
||||||
{% if flavor == "top" %}
|
<li {% if flavor == 'top' %}class="dropdown-header"{% else %}class="nav-item fw-bolder"{% endif %}>New work</li>
|
||||||
<a href="#"
|
<li>
|
||||||
class="nav-link dropdown-toggle"
|
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
||||||
role="button"
|
href="{% url "ietf.group.views.chartering_groups" %}">
|
||||||
data-bs-toggle="dropdown"
|
Chartering groups
|
||||||
aria-expanded="false">
|
</a>
|
||||||
Documents
|
</li>
|
||||||
|
<li>
|
||||||
|
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
||||||
|
href="{% url "ietf.group.views.bofs" group_type="wg" %}">
|
||||||
|
BOFs
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
||||||
|
href="{% url "ietf.doc.views_bofreq.bof_requests" %}">
|
||||||
|
BOF Requests
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{% if flavor == 'top' %}<li 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 %}"
|
||||||
|
href="{% url "ietf.group.views.concluded_groups" %}">
|
||||||
|
Concluded groups
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
||||||
|
href="{% url 'ietf.mailinglists.views.nonwg' %}">
|
||||||
|
Non-WG lists
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{% if flavor == "top" %}
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
{% endif %}
|
||||||
|
<li class="nav-item dropdown">
|
||||||
|
{% if flavor == "top" %}
|
||||||
|
<a href="#"
|
||||||
|
class="nav-link dropdown-toggle"
|
||||||
|
role="button"
|
||||||
|
data-bs-toggle="dropdown"
|
||||||
|
aria-expanded="false">
|
||||||
|
Documents
|
||||||
|
</a>
|
||||||
|
<ul class="dropdown-menu {% if flavor == 'top' %}mt-n1{% else %}ms-n1{% endif %}">
|
||||||
|
{% else %}
|
||||||
|
<span class="fw-bolder">Documents</span>
|
||||||
|
</li>
|
||||||
|
{% endif %}
|
||||||
|
<li>
|
||||||
|
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
||||||
|
href="{% url "ietf.doc.views_search.search" %}">
|
||||||
|
Search
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
||||||
|
href="{% url "ietf.doc.views_search.recent_drafts" %}">
|
||||||
|
Recent drafts
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
||||||
|
href="{% url "ietf.submit.views.upload_submission" %}">
|
||||||
|
Draft submission
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{% if user and user.is_authenticated %}
|
||||||
|
<li>
|
||||||
|
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
||||||
|
href="{% url "ietf.community.views.view_list" user.username %}">
|
||||||
|
My tracked docs
|
||||||
</a>
|
</a>
|
||||||
<ul class="dropdown-menu {% if flavor == 'top' %}mt-n1{% else %}ms-n1{% endif %}">
|
</li>
|
||||||
{% else %}
|
{% if user|has_role:"Area Director,Secretariat" %}
|
||||||
<span class="fw-bolder">Documents</span>
|
{% if flavor == 'top' %}<li class="dropdown-divider"></li>{% endif %}
|
||||||
{% endif %}
|
|
||||||
<li>
|
<li>
|
||||||
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
||||||
href="{% url "ietf.doc.views_search.search" %}">
|
href="{% url 'ietf.doc.views_status_change.rfc_status_changes' %}">
|
||||||
Search
|
RFC status changes
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
{% endif %}
|
||||||
|
{% if flavor == 'top' %}<li 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' %}">
|
||||||
|
IRSG ballot status
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{% if user|has_role:"WG Chair,RG Chair" %}
|
||||||
|
{% if flavor == 'top' %}<li class="dropdown-divider"></li>{% endif %}
|
||||||
|
<li {% if flavor == 'top' %}class="dropdown-header"{% else %}class="nav-item fw-bolder"{% endif %}>Manage</li>
|
||||||
<li>
|
<li>
|
||||||
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
||||||
href="{% url "ietf.doc.views_search.recent_drafts" %}">
|
href="{% url "ietf.submit.views.approvals" %}">
|
||||||
Recent drafts
|
Approve a draft
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
{% for g in user|docman_groups %}
|
||||||
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
|
||||||
href="{% url "ietf.submit.views.upload_submission" %}">
|
|
||||||
Draft submission
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
{% if user and user.is_authenticated %}
|
|
||||||
<li>
|
<li>
|
||||||
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
||||||
href="{% url "ietf.community.views.view_list" user.username %}">
|
href="{% url "ietf.group.views.group_documents" g.acronym %}">
|
||||||
My tracked docs
|
{{ g.acronym }} {{ g.type.slug }} docs
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
{% if user|has_role:"Area Director,Secretariat" %}
|
{% endfor %}
|
||||||
{% if flavor == 'top' %}<li class="dropdown-divider"></li>{% endif %}
|
{% for g in user|matman_groups %}
|
||||||
<li>
|
|
||||||
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
|
||||||
href="{% url 'ietf.doc.views_status_change.rfc_status_changes' %}">
|
|
||||||
RFC status changes
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
{% endif %}
|
|
||||||
{% if flavor == 'top' %}<li class="dropdown-divider"></li>{% endif %}
|
|
||||||
<li>
|
<li>
|
||||||
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
||||||
href="{% url 'ietf.doc.views_ballot.irsg_ballot_status' %}">
|
href="{% url "ietf.group.views.meetings" g.acronym %}">
|
||||||
IRSG ballot status
|
{{ g.acronym }} {{ g.type.slug }} meetings
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
{% if user|has_role:"WG Chair,RG Chair" %}
|
{% endfor %}
|
||||||
{% if flavor == 'top' %}<li class="dropdown-divider"></li>{% endif %}
|
{% endif %}
|
||||||
<li {% if flavor == 'top' %}class="dropdown-header"{% else %}class="nav-item fw-bolder"{% endif %}>Manage</li>
|
{% if user|has_role:"Review Team Secretary" %}
|
||||||
<li>
|
|
||||||
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
|
||||||
href="{% url "ietf.submit.views.approvals" %}">
|
|
||||||
Approve a draft
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
{% for g in user|docman_groups %}
|
|
||||||
<li>
|
|
||||||
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
|
||||||
href="{% url "ietf.group.views.group_documents" g.acronym %}">
|
|
||||||
{{ g.acronym }} {{ g.type.slug }} docs
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
{% endfor %}
|
|
||||||
{% for g in user|matman_groups %}
|
|
||||||
<li>
|
|
||||||
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
|
||||||
href="{% url "ietf.group.views.meetings" g.acronym %}">
|
|
||||||
{{ g.acronym }} {{ g.type.slug }} meetings
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
{% endfor %}
|
|
||||||
{% endif %}
|
|
||||||
{% if user|has_role:"Review Team Secretary" %}
|
|
||||||
{% if flavor == 'top' %}
|
|
||||||
<li class="dropdown-divider">
|
|
||||||
</li>
|
|
||||||
{% endif %}
|
|
||||||
<li {% if flavor == 'top' %}class="dropdown-header"{% else %}class="nav-item fw-bolder"{% endif %}>
|
|
||||||
Review Teams
|
|
||||||
</li>
|
|
||||||
{% for g in user|managed_review_groups %}
|
|
||||||
<li>
|
|
||||||
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
|
||||||
href="{% url "ietf.group.views.review_requests" g.acronym %}">
|
|
||||||
{{ g.acronym }} reviews
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
{% endfor %}
|
|
||||||
{% endif %}
|
|
||||||
{% if user|active_nomcoms %}
|
|
||||||
{% if flavor == 'top' %}
|
|
||||||
<li class="dropdown-divider">
|
|
||||||
</li>
|
|
||||||
{% endif %}
|
|
||||||
<li {% if flavor == 'top' %}class="dropdown-header"{% else %}class="nav-item fw-bolder"{% endif %}>
|
|
||||||
NomComs
|
|
||||||
</li>
|
|
||||||
{% for g in user|active_nomcoms %}
|
|
||||||
<li>
|
|
||||||
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
|
||||||
href="{% url "ietf.nomcom.views.private_index" g.nomcom_set.first.year %}">
|
|
||||||
{{ g.acronym|capfirst }}
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
{% endfor %}
|
|
||||||
{% endif %}
|
|
||||||
{% endif %}
|
|
||||||
{% if flavor == 'top' %}
|
{% if flavor == 'top' %}
|
||||||
<li class="dropdown-divider">
|
<li class="dropdown-divider">
|
||||||
</li>
|
</li>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<li {% if flavor == 'top' %}class="dropdown-header"{% else %}class="nav-item fw-bolder"{% endif %}>
|
<li {% if flavor == 'top' %}class="dropdown-header"{% else %}class="nav-item fw-bolder"{% endif %}>
|
||||||
RFC streams
|
Review Teams
|
||||||
</li>
|
</li>
|
||||||
<li>
|
{% for g in user|managed_review_groups %}
|
||||||
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
<li>
|
||||||
href="{% url "ietf.group.views.stream_documents" acronym="iab" %}">
|
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
||||||
IAB
|
href="{% url "ietf.group.views.review_requests" g.acronym %}">
|
||||||
</a>
|
{{ g.acronym }} reviews
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{% endfor %}
|
||||||
|
{% endif %}
|
||||||
|
{% if user|active_nomcoms %}
|
||||||
|
{% if flavor == 'top' %}
|
||||||
|
<li class="dropdown-divider">
|
||||||
|
</li>
|
||||||
|
{% endif %}
|
||||||
|
<li {% if flavor == 'top' %}class="dropdown-header"{% else %}class="nav-item fw-bolder"{% endif %}>
|
||||||
|
NomComs
|
||||||
</li>
|
</li>
|
||||||
<li>
|
{% for g in user|active_nomcoms %}
|
||||||
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
<li>
|
||||||
href="{% url "ietf.group.views.stream_documents" acronym="irtf" %}">
|
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
||||||
IRTF
|
href="{% url "ietf.nomcom.views.private_index" g.nomcom_set.first.year %}">
|
||||||
</a>
|
{{ g.acronym|capfirst }}
|
||||||
</li>
|
</a>
|
||||||
<li>
|
</li>
|
||||||
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
{% endfor %}
|
||||||
href="{% url "ietf.group.views.stream_documents" acronym="ise" %}">
|
{% endif %}
|
||||||
ISE
|
{% endif %}
|
||||||
</a>
|
{% if flavor == 'top' %}
|
||||||
</li>
|
<li class="dropdown-divider">
|
||||||
{% if flavor == 'top' %}</ul>{% endif %}
|
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item dropdown">
|
{% endif %}
|
||||||
{% if flavor == "top" %}
|
<li {% if flavor == 'top' %}class="dropdown-header"{% else %}class="nav-item fw-bolder"{% endif %}>
|
||||||
<a href="#"
|
RFC streams
|
||||||
class="nav-link dropdown-toggle"
|
</li>
|
||||||
role="button"
|
<li>
|
||||||
data-bs-toggle="dropdown"
|
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
||||||
aria-expanded="false">
|
href="{% url "ietf.group.views.stream_documents" acronym="iab" %}">
|
||||||
|
IAB
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
||||||
|
href="{% url "ietf.group.views.stream_documents" acronym="irtf" %}">
|
||||||
|
IRTF
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
||||||
|
href="{% url "ietf.group.views.stream_documents" acronym="ise" %}">
|
||||||
|
ISE
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{% if flavor == 'top' %}
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
{% endif %}
|
||||||
|
<li class="nav-item dropdown">
|
||||||
|
{% if flavor == "top" %}
|
||||||
|
<a href="#"
|
||||||
|
class="nav-link dropdown-toggle"
|
||||||
|
role="button"
|
||||||
|
data-bs-toggle="dropdown"
|
||||||
|
aria-expanded="false">
|
||||||
|
Meetings
|
||||||
|
</a>
|
||||||
|
<ul class="dropdown-menu {% if flavor == 'top' %}mt-n1{% else %}ms-n1{% endif %}">
|
||||||
|
{% else %}
|
||||||
|
<span class="fw-bolder">
|
||||||
|
Meetings
|
||||||
|
</span>
|
||||||
|
</li>
|
||||||
|
{% endif %}
|
||||||
|
<li>
|
||||||
|
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
||||||
|
href="/meeting/agenda/">
|
||||||
|
Agenda
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
||||||
|
href="/meeting/materials/">
|
||||||
|
Materials
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
||||||
|
href="/meeting/floor-plan/">
|
||||||
|
Floor plan
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
||||||
|
href="https://www.ietf.org/how/meetings/register/">
|
||||||
|
Registration
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
||||||
|
href="{% url 'ietf.meeting.views.important_dates' %}">
|
||||||
|
Important dates
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
||||||
|
href="/secr/sreq/">
|
||||||
|
Request a session
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
||||||
|
href="/meeting/requests">
|
||||||
|
Session requests
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{% if flavor == 'top' %}
|
||||||
|
{% if flavor == 'top' %}
|
||||||
|
<li class="dropdown-divider">
|
||||||
|
</li>
|
||||||
|
{% endif %}
|
||||||
|
<li {% if flavor == 'top' %}class="dropdown-header"{% else %}class="nav-item fw-bolder"{% endif %}>
|
||||||
|
Upcoming meetings
|
||||||
|
</li>
|
||||||
|
{% endif %}
|
||||||
|
<li>
|
||||||
|
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
||||||
|
href="/meeting/upcoming">
|
||||||
|
Upcoming meetings
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{% if flavor == 'top' %}
|
||||||
|
{% if flavor == 'top' %}
|
||||||
|
<li class="dropdown-divider">
|
||||||
|
</li>
|
||||||
|
{% endif %}
|
||||||
|
<li {% if flavor == 'top' %}class="dropdown-header"{% else %}class="nav-item fw-bolder"{% endif %}>
|
||||||
|
Past meetings
|
||||||
|
</li>
|
||||||
|
{% endif %}
|
||||||
|
<li>
|
||||||
|
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
||||||
|
href="/meeting/past">
|
||||||
|
Past meetings
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
||||||
|
href="https://www.ietf.org/how/meetings/past/">
|
||||||
|
Meeting proceedings
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{% if flavor == 'top' %}
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
{% endif %}
|
||||||
|
<li class="nav-item dropdown">
|
||||||
|
{% if flavor == "top" %}
|
||||||
|
<a href="#"
|
||||||
|
class="nav-link dropdown-toggle"
|
||||||
|
role="button"
|
||||||
|
data-bs-toggle="dropdown"
|
||||||
|
aria-expanded="false">
|
||||||
|
Other
|
||||||
|
</a>
|
||||||
|
<ul class="dropdown-menu {% if flavor == 'top' %}mt-n1{% else %}ms-n1{% endif %}">
|
||||||
|
{% else %}
|
||||||
|
<span class="fw-bolder">
|
||||||
|
Other
|
||||||
|
</span>
|
||||||
|
</li>
|
||||||
|
{% endif %}
|
||||||
|
<li>
|
||||||
|
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
||||||
|
href="/ipr/">
|
||||||
|
IPR disclosures
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
||||||
|
href="/liaison/">
|
||||||
|
Liaison statements
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
||||||
|
href="/iesg/agenda/">
|
||||||
|
IESG agenda
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
||||||
|
href="{% url 'ietf.nomcom.views.index' %}">
|
||||||
|
NomComs
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
||||||
|
href="/doc/downref/">
|
||||||
|
Downref registry
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
||||||
|
href="{% url "ietf.stats.views.stats_index" %}">
|
||||||
|
Statistics
|
||||||
|
</a>
|
||||||
|
<ul class="dropdown-menu {% if flavor == 'top' %}mt-n1{% else %}ms-n1{% endif %}">
|
||||||
|
<li>
|
||||||
|
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
||||||
|
href="{% url 'ietf.stats.views.document_stats' %}">
|
||||||
|
Drafts/RFCs
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
||||||
|
href="{% url 'ietf.stats.views.meeting_stats' %}">
|
||||||
Meetings
|
Meetings
|
||||||
</a>
|
</a>
|
||||||
<ul class="dropdown-menu {% if flavor == 'top' %}mt-n1{% else %}ms-n1{% endif %}">
|
|
||||||
{% else %}
|
|
||||||
<span class="fw-bolder">
|
|
||||||
Meetings
|
|
||||||
</span>
|
|
||||||
{% endif %}
|
|
||||||
<li>
|
|
||||||
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
|
||||||
href="/meeting/agenda/">
|
|
||||||
Agenda
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
|
||||||
href="/meeting/materials/">
|
|
||||||
Materials
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
|
||||||
href="/meeting/floor-plan/">
|
|
||||||
Floor plan
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
|
||||||
href="https://www.ietf.org/how/meetings/register/">
|
|
||||||
Registration
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
|
||||||
href="{% url 'ietf.meeting.views.important_dates' %}">
|
|
||||||
Important dates
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
|
||||||
href="/secr/sreq/">
|
|
||||||
Request a session
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
|
||||||
href="/meeting/requests">
|
|
||||||
Session requests
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
{% if flavor == 'top' %}
|
|
||||||
{% if flavor == 'top' %}
|
|
||||||
<li class="dropdown-divider">
|
|
||||||
</li>
|
|
||||||
{% endif %}
|
|
||||||
<li {% if flavor == 'top' %}class="dropdown-header"{% else %}class="nav-item fw-bolder"{% endif %}>
|
|
||||||
Upcoming meetings
|
|
||||||
</li>
|
|
||||||
{% endif %}
|
|
||||||
<li>
|
|
||||||
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
|
||||||
href="/meeting/upcoming">
|
|
||||||
Upcoming meetings
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
{% if flavor == 'top' %}
|
|
||||||
{% if flavor == 'top' %}
|
|
||||||
<li class="dropdown-divider">
|
|
||||||
</li>
|
|
||||||
{% endif %}
|
|
||||||
<li {% if flavor == 'top' %}class="dropdown-header"{% else %}class="nav-item fw-bolder"{% endif %}>
|
|
||||||
Past meetings
|
|
||||||
</li>
|
|
||||||
{% endif %}
|
|
||||||
<li>
|
|
||||||
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
|
||||||
href="/meeting/past">
|
|
||||||
Past meetings
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
|
||||||
href="https://www.ietf.org/how/meetings/past/">
|
|
||||||
Meeting proceedings
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
{% if flavor == 'top' %}</ul>{% endif %}
|
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item dropdown">
|
{% if user and user.is_authenticated %}
|
||||||
{% if flavor == "top" %}
|
<li>
|
||||||
<a href="#"
|
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
||||||
class="nav-link dropdown-toggle"
|
href="{% url 'ietf.stats.views.review_stats' %}">
|
||||||
role="button"
|
Reviews
|
||||||
data-bs-toggle="dropdown"
|
|
||||||
aria-expanded="false">
|
|
||||||
Other
|
|
||||||
</a>
|
</a>
|
||||||
<ul class="dropdown-menu {% if flavor == 'top' %}mt-n1{% else %}ms-n1{% endif %}">
|
|
||||||
{% else %}
|
|
||||||
<span class="fw-bolder">
|
|
||||||
Other
|
|
||||||
</span>
|
|
||||||
{% endif %}
|
|
||||||
<li>
|
|
||||||
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
|
||||||
href="/ipr/">
|
|
||||||
IPR disclosures
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
|
||||||
href="/liaison/">
|
|
||||||
Liaison statements
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
|
||||||
href="/iesg/agenda/">
|
|
||||||
IESG agenda
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
|
||||||
href="{% url 'ietf.nomcom.views.index' %}">
|
|
||||||
NomComs
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
|
||||||
href="/doc/downref/">
|
|
||||||
Downref registry
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
|
||||||
href="{% url "ietf.stats.views.stats_index" %}">
|
|
||||||
Statistics
|
|
||||||
</a>
|
|
||||||
<ul class="dropdown-menu {% if flavor == 'top' %}mt-n1{% else %}ms-n1{% endif %}">
|
|
||||||
<li>
|
|
||||||
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
|
||||||
href="{% url 'ietf.stats.views.document_stats' %}">
|
|
||||||
Drafts/RFCs
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
|
||||||
href="{% url 'ietf.stats.views.meeting_stats' %}">
|
|
||||||
Meetings
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
{% if user and user.is_authenticated %}
|
|
||||||
<li>
|
|
||||||
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
|
||||||
href="{% url 'ietf.stats.views.review_stats' %}">
|
|
||||||
Reviews
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
{% endif %}
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
|
||||||
href="/group/edu/materials/">
|
|
||||||
Tutorials
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
|
||||||
href="/api/">
|
|
||||||
API Help
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
|
||||||
href="{% url 'ietf.release.views.release' %}">
|
|
||||||
Release notes
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
{% if flavor == 'top' %}
|
|
||||||
<li 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>
|
|
||||||
Report a bug
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
{% if flavor == 'top' %}</ul>{% endif %}
|
|
||||||
</li>
|
</li>
|
||||||
{% if flavor == 'top' %}
|
{% endif %}
|
||||||
{% include "base/menu_user.html" %}
|
</ul>
|
||||||
{% endif %}
|
</li>
|
||||||
|
<li>
|
||||||
|
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
||||||
|
href="/group/edu/materials/">
|
||||||
|
Tutorials
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
||||||
|
href="/api/">
|
||||||
|
API Help
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
||||||
|
href="{% url 'ietf.release.views.release' %}">
|
||||||
|
Release notes
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{% if flavor == 'top' %}
|
||||||
|
<li 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>
|
||||||
|
Report a bug
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{% if flavor == 'top' %}
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
{% endif %}
|
||||||
|
{% if flavor == 'top' %}
|
||||||
|
{% include "base/menu_user.html" %}
|
||||||
|
{% endif %}
|
|
@ -2,7 +2,7 @@
|
||||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||||
{% load origin %}
|
{% load origin %}
|
||||||
{% origin %}
|
{% origin %}
|
||||||
<ul class="dropdown-menu {% if flavor == 'top' %}mt-n1{% else %}ms-n1{% endif %}">
|
<ul class="dropdown-menu ms-n1">
|
||||||
{% for p in parents %}
|
{% for p in parents %}
|
||||||
<li>
|
<li>
|
||||||
<a class="dropdown-item {% if flavor != 'top' %}text-wrap{% endif %}"
|
<a class="dropdown-item {% if flavor != 'top' %}text-wrap{% endif %}"
|
||||||
|
@ -15,4 +15,4 @@
|
||||||
href="{{ o.menu_url }}">{{ o.acronym|upper }}</a>
|
href="{{ o.menu_url }}">{{ o.acronym|upper }}</a>
|
||||||
</li>
|
</li>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</ul>
|
</ul>
|
||||||
|
|
|
@ -16,299 +16,213 @@
|
||||||
User
|
User
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</a>
|
</a>
|
||||||
<ul class="dropdown-menu
|
<ul class="dropdown-menu {% if flavor == 'top' %} mt-n1 {% else %} ms-n1 {% endif %}">
|
||||||
{% if flavor == 'top' %}
|
|
||||||
mt-n1
|
|
||||||
{% else %}
|
|
||||||
ms-n1
|
|
||||||
{% endif %}">
|
|
||||||
{% else %}
|
{% else %}
|
||||||
<span class="fw-bolder">User</span>
|
<span class="fw-bolder">User</span>
|
||||||
{% endif %}
|
</li>
|
||||||
{% if request.get_full_path == "/accounts/logout/" %}
|
{% endif %}
|
||||||
|
{% if request.get_full_path == "/accounts/logout/" %}
|
||||||
|
<li>
|
||||||
|
<a class="dropdown-item {% if flavor != 'top' %} text-wrap link-primary{% endif %}"
|
||||||
|
rel="nofollow"
|
||||||
|
href="/accounts/login {% if "/accounts/logout/" not in request.get_full_path %} /?next={{ request.get_full_path|urlencode }}{% endif %}">
|
||||||
|
Sign in
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{% else %}
|
||||||
|
{% if user.is_authenticated %}
|
||||||
<li>
|
<li>
|
||||||
<a class="dropdown-item
|
<a class="dropdown-item {% if flavor != 'top' %} text-wrap link-primary{% endif %}"
|
||||||
{% if flavor != 'top' %}
|
|
||||||
text-wrap link-primary
|
|
||||||
{% endif %}"
|
|
||||||
rel="nofollow"
|
rel="nofollow"
|
||||||
href="/accounts/login
|
href="/accounts/logout/">
|
||||||
{% if "/accounts/logout/" not in request.get_full_path %}
|
Sign out
|
||||||
/?next={{ request.get_full_path|urlencode }}
|
</a>
|
||||||
{% endif %}">
|
</li>
|
||||||
|
<li>
|
||||||
|
<a class="dropdown-item {% if flavor != 'top' %} text-wrap link-primary{% endif %}"
|
||||||
|
rel="nofollow"
|
||||||
|
href="/accounts/profile/">
|
||||||
|
Account info
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a class="dropdown-item {% if flavor != 'top' %} text-wrap link-primary{% endif %}"
|
||||||
|
href="/person/{{ user.person.name|urlencode }}">
|
||||||
|
Public profile page
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a class="dropdown-item {% if flavor != 'top' %} text-wrap link-primary{% endif %}"
|
||||||
|
href="{% url "ietf.cookies.views.preferences" %}"
|
||||||
|
rel="nofollow">
|
||||||
|
Preferences
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a class="dropdown-item {% if flavor != 'top' %} text-wrap link-primary{% endif %}"
|
||||||
|
href="{% url "ietf.ietfauth.views.apikey_index" %}"
|
||||||
|
rel="nofollow">
|
||||||
|
API keys
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a class="dropdown-item {% if flavor != 'top' %} text-wrap link-primary{% endif %}"
|
||||||
|
rel="nofollow"
|
||||||
|
href="/accounts/password/">
|
||||||
|
Change password
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a class="dropdown-item {% if flavor != 'top' %} text-wrap link-primary{% endif %}"
|
||||||
|
rel="nofollow"
|
||||||
|
href="/accounts/username/">
|
||||||
|
Change username
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{% else %}
|
||||||
|
<li>
|
||||||
|
<a class="dropdown-item {% if flavor != 'top' %} text-wrap link-primary{% endif %}"
|
||||||
|
rel="nofollow"
|
||||||
|
href="/accounts/login/?next={{ request.get_full_path|urlencode }}">
|
||||||
Sign in
|
Sign in
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
{% else %}
|
|
||||||
{% if user.is_authenticated %}
|
|
||||||
<li>
|
|
||||||
<a class="dropdown-item
|
|
||||||
{% if flavor != 'top' %}
|
|
||||||
text-wrap link-primary
|
|
||||||
{% endif %}"
|
|
||||||
rel="nofollow"
|
|
||||||
href="/accounts/logout/">
|
|
||||||
Sign out
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a class="dropdown-item
|
|
||||||
{% if flavor != 'top' %}
|
|
||||||
text-wrap link-primary
|
|
||||||
{% endif %}"
|
|
||||||
rel="nofollow"
|
|
||||||
href="/accounts/profile/">
|
|
||||||
Account info
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a class="dropdown-item
|
|
||||||
{% if flavor != 'top' %}
|
|
||||||
text-wrap link-primary
|
|
||||||
{% endif %}"
|
|
||||||
href="/person/{{ user.person.name|urlencode }}">
|
|
||||||
Public profile page
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a class="dropdown-item
|
|
||||||
{% if flavor != 'top' %}
|
|
||||||
text-wrap link-primary
|
|
||||||
{% endif %}"
|
|
||||||
href="{% url "ietf.cookies.views.preferences" %}"
|
|
||||||
rel="nofollow">
|
|
||||||
Preferences
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a class="dropdown-item
|
|
||||||
{% if flavor != 'top' %}
|
|
||||||
text-wrap link-primary
|
|
||||||
{% endif %}"
|
|
||||||
href="{% url "ietf.ietfauth.views.apikey_index" %}"
|
|
||||||
rel="nofollow">
|
|
||||||
API keys
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a class="dropdown-item
|
|
||||||
{% if flavor != 'top' %}
|
|
||||||
text-wrap link-primary
|
|
||||||
{% endif %}"
|
|
||||||
rel="nofollow"
|
|
||||||
href="/accounts/password/">
|
|
||||||
Change password
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a class="dropdown-item
|
|
||||||
{% if flavor != 'top' %}
|
|
||||||
text-wrap link-primary
|
|
||||||
{% endif %}"
|
|
||||||
rel="nofollow"
|
|
||||||
href="/accounts/username/">
|
|
||||||
Change username
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
{% else %}
|
|
||||||
<li>
|
|
||||||
<a class="dropdown-item
|
|
||||||
{% if flavor != 'top' %}
|
|
||||||
text-wrap link-primary
|
|
||||||
{% endif %}"
|
|
||||||
rel="nofollow"
|
|
||||||
href="/accounts/login/?next={{ request.get_full_path|urlencode }}">
|
|
||||||
Sign in
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a class="dropdown-item
|
|
||||||
{% if flavor != 'top' %}
|
|
||||||
text-wrap link-primary
|
|
||||||
{% endif %}"
|
|
||||||
rel="nofollow"
|
|
||||||
href="/accounts/reset/">
|
|
||||||
Password reset
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a class="dropdown-item
|
|
||||||
{% if flavor != 'top' %}
|
|
||||||
text-wrap link-primary
|
|
||||||
{% endif %}"
|
|
||||||
href="{% url "ietf.cookies.views.preferences" %}"
|
|
||||||
rel="nofollow">
|
|
||||||
Preferences
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
{% endif %}
|
|
||||||
<li>
|
<li>
|
||||||
<a class="dropdown-item
|
<a class="dropdown-item {% if flavor != 'top' %} text-wrap link-primary{% endif %}"
|
||||||
{% if flavor != 'top' %}
|
rel="nofollow"
|
||||||
text-wrap link-primary
|
href="/accounts/reset/">
|
||||||
{% endif %}"
|
Password reset
|
||||||
href="{% url 'personal-information' %}">
|
</a>
|
||||||
Handling of personal information
|
</li>
|
||||||
|
<li>
|
||||||
|
<a class="dropdown-item {% if flavor != 'top' %} text-wrap link-primary{% endif %}"
|
||||||
|
href="{% url "ietf.cookies.views.preferences" %}"
|
||||||
|
rel="nofollow">
|
||||||
|
Preferences
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if not request.user.is_authenticated %}
|
<li>
|
||||||
<li>
|
<a class="dropdown-item {% if flavor != 'top' %} text-wrap link-primary{% endif %}"
|
||||||
<a class="dropdown-item
|
href="{% url 'personal-information' %}">
|
||||||
{% if flavor != 'top' %}
|
Handling of personal information
|
||||||
text-wrap link-primary
|
</a>
|
||||||
{% endif %}"
|
</li>
|
||||||
href="{% url "ietf.ietfauth.views.create_account" %}">
|
{% endif %}
|
||||||
New account
|
{% if not request.user.is_authenticated %}
|
||||||
</a>
|
<li>
|
||||||
|
<a class="dropdown-item {% if flavor != 'top' %} text-wrap link-primary{% endif %}"
|
||||||
|
href="{% url "ietf.ietfauth.views.create_account" %}">
|
||||||
|
New account
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{% endif %}
|
||||||
|
{% if user|has_role:"Reviewer" %}
|
||||||
|
<li>
|
||||||
|
<a class="dropdown-item {% if flavor != 'top' %} text-wrap link-primary{% endif %}"
|
||||||
|
href="{% url "ietf.ietfauth.views.review_overview" %}">
|
||||||
|
My reviews
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{% endif %}
|
||||||
|
{% if user|has_role:"Area Director" %}
|
||||||
|
{% if flavor == "top" %}<li 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 %}"
|
||||||
|
href="{% url 'ietf.doc.views_search.docs_for_ad' name=user.person.full_name_as_key %}">
|
||||||
|
My docs
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a class="dropdown-item {% if flavor != 'top' %} text-wrap link-primary{% endif %}"
|
||||||
|
href="{% url "ietf.iesg.views.agenda_documents" %}">
|
||||||
|
Next telechat
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a class="dropdown-item {% if flavor != 'top' %} text-wrap link-primary{% endif %}"
|
||||||
|
href="{% url "ietf.iesg.views.discusses" %}">
|
||||||
|
Discusses
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a class="dropdown-item {% if flavor != 'top' %} text-wrap link-primary{% endif %}"
|
||||||
|
href="{% url "ietf.iesg.views.milestones_needing_review" %}">
|
||||||
|
Milestone review
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a class="dropdown-item {% if flavor != 'top' %} text-wrap link-primary{% endif %}"
|
||||||
|
href="{% url "ietf.doc.views_search.drafts_in_last_call" %}">
|
||||||
|
Last Call docs
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{% endif %}
|
||||||
|
{% if user|has_role:"Secretariat" %}
|
||||||
|
{% if flavor == "top" %}<li class="dropdown-divider"></li>{% endif %}
|
||||||
|
<li {% if flavor == "top" %}class="dropdown-header"{% else %}class="nav-item fw-bolder"{% endif %}>
|
||||||
|
IETF secretariat
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a class="dropdown-item {% if flavor != 'top' %} text-wrap link-primary{% endif %}"
|
||||||
|
href="/admin/iesg/telechatdate/">
|
||||||
|
Telechat dates
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a class="dropdown-item {% if flavor != 'top' %} text-wrap link-primary{% endif %}"
|
||||||
|
href="/admin/iesg/telechatagendaitem/">
|
||||||
|
Management items
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a class="dropdown-item {% if flavor != 'top' %} text-wrap link-primary{% endif %}"
|
||||||
|
href="{% url "ietf.iesg.views.milestones_needing_review" %}">
|
||||||
|
Milestones
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a class="dropdown-item {% if flavor != 'top' %} text-wrap link-primary{% endif %}"
|
||||||
|
href="{% url "ietf.sync.views.discrepancies" %}">
|
||||||
|
Sync discrepancies
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a class="dropdown-item {% if flavor != 'top' %} text-wrap link-primary{% endif %}"
|
||||||
|
href="{% url "ietf.ietfauth.views.add_account_whitelist" %}">
|
||||||
|
Account whitelist
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{% endif %}
|
||||||
|
{% if user|has_role:"IANA" %}
|
||||||
|
{% if flavor == "top" %}
|
||||||
|
<li class="dropdown-divider">
|
||||||
</li>
|
</li>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if user|has_role:"Reviewer" %}
|
<li {% if flavor == "top" %}class="dropdown-header"{% else %}class="nav-item fw-bolder"{% endif %}>
|
||||||
<li>
|
IANA
|
||||||
<a class="dropdown-item
|
</li>
|
||||||
{% if flavor != 'top' %}
|
<li>
|
||||||
text-wrap link-primary
|
<a class="dropdown-item {% if flavor != 'top' %} text-wrap link-primary{% endif %}"
|
||||||
{% endif %}"
|
href="{% url "ietf.sync.views.discrepancies" %}">
|
||||||
href="{% url "ietf.ietfauth.views.review_overview" %}">
|
Sync discrepancies
|
||||||
My reviews
|
</a>
|
||||||
</a>
|
</li>
|
||||||
|
{% endif %}
|
||||||
|
{% if user|has_role:"RFC Editor" %}
|
||||||
|
{% if flavor == "top" %}
|
||||||
|
<li class="dropdown-divider">
|
||||||
</li>
|
</li>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if user|has_role:"Area Director" %}
|
<li {% if flavor == "top" %}class="dropdown-header"{% else %}class="nav-item fw-bolder"{% endif %}>
|
||||||
{% if flavor == "top" %}<li class="dropdown-divider"></li>{% endif %}
|
RFC Editor
|
||||||
<li {% if flavor == "top" %}class="dropdown-header"{% else %}class="nav-item fw-bolder"{% endif %}>AD dashboard</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a class="dropdown-item
|
<a class="dropdown-item {% if flavor != 'top' %} text-wrap link-primary{% endif %}"
|
||||||
{% if flavor != 'top' %}
|
href="{% url "ietf.sync.views.discrepancies" %}">
|
||||||
text-wrap link-primary
|
Sync discrepancies
|
||||||
{% endif %}"
|
</a>
|
||||||
href="{% url 'ietf.doc.views_search.docs_for_ad' name=user.person.full_name_as_key %}">
|
</li>
|
||||||
My docs
|
{% endif %}
|
||||||
</a>
|
{% if flavor == "top" %}</ul>{% endif %}
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a class="dropdown-item
|
|
||||||
{% if flavor != 'top' %}
|
|
||||||
text-wrap link-primary
|
|
||||||
{% endif %}"
|
|
||||||
href="{% url "ietf.iesg.views.agenda_documents" %}">
|
|
||||||
Next telechat
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a class="dropdown-item
|
|
||||||
{% if flavor != 'top' %}
|
|
||||||
text-wrap link-primary
|
|
||||||
{% endif %}"
|
|
||||||
href="{% url "ietf.iesg.views.discusses" %}">
|
|
||||||
Discusses
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a class="dropdown-item
|
|
||||||
{% if flavor != 'top' %}
|
|
||||||
text-wrap link-primary
|
|
||||||
{% endif %}"
|
|
||||||
href="{% url "ietf.iesg.views.milestones_needing_review" %}">
|
|
||||||
Milestone review
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a class="dropdown-item
|
|
||||||
{% if flavor != 'top' %}
|
|
||||||
text-wrap link-primary
|
|
||||||
{% endif %}"
|
|
||||||
href="{% url "ietf.doc.views_search.drafts_in_last_call" %}">
|
|
||||||
Last Call docs
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
{% endif %}
|
|
||||||
{% if user|has_role:"Secretariat" %}
|
|
||||||
{% if flavor == "top" %}<li class="dropdown-divider"></li>{% endif %}
|
|
||||||
<li {% if flavor == "top" %}class="dropdown-header"{% else %}class="nav-item fw-bolder"{% endif %}>
|
|
||||||
IETF secretariat
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a class="dropdown-item
|
|
||||||
{% if flavor != 'top' %}
|
|
||||||
text-wrap link-primary
|
|
||||||
{% endif %}"
|
|
||||||
href="/admin/iesg/telechatdate/">
|
|
||||||
Telechat dates
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a class="dropdown-item
|
|
||||||
{% if flavor != 'top' %}
|
|
||||||
text-wrap link-primary
|
|
||||||
{% endif %}"
|
|
||||||
href="/admin/iesg/telechatagendaitem/">
|
|
||||||
Management items
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a class="dropdown-item
|
|
||||||
{% if flavor != 'top' %}
|
|
||||||
text-wrap link-primary
|
|
||||||
{% endif %}"
|
|
||||||
href="{% url "ietf.iesg.views.milestones_needing_review" %}">
|
|
||||||
Milestones
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a class="dropdown-item
|
|
||||||
{% if flavor != 'top' %}
|
|
||||||
text-wrap link-primary
|
|
||||||
{% endif %}"
|
|
||||||
href="{% url "ietf.sync.views.discrepancies" %}">
|
|
||||||
Sync discrepancies
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a class="dropdown-item
|
|
||||||
{% if flavor != 'top' %}
|
|
||||||
text-wrap link-primary
|
|
||||||
{% endif %}"
|
|
||||||
href="{% url "ietf.ietfauth.views.add_account_whitelist" %}">
|
|
||||||
Account whitelist
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
{% endif %}
|
|
||||||
{% if user|has_role:"IANA" %}
|
|
||||||
{% if flavor == "top" %}
|
|
||||||
<li class="dropdown-divider">
|
|
||||||
</li>
|
|
||||||
{% endif %}
|
|
||||||
<li {% if flavor == "top" %}class="dropdown-header"{% else %}class="nav-item fw-bolder"{% endif %}>
|
|
||||||
IANA
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a class="dropdown-item
|
|
||||||
{% if flavor != 'top' %}
|
|
||||||
text-wrap link-primary
|
|
||||||
{% endif %}"
|
|
||||||
href="{% url "ietf.sync.views.discrepancies" %}">
|
|
||||||
Sync discrepancies
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
{% endif %}
|
|
||||||
{% if user|has_role:"RFC Editor" %}
|
|
||||||
{% if flavor == "top" %}
|
|
||||||
<li class="dropdown-divider">
|
|
||||||
</li>
|
|
||||||
{% endif %}
|
|
||||||
<li {% if flavor == "top" %}class="dropdown-header"{% else %}class="nav-item fw-bolder"{% endif %}>
|
|
||||||
RFC Editor
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a class="dropdown-item
|
|
||||||
{% if flavor != 'top' %}
|
|
||||||
text-wrap link-primary
|
|
||||||
{% endif %}"
|
|
||||||
href="{% url "ietf.sync.views.discrepancies" %}">
|
|
||||||
Sync discrepancies
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
{% endif %}
|
|
||||||
{% if flavor == "top" %}</ul>{% endif %}
|
|
||||||
</li>
|
|
||||||
|
|
|
@ -9,4 +9,4 @@
|
||||||
{{ p.short_name }}
|
{{ p.short_name }}
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
|
@ -76,7 +76,7 @@
|
||||||
{% for l in origin.4 %}
|
{% for l in origin.4 %}
|
||||||
<table>
|
<table>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="{% if forloop.counter0 == origin.5 %} current{% endif %}"> {{l }}</td>
|
<td class="{% if forloop.counter0 == origin.5 %} current{% endif %}">{{ l }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
|
@ -18,7 +18,7 @@
|
||||||
{% bootstrap_form session_form %}
|
{% bootstrap_form session_form %}
|
||||||
{% bootstrap_form version_form %}
|
{% bootstrap_form version_form %}
|
||||||
{% bootstrap_button button_type="submit" name="save" content="Save" %}
|
{% bootstrap_button button_type="submit" name="save" content="Save" %}
|
||||||
<a class="btn btn-primary"
|
<a class="btn btn-secondary float-end"
|
||||||
href="{% url 'ietf.doc.views_doc.all_presentations' name=doc.name %}">Cancel</a>
|
href="{% url 'ietf.doc.views_doc.all_presentations' name=doc.name %}">Back</a>
|
||||||
</form>
|
</form>
|
||||||
{% endblock %}
|
{% endblock %}
|
|
@ -27,9 +27,9 @@
|
||||||
{% if field.name == "discuss" %}<div id="div_id_discuss">{% endif %}
|
{% if field.name == "discuss" %}<div id="div_id_discuss">{% endif %}
|
||||||
{% bootstrap_field field %}
|
{% bootstrap_field field %}
|
||||||
{% if field.name == "discuss" and old_pos and old_pos.discuss_time %}
|
{% if field.name == "discuss" and old_pos and old_pos.discuss_time %}
|
||||||
<div class="form-text">Last edited {{ old_pos.discuss_time }}</div>
|
<div class="form-text mt-n3 mb-3">Last edited {{ old_pos.discuss_time }}</div>
|
||||||
{% elif field.name == "comment" and old_pos and old_pos.comment_time %}
|
{% elif field.name == "comment" and old_pos and old_pos.comment_time %}
|
||||||
<div class="form-text">Last edited {{ old_pos.comment_time }}</div>
|
<div class="form-text mt-n3 mb-3">Last edited {{ old_pos.comment_time }}</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if field.name == "discuss" %}</div>{% endif %}
|
{% if field.name == "discuss" %}</div>{% endif %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
@ -73,7 +73,7 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$("input[name=position]").click(function () {
|
$("input[name=position]").on("click", function () {
|
||||||
discussToggle($(this).val());
|
discussToggle($(this).val());
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
{# curly percent bootstrap_form approval_text_form curly percent #}
|
{# curly percent bootstrap_form approval_text_form curly percent #}
|
||||||
Due date for this ballot:
|
Due date for this ballot:
|
||||||
<input type="text" data-provide="datepicker" data-date-format="yyyy-mm-dd" placeholder={{ fillerdate }} name="duedate">
|
<input type="text" data-provide="datepicker" data-date-format="yyyy-mm-dd" placeholder="{{ fillerdate }}" name="duedate">
|
||||||
<button type="submit" class="btn btn-primary" name="irsg_button" value="Yes">Yes</button>
|
<button type="submit" class="btn btn-primary" name="irsg_button" value="Yes">Yes</button>
|
||||||
<button type="submit" class="btn btn-primary" name="irsg_button" value="No">No</button>
|
<button type="submit" class="btn btn-primary" name="irsg_button" value="No">No</button>
|
||||||
</form>
|
</form>
|
||||||
|
|
|
@ -4,9 +4,9 @@
|
||||||
{% load origin %}
|
{% load origin %}
|
||||||
{% origin %}
|
{% origin %}
|
||||||
{% load ietf_filters %}
|
{% load ietf_filters %}
|
||||||
<html lang=en>
|
<html lang="en">
|
||||||
<head>
|
<head>
|
||||||
<meta charset=utf-8>
|
<meta charset="utf-8">
|
||||||
<title>Ballot for {{ doc.name }}</title>
|
<title>Ballot for {{ doc.name }}</title>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
|
|
@ -43,7 +43,7 @@
|
||||||
{% for req in req_group.list %}
|
{% for req in req_group.list %}
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
<a href={% url 'ietf.doc.views_doc.document_main' name=req.name %}>{{ req.name }}-{{ req.rev }}</a>
|
<a href="{% url 'ietf.doc.views_doc.document_main' name=req.name %}">{{ req.name }}-{{ req.rev }}</a>
|
||||||
</td>
|
</td>
|
||||||
<td>{{ req.latest_revision_event.time|date:"Y-m-d" }}</td>
|
<td>{{ req.latest_revision_event.time|date:"Y-m-d" }}</td>
|
||||||
<td>{{ req.title }}</td>
|
<td>{{ req.title }}</td>
|
||||||
|
|
|
@ -18,7 +18,7 @@
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
{% bootstrap_form form layout="horizontal" %}
|
{% bootstrap_form form layout="horizontal" %}
|
||||||
<button type="submit" class="btn btn-primary">Submit</button>
|
<button type="submit" class="btn btn-primary">Submit</button>
|
||||||
<a class="btn btn-secondary float-end" href="{{ doc.get_absolute_url }}">Cancel</a>
|
<a class="btn btn-secondary float-end" href="{% url "ietf.doc.views_bofreq.bof_requests" %}">Back</a>
|
||||||
</form>
|
</form>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
{% block js %}
|
{% block js %}
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
{% bootstrap_form form layout="horizontal" %}
|
{% bootstrap_form form layout="horizontal" %}
|
||||||
<button type="submit" class="btn btn-primary">Submit</button>
|
<button type="submit" class="btn btn-primary">Submit</button>
|
||||||
<a class="btn btn-secondary float-end" href="{{ doc.get_absolute_url }}">Cancel</a>
|
<a class="btn btn-secondary float-end" href="{{ doc.get_absolute_url }}">Back</a>
|
||||||
</form>
|
</form>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
{% block js %}
|
{% block js %}
|
||||||
|
|
|
@ -18,7 +18,7 @@
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
{% bootstrap_form announcement_text_form %}
|
{% bootstrap_form announcement_text_form %}
|
||||||
<button type="submit" class="btn btn-primary" name="save_text" value="Save">Submit</button>
|
<button type="submit" class="btn btn-primary" name="save_text" value="Save">Submit</button>
|
||||||
<button type="submit" class="btn btn-warning" name="regenerate_text" value="Regenerate"">Regenerate
|
<button type="submit" class="btn btn-warning" name="regenerate_text" value="Regenerate">Regenerate
|
||||||
</button>
|
</button>
|
||||||
{% if user|has_role:"Secretariat" %}
|
{% if user|has_role:"Secretariat" %}
|
||||||
<a type="submit"
|
<a type="submit"
|
||||||
|
|
|
@ -16,21 +16,18 @@
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
{% bootstrap_form announcement_text_form %}
|
{% bootstrap_form announcement_text_form %}
|
||||||
<button type="submit" class="btn btn-primary" name="save_text" value="Save">Submit</button>
|
<button type="submit" class="btn btn-primary" name="save_text" value="Save">Submit</button>
|
||||||
<button type="submit" class="btn btn-warning" name="regenerate_text" value="Regenerate"">Regenerate
|
<button type="submit" class="btn btn-warning" name="regenerate_text" value="Regenerate">Regenerate
|
||||||
</button>
|
</button>
|
||||||
{% if user|has_role:"Secretariat" %}
|
{% if user|has_role:"Secretariat" %}
|
||||||
<input type="submit"
|
<input type="submit"
|
||||||
type="submit"
|
|
||||||
class="btn btn-primary"
|
class="btn btn-primary"
|
||||||
name="send_annc_only"
|
name="send_annc_only"
|
||||||
value="Send only to IETF-Announce"/>
|
value="Send only to IETF-Announce"/>
|
||||||
<input type="submit"
|
<input type="submit"
|
||||||
type="submit"
|
|
||||||
class="btn btn-primary"
|
class="btn btn-primary"
|
||||||
name="send_nw_only"
|
name="send_nw_only"
|
||||||
value="Send only to New-Work"/>
|
value="Send only to New-Work"/>
|
||||||
<input type="submit"
|
<input type="submit"
|
||||||
type="submit"
|
|
||||||
class="btn btn-primary"
|
class="btn btn-primary"
|
||||||
name="send_both"
|
name="send_both"
|
||||||
value="Send to both"/>
|
value="Send to both"/>
|
||||||
|
|
|
@ -139,7 +139,7 @@
|
||||||
{{ doc.name }}-{{ doc.rev }}
|
{{ doc.name }}-{{ doc.rev }}
|
||||||
</div>
|
</div>
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<pre> {{ content|sanitize|maybewordwrap|safe }}</pre>
|
{{ content|sanitize|maybewordwrap|safe }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
|
@ -30,7 +30,7 @@
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
<a class="btn btn-secondary float-end"
|
<a class="btn btn-secondary float-end"
|
||||||
href="{% url "ietf.doc.views_downref.downref_registry" %}">Cancel</a>
|
href="{% url "ietf.doc.views_downref.downref_registry" %}">Back</a>
|
||||||
</p>
|
</p>
|
||||||
</form>
|
</form>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
[# bs5ok #}
|
{# bs5ok #}
|
||||||
{% extends "base.html" %}
|
{% extends "base.html" %}
|
||||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||||
{% load origin %}
|
{% load origin %}
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
<form name="review-suggested-replaces" role="form" method="post">
|
<form name="review-suggested-replaces" role="form" method="post">
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
{% bootstrap_form form %}
|
{% bootstrap_form form %}
|
||||||
<a class="btn btn-secondary float-end" href="{{ doc.get_absolute_url }}">Cancel</a>
|
<a class="btn btn-secondary float-end" href="{{ doc.get_absolute_url }}">Back</a>
|
||||||
<button type="submit" value="Save" class="btn btn-primary">Save</button>
|
<button type="submit" value="Save" class="btn btn-primary">Save</button>
|
||||||
</form>
|
</form>
|
||||||
{% endblock %}
|
{% endblock %}
|
|
@ -56,7 +56,7 @@
|
||||||
<br>
|
<br>
|
||||||
Action holder{{ doc.documentactionholder_set.all|pluralize }}:
|
Action holder{{ doc.documentactionholder_set.all|pluralize }}:
|
||||||
{% for action_holder in doc.documentactionholder_set.all %}
|
{% for action_holder in doc.documentactionholder_set.all %}
|
||||||
{% person_link action_holder.person title=action_holder.role_for_doc %} {{ action_holder|action_holder_badge }}
|
{% person_link action_holder.person title=action_holder.role_for_doc %} {{ action_holder|action_holder_badge }}
|
||||||
{% if not forloop.last %},{% endif %}
|
{% if not forloop.last %},{% endif %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
|
@ -143,7 +143,6 @@
|
||||||
{% block content_end %}{% endblock %}
|
{% block content_end %}{% endblock %}
|
||||||
</div>
|
</div>
|
||||||
{% block footer %}{% endblock %}
|
{% block footer %}{% endblock %}
|
||||||
</div>
|
|
||||||
{% block js %}{% endblock %}
|
{% block js %}{% endblock %}
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
|
@ -2,6 +2,9 @@
|
||||||
{% extends "base.html" %}
|
{% extends "base.html" %}
|
||||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||||
{% load origin static %}
|
{% load origin static %}
|
||||||
|
{% block pagehead %}
|
||||||
|
<link rel="stylesheet" href="{% static "ietf/css/list.css" %}">
|
||||||
|
{% endblock %}
|
||||||
{% block title %}Document Search{% endblock %}
|
{% block title %}Document Search{% endblock %}
|
||||||
{% block content %}
|
{% block content %}
|
||||||
{% origin %}
|
{% origin %}
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
{% load ballot_icon %}
|
{% load ballot_icon %}
|
||||||
{% load person_filters %}
|
{% load person_filters %}
|
||||||
{% load django_bootstrap5 %}
|
{% load django_bootstrap5 %}
|
||||||
<tr {% spaceless %}
|
<tr{% spaceless %}
|
||||||
{% if color_ad_position %} {% with doc|ballotposition:user as pos %} {% if pos %}class="position-{{ pos.slug }}-row"{% endif %}
|
{% if color_ad_position %} {% with doc|ballotposition:user as pos %} {% if pos %}class="position-{{ pos.slug }}-row"{% endif %}
|
||||||
{% endwith %}
|
{% endwith %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -112,7 +112,7 @@
|
||||||
{% if doc.rev != "00" %}
|
{% if doc.rev != "00" %}
|
||||||
<a href="{{ rfcdiff_base_url }}?url2={{ doc.name }}-{{ doc.rev }}">
|
<a href="{{ rfcdiff_base_url }}?url2={{ doc.name }}-{{ doc.rev }}">
|
||||||
{% elif doc.replaces %}
|
{% elif doc.replaces %}
|
||||||
<a href="{{ rfcdiff_base_url }}?url1={{ doc.replaces_canonical_name }}&url2={{ doc.name }}-{{ doc.rev }}">
|
<a href="{{ rfcdiff_base_url }}?url1={{ doc.replaces_canonical_name }}&url2={{ doc.name }}-{{ doc.rev }}">
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if doc.get_state_slug == "rfc" %}
|
{% if doc.get_state_slug == "rfc" %}
|
||||||
|
|
|
@ -3,9 +3,6 @@
|
||||||
{% load origin %}
|
{% load origin %}
|
||||||
{% origin %}
|
{% origin %}
|
||||||
{% load ietf_filters static %}
|
{% load ietf_filters static %}
|
||||||
{% block pagehead %}
|
|
||||||
<link rel="stylesheet" href="{% static "ietf/css/list.css" %}">
|
|
||||||
{% endblock %}
|
|
||||||
{% if not docs %}
|
{% if not docs %}
|
||||||
{% if not skip_no_matches_warning %}<div class="alert alert-info my-3">No documents match your query.</div>{% endif %}
|
{% if not skip_no_matches_warning %}<div class="alert alert-info my-3">No documents match your query.</div>{% endif %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -62,7 +59,4 @@
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</tbody>
|
</tbody>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% if end_table %}</table>{% endif %}
|
{% if end_table %}</table>{% endif %}
|
||||||
{% block js %}
|
|
||||||
<script src="{% static "ietf/js/list.js" %}"></script>
|
|
||||||
{% endblock %}
|
|
|
@ -23,7 +23,7 @@
|
||||||
class="btn btn-primary"
|
class="btn btn-primary"
|
||||||
name="submit_response"
|
name="submit_response"
|
||||||
value="Submit">Submit</button>
|
value="Submit">Submit</button>
|
||||||
<a class="btn btn-secondary float-end" href="{{ back_url }}">Back</a>
|
<a class="btn btn-secondary float-end" href="{% url 'ietf.doc.views_status_change.rfc_status_changes' %}">Back</a>
|
||||||
</form>
|
</form>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
{% block js %}
|
{% block js %}
|
||||||
|
|
|
@ -81,7 +81,6 @@
|
||||||
indicates the document might not be ready for submission. Please check each instance carefully to see if changes need to be made to the document's state before submitting.
|
indicates the document might not be ready for submission. Please check each instance carefully to see if changes need to be made to the document's state before submitting.
|
||||||
</p>
|
</p>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<p>
|
|
||||||
Upon submission:
|
Upon submission:
|
||||||
<ul>
|
<ul>
|
||||||
<li>the document will be placed into the IESG '{{ target_state.iesg }}' state</li>
|
<li>the document will be placed into the IESG '{{ target_state.iesg }}' state</li>
|
||||||
|
@ -91,7 +90,6 @@
|
||||||
<li>an entry will be made noting the publication request in the document's history</li>
|
<li>an entry will be made noting the publication request in the document's history</li>
|
||||||
<li>an email message will be sent to the working group chairs, the secretariat, and everyone listed above</li>
|
<li>an email message will be sent to the working group chairs, the secretariat, and everyone listed above</li>
|
||||||
</ul>
|
</ul>
|
||||||
</p>
|
|
||||||
<form method="post">
|
<form method="post">
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
<input type="submit"
|
<input type="submit"
|
||||||
|
|
|
@ -20,7 +20,7 @@
|
||||||
{% for grouptype in grouped_groups %}
|
{% for grouptype in grouped_groups %}
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th colspan=2 class="table-info">
|
<th colspan="2" class="table-info">
|
||||||
Active {% firstof grouptype.grouper.verbose_name grouptype.grouper.name 'Top-level Administration' %}
|
Active {% firstof grouptype.grouper.verbose_name grouptype.grouper.name 'Top-level Administration' %}
|
||||||
</th>
|
</th>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
|
@ -36,14 +36,14 @@
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
The IESG decides which areas working groups belong to. The charter of each area is listed below:
|
The IESG decides which areas working groups belong to. The charter of each area is listed below:
|
||||||
<ul>
|
|
||||||
{% for area in areas %}
|
|
||||||
<li>
|
|
||||||
<a href="#id-{{ area.acronym|slugify }}">{{ area.acronym|upper }} – {{ area.name }}</a>
|
|
||||||
</li>
|
|
||||||
{% endfor %}
|
|
||||||
</ul>
|
|
||||||
</p>
|
</p>
|
||||||
|
<ul>
|
||||||
|
{% for area in areas %}
|
||||||
|
<li>
|
||||||
|
<a href="#id-{{ area.acronym|slugify }}">{{ area.acronym|upper }} – {{ area.name }}</a>
|
||||||
|
</li>
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
{% for area in areas %}
|
{% for area in areas %}
|
||||||
<h2 class="mt-3" id="id-{{ area.acronym|slugify }}">
|
<h2 class="mt-3" id="id-{{ area.acronym|slugify }}">
|
||||||
{{ area.name }}
|
{{ area.name }}
|
||||||
|
|
|
@ -12,12 +12,12 @@
|
||||||
<table class="table table-sm table-striped tablesorter">
|
<table class="table table-sm table-striped tablesorter">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th data-sort"team">Team</th>
|
<th data-sort="team">Team</th>
|
||||||
<th data-sort"name">Name</th>
|
<th data-sort="name">Name</th>
|
||||||
<th data-sort"area">Area</th>
|
<th data-sort="area">Area</th>
|
||||||
<th data-sort"ad">AD</th>
|
<th data-sort="ad">AD</th>
|
||||||
<th data-sort"secretaries">Secretaries</th>
|
<th data-sort="secretaries">Secretaries</th>
|
||||||
<th data-sort"chairs">Chairs</th>
|
<th data-sort="chairs">Chairs</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
|
|
|
@ -94,7 +94,7 @@
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<h2 class="mt-5">History of settings</h2>
|
<h2 class="mt-5">History of settings</h2>
|
||||||
<div id="history">
|
<div id="history-settings">
|
||||||
<table class="table table-sm table-striped tablesorter">
|
<table class="table table-sm table-striped tablesorter">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
|
@ -115,15 +115,15 @@
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
<h2 class="mt-5">History of unavailable periods</h2>
|
<h2 class="mt-5">History of unavailable periods</h2>
|
||||||
<div id="history">
|
<div id="history-unavail">
|
||||||
<table class="table table-sm table-striped tablesorter">
|
<table class="table table-sm table-striped tablesorter">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th dta-sort="date">Date</th>
|
<th data-sort="date">Date</th>
|
||||||
<th dta-sort="by">
|
<th data-sort="by">
|
||||||
By
|
By
|
||||||
</th>
|
</th>
|
||||||
<th dta-sort="description">
|
<th data-sort="description">
|
||||||
Description
|
Description
|
||||||
</th>
|
</th>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
Note that the information on historical groups may be inaccurate.
|
Note that the information on historical groups may be inaccurate.
|
||||||
</p>
|
</p>
|
||||||
{% for label, groups in sections.items %}
|
{% for label, groups in sections.items %}
|
||||||
<h2 class="mt-5" id="{{ label }}">{{ label }}</h2>
|
<h2 class="mt-5" id="{{ label|slugify }}">{{ label }}</h2>
|
||||||
{% if label == "WGs" %}
|
{% if label == "WGs" %}
|
||||||
{% elif label == "RGs" %}
|
{% elif label == "RGs" %}
|
||||||
<p class="alert alert-info my-3">
|
<p class="alert alert-info my-3">
|
||||||
|
@ -24,8 +24,8 @@
|
||||||
</p>
|
</p>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if not groups %}
|
{% if not groups %}
|
||||||
<p>
|
<p class="alert alert-info my-3">
|
||||||
<b>No groups found.</b>
|
No groups found.
|
||||||
</p>
|
</p>
|
||||||
{% else %}
|
{% else %}
|
||||||
{% regroup groups by parent as grouped_by_areas %}
|
{% regroup groups by parent as grouped_by_areas %}
|
||||||
|
|
|
@ -76,8 +76,8 @@
|
||||||
<label>Select the next states:</label>
|
<label>Select the next states:</label>
|
||||||
{% for checked, default, s in state.next_states_checkboxes %}
|
{% for checked, default, s in state.next_states_checkboxes %}
|
||||||
<div class="form-check {% if not s.used %}inactive{% endif %}">
|
<div class="form-check {% if not s.used %}inactive{% endif %}">
|
||||||
<input class="form-check-input" type="checkbox" name="next_states" value="{{ s.pk }}" id="value="{{ s.pk }}"" {% if checked %} checked{% endif %}>
|
<input class="form-check-input" type="checkbox" name="next_states" value="{{ s.pk }}" {% if checked %} checked{% endif %}>
|
||||||
<label class="form-check-label" for="{{ s.pk }}">
|
<label class="form-check-label">
|
||||||
{{ s.name }}
|
{{ s.name }}
|
||||||
{% if default %}<span class="badge bg-secondary">Default</span>{% endif %}
|
{% if default %}<span class="badge bg-secondary">Default</span>{% endif %}
|
||||||
</label>
|
</label>
|
||||||
|
|
|
@ -28,9 +28,8 @@
|
||||||
<div class="col-md-6 rightpanel">
|
<div class="col-md-6 rightpanel">
|
||||||
<div class="h2 text-center bg-info">Markdown rendering</div>
|
<div class="h2 text-center bg-info">Markdown rendering</div>
|
||||||
<div class="border-bottom text-center">
|
<div class="border-bottom text-center">
|
||||||
|
<label for="exampleFormControlInput1" class="form-label">Constrain width</label>
|
||||||
<input type="checkbox" class="form-check-input" name="widthconstraint">
|
<input type="checkbox" class="form-check-input" name="widthconstraint">
|
||||||
Constrain width
|
|
||||||
</input>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="rightcontent">{{ rendered|sanitize|safe }}</div>
|
<div class="rightcontent">{{ rendered|sanitize|safe }}</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -12,9 +12,11 @@
|
||||||
<h1>Other RFC streams</h1>
|
<h1>Other RFC streams</h1>
|
||||||
<table class="my-3 table table-sm table-striped tablesorter">
|
<table class="my-3 table table-sm table-striped tablesorter">
|
||||||
<thead>
|
<thead>
|
||||||
<th data-sort="stream">Stream</th>
|
<tr>
|
||||||
<th data-sort="owner">Owner</th>
|
<th data-sort="stream">Stream</th>
|
||||||
<th data-sort="manager">Stream manager</th>
|
<th data-sort="owner">Owner</th>
|
||||||
|
<th data-sort="manager">Stream manager</th>
|
||||||
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
{% for stream in streams %}
|
{% for stream in streams %}
|
||||||
|
|
|
@ -101,7 +101,7 @@
|
||||||
-{{ alatest.reviewed_rev }}
|
-{{ alatest.reviewed_rev }}
|
||||||
</a>
|
</a>
|
||||||
{% if alatest.reviewed_rev != r.doc.rev %}
|
{% if alatest.reviewed_rev != r.doc.rev %}
|
||||||
(<a href="{{ rfcdiff_base_url }}?url1={{ rlatest.doc.name }}-{{ alatest.reviewed_rev }}&url2={{ r.doc.name }}-{{ r.doc.rev }}">diff</a>)
|
(<a href="{{ rfcdiff_base_url }}?url1={{ rlatest.doc.name }}-{{ alatest.reviewed_rev }}&url2={{ r.doc.name }}-{{ r.doc.rev }}">diff</a>)
|
||||||
{% endif %}
|
{% endif %}
|
||||||
:
|
:
|
||||||
<a href="{{ alatest.review.get_absolute_url }}">
|
<a href="{{ alatest.review.get_absolute_url }}">
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<h2 class="mt-5" id="closed-review-requests">Unassigned and open review requests and assignments</h2>
|
<h2 class="mt-5" id="unassigned-and-open-review-requests">Unassigned and open review requests and assignments</h2>
|
||||||
<table class="table table-sm table-striped tablesorter">
|
<table class="table table-sm table-striped tablesorter">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
|
@ -33,7 +33,7 @@
|
||||||
{% if unassigned_review_requests %}
|
{% if unassigned_review_requests %}
|
||||||
<thead>
|
<thead>
|
||||||
<tr class="table-info" id="unassigned-review-requests">
|
<tr class="table-info" id="unassigned-review-requests">
|
||||||
<th colspan=7>Unassigned review requests</th>
|
<th colspan="7">Unassigned review requests</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
|
@ -84,7 +84,7 @@
|
||||||
{% if open_review_assignments %}
|
{% if open_review_assignments %}
|
||||||
<thead>
|
<thead>
|
||||||
<tr class="table-info" id="open_review_assignments">
|
<tr class="table-info" id="open_review_assignments">
|
||||||
<th colspan=7>Open review requests</th>
|
<th colspan="7">Open review requests</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
|
@ -166,7 +166,7 @@
|
||||||
{% if closed_review_requests %}
|
{% if closed_review_requests %}
|
||||||
<thead>
|
<thead>
|
||||||
<tr class="table-info">
|
<tr class="table-info">
|
||||||
<th colspan=8>
|
<th colspan="8">
|
||||||
Closed review requests
|
Closed review requests
|
||||||
</th>
|
</th>
|
||||||
</tr>
|
</tr>
|
||||||
|
@ -206,7 +206,7 @@
|
||||||
{% if closed_review_assignments %}
|
{% if closed_review_assignments %}
|
||||||
<thead>
|
<thead>
|
||||||
<tr class="table-info">
|
<tr class="table-info">
|
||||||
<th colspan=8>
|
<th colspan="8">
|
||||||
Closed review assignments
|
Closed review assignments
|
||||||
</th>
|
</th>
|
||||||
</tr>
|
</tr>
|
||||||
|
@ -244,8 +244,8 @@
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
{% endif %}
|
||||||
{% endif %}
|
</table>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
{% block js %}
|
{% block js %}
|
||||||
<script src="{% static "ietf/js/list.js" %}">
|
<script src="{% static "ietf/js/list.js" %}">
|
||||||
|
|
|
@ -62,7 +62,6 @@
|
||||||
{% person_link person %}
|
{% person_link person %}
|
||||||
{% if person.settings_url %}
|
{% if person.settings_url %}
|
||||||
<a href="{{ person.settings_url }}" class="btn btn-primary btn-small float-end"
|
<a href="{{ person.settings_url }}" class="btn btn-primary btn-small float-end"
|
||||||
}
|
|
||||||
title="{{ person.settings.expertise }}">Edit
|
title="{{ person.settings.expertise }}">Edit
|
||||||
</a>
|
</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -92,7 +91,7 @@
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
{% if assignment_to_closure_days != None %}
|
{% if assignment_to_closure_days != None %}
|
||||||
{{ assignment_to_closure_days }} day{{ assignment_to_closure_days|pluralize }}
|
{{ assignment_to_closure_days }} day{{ assignment_to_closure_days|pluralize }}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
|
|
|
@ -32,7 +32,7 @@
|
||||||
<a class="interim-meeting-link"
|
<a class="interim-meeting-link"
|
||||||
href="{% url 'ietf.meeting.views.interim_request_details' number=meeting.number %}">
|
href="{% url 'ietf.meeting.views.interim_request_details' number=meeting.number %}">
|
||||||
{{ meeting.number }}
|
{{ meeting.number }}
|
||||||
{% if meeting.interim_meeting_cancelled %} <span class="badge bg-warning">CANCELLED</span>{% endif %}
|
{% if meeting.interim_meeting_cancelled %}<span class="ms-1 badge bg-warning">CANCELLED</span>{% endif %}
|
||||||
</a>
|
</a>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
|
@ -52,4 +52,4 @@
|
||||||
<script src="{% static 'ietf/js/select2.js' %}"></script>
|
<script src="{% static 'ietf/js/select2.js' %}"></script>
|
||||||
<script src="{% static 'ietf/js/select2.js' %}"></script>
|
<script src="{% static 'ietf/js/select2.js' %}"></script>
|
||||||
<script src="{% static 'ietf/js/meeting-interim-request.js' %}"></script>
|
<script src="{% static 'ietf/js/meeting-interim-request.js' %}"></script>
|
||||||
{% endblock %}
|
{% endblock %}
|
|
@ -139,6 +139,7 @@
|
||||||
<h2>Completion status and completion time</h2>
|
<h2>Completion status and completion time</h2>
|
||||||
<table class="review-stats table table-sm table-striped tablesorter">
|
<table class="review-stats table table-sm table-striped tablesorter">
|
||||||
<thead>
|
<thead>
|
||||||
|
<tr>
|
||||||
<th data-sort="{{ level }}">
|
<th data-sort="{{ level }}">
|
||||||
{% if level == "team" %}
|
{% if level == "team" %}
|
||||||
Team
|
Team
|
||||||
|
@ -167,13 +168,13 @@
|
||||||
Avg. compl. days
|
Avg. compl. days
|
||||||
{% if count == "pages" %}/page{% endif %}
|
{% if count == "pages" %}/page{% endif %}
|
||||||
</th>
|
</th>
|
||||||
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
{% for row in data %}
|
{% for row in data %}
|
||||||
{% if forloop.first %}
|
|
||||||
<tbody>
|
<tbody>
|
||||||
{% elif forloop.last %}
|
{% if forloop.last %}
|
||||||
</tbody>
|
</tbody>
|
||||||
<tfoot>
|
<tfoot>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{ row.obj }}</td>
|
<td>{{ row.obj }}</td>
|
||||||
|
@ -193,7 +194,7 @@
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</foot>
|
</tfoot>
|
||||||
</table>
|
</table>
|
||||||
{% elif stats_type == "results" %}
|
{% elif stats_type == "results" %}
|
||||||
<h2>
|
<h2>
|
||||||
|
@ -201,6 +202,7 @@
|
||||||
</h2>
|
</h2>
|
||||||
<table class="review-stats table table-sm table-striped tablesorter">
|
<table class="review-stats table table-sm table-striped tablesorter">
|
||||||
<thead>
|
<thead>
|
||||||
|
<tr>
|
||||||
<th data-sort="{{ level }}">
|
<th data-sort="{{ level }}">
|
||||||
{% if level == "team" %}
|
{% if level == "team" %}
|
||||||
Team
|
Team
|
||||||
|
@ -213,13 +215,13 @@
|
||||||
{{ r.name }}
|
{{ r.name }}
|
||||||
</th>
|
</th>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
{% for row in data %}
|
{% for row in data %}
|
||||||
{% if forloop.first %}
|
|
||||||
<tbody>
|
<tbody>
|
||||||
{% elif forloop.last %}
|
{% if forloop.last %}
|
||||||
</tbody>
|
</tbody>
|
||||||
<tfoot>
|
<tfoot>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
|
@ -240,6 +242,7 @@
|
||||||
</h2>
|
</h2>
|
||||||
<table class="review-stats table table-sm table-striped tablesorter">
|
<table class="review-stats table table-sm table-striped tablesorter">
|
||||||
<thead>
|
<thead>
|
||||||
|
<tr>
|
||||||
<th data-sort="{{ level }}">
|
<th data-sort="{{ level }}">
|
||||||
{% if level == "team" %}
|
{% if level == "team" %}
|
||||||
Team
|
Team
|
||||||
|
@ -252,13 +255,13 @@
|
||||||
{{ s.name }}
|
{{ s.name }}
|
||||||
</th>
|
</th>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
{% for row in data %}
|
{% for row in data %}
|
||||||
{% if forloop.first %}
|
<tbody>
|
||||||
<tbody>
|
{% if forloop.last %}
|
||||||
{% elif forloop.last %}
|
</tbody>
|
||||||
</tbody>
|
<tfoot>
|
||||||
<tfoot>
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
|
|
|
@ -57,7 +57,7 @@
|
||||||
<th>Group</th>
|
<th>Group</th>
|
||||||
<td>
|
<td>
|
||||||
{{ submission.group|default:"Individual Submission" }}
|
{{ submission.group|default:"Individual Submission" }}
|
||||||
{% if submission.group %}<a href="{{ doc.group.about_url }}">({{ submission.group.acronym|upper }})</a>{% endif %}
|
{% if submission.group %}<a href="{{ submission.group.about_url }}">({{ submission.group.acronym|upper }})</a>{% endif %}
|
||||||
{% if errors.group %}
|
{% if errors.group %}
|
||||||
<p class="mt-1 mb-0 text-danger">
|
<p class="mt-1 mb-0 text-danger">
|
||||||
<b>{{ errors.group }}</b> (Note: the Secretariat will be notified of this)
|
<b>{{ errors.group }}</b> (Note: the Secretariat will be notified of this)
|
||||||
|
@ -93,9 +93,7 @@
|
||||||
type="submit"
|
type="submit"
|
||||||
value="Submit for manual posting">
|
value="Submit for manual posting">
|
||||||
</form>
|
</form>
|
||||||
<p>
|
{% include "submit/problem-reports-footer.html" %}
|
||||||
{% include "submit/problem-reports-footer.html" %}
|
|
||||||
</p>
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
{% block js %}
|
{% block js %}
|
||||||
{{ all_forms|merge_media:'js' }}<script src="{% static "ietf/js/draft-submit.js" %}"></script>
|
{{ all_forms|merge_media:'js' }}<script src="{% static "ietf/js/draft-submit.js" %}"></script>
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
<br>
|
<br>
|
||||||
<small class="text-muted">{{ submission.name }}</small>
|
<small class="text-muted">{{ submission.name }}</small>
|
||||||
</h1>
|
</h1>
|
||||||
<form method="post" class="show-required" class="my-3">
|
<form method="post" class="show-required my-3">
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
{% bootstrap_form form %}
|
{% bootstrap_form form %}
|
||||||
<button type="submit" class="btn btn-primary">Send email</button>
|
<button type="submit" class="btn btn-primary">Send email</button>
|
||||||
|
|
|
@ -204,7 +204,7 @@
|
||||||
<th>Group</th>
|
<th>Group</th>
|
||||||
<td>
|
<td>
|
||||||
{{ submission.group|default:"Individual Submission" }}
|
{{ submission.group|default:"Individual Submission" }}
|
||||||
{% if submission.group %}<a href="{{ doc.group.about_url }}">({{ submission.group.acronym|upper }})</a>{% endif %}
|
{% if submission.group %}<a href="{{ submission.group.about_url }}">({{ submission.group.acronym|upper }})</a>{% endif %}
|
||||||
{% if errors.group %}
|
{% if errors.group %}
|
||||||
<p class="mt-1 mb-0 text-danger">
|
<p class="mt-1 mb-0 text-danger">
|
||||||
{{ errors.group }}
|
{{ errors.group }}
|
||||||
|
|
|
@ -49,7 +49,6 @@
|
||||||
aria-controls="other-formats">
|
aria-controls="other-formats">
|
||||||
<input class="form-check-input"
|
<input class="form-check-input"
|
||||||
id="checkbox"
|
id="checkbox"
|
||||||
type="checkbox"
|
|
||||||
type="checkbox"/>
|
type="checkbox"/>
|
||||||
Submit other formats
|
Submit other formats
|
||||||
</label>
|
</label>
|
||||||
|
|
|
@ -47,8 +47,10 @@ from bs4 import BeautifulSoup
|
||||||
from contextlib import contextmanager
|
from contextlib import contextmanager
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from tempfile import NamedTemporaryFile
|
from tempfile import NamedTemporaryFile
|
||||||
|
from tidylib import tidy_document
|
||||||
|
|
||||||
import django.test
|
import django.test
|
||||||
|
from django.test.client import Client
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.utils.text import slugify
|
from django.utils.text import slugify
|
||||||
|
|
||||||
|
@ -151,6 +153,44 @@ class ReverseLazyTest(django.test.TestCase):
|
||||||
response = self.client.get('/ipr/update/')
|
response = self.client.get('/ipr/update/')
|
||||||
self.assertRedirects(response, "/ipr/", status_code=301)
|
self.assertRedirects(response, "/ipr/", status_code=301)
|
||||||
|
|
||||||
|
class VerifyingClient(Client):
|
||||||
|
def __init__(self, test):
|
||||||
|
super(VerifyingClient, self).__init__()
|
||||||
|
self.test = test
|
||||||
|
|
||||||
|
def get(self, path, *args, **extra):
|
||||||
|
r = super(VerifyingClient, self).get(path, *args, **extra)
|
||||||
|
# print(path, r.status_code, r["content-type"].lower())
|
||||||
|
if r.status_code < 300 and r["content-type"].lower().startswith(
|
||||||
|
"text/html"
|
||||||
|
):
|
||||||
|
document, errors = tidy_document(
|
||||||
|
r.content, options={"drop-empty-elements": False}
|
||||||
|
)
|
||||||
|
|
||||||
|
errors = "\n".join(
|
||||||
|
[
|
||||||
|
e
|
||||||
|
for e in errors.splitlines()
|
||||||
|
# FIXME-LARS: django-bootstrap5 incorrectly sets a "required"
|
||||||
|
# proprietray attribute on some DIVs; remove those errors
|
||||||
|
if not re.match(r'.*proprietary attribute "required"', e)
|
||||||
|
# FIXME-LARS: some secretariat templates have this issue, ignore
|
||||||
|
and not re.match(r".*id and name attribute value mismatch", e)
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
|
if errors:
|
||||||
|
n = 1
|
||||||
|
print("\n")
|
||||||
|
for line in r.content.decode().splitlines():
|
||||||
|
print(f"{n: 6}: {line}")
|
||||||
|
n += 1
|
||||||
|
print(path)
|
||||||
|
self.test.maxDiff = None
|
||||||
|
self.test.assertEqual("", errors)
|
||||||
|
return r
|
||||||
|
|
||||||
class TestCase(django.test.TestCase):
|
class TestCase(django.test.TestCase):
|
||||||
"""IETF TestCase class
|
"""IETF TestCase class
|
||||||
|
|
||||||
|
@ -261,6 +301,7 @@ class TestCase(django.test.TestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
# Replace settings paths with temporary directories.
|
# Replace settings paths with temporary directories.
|
||||||
super().setUp()
|
super().setUp()
|
||||||
|
self.client = VerifyingClient(self) # Set up the HTML verifier
|
||||||
self._ietf_temp_dirs = {} # trashed during tearDown, DO NOT put paths you care about in this
|
self._ietf_temp_dirs = {} # trashed during tearDown, DO NOT put paths you care about in this
|
||||||
for setting in self.settings_temp_path_overrides:
|
for setting in self.settings_temp_path_overrides:
|
||||||
self._ietf_temp_dirs[setting] = self.tempdir(slugify(setting))
|
self._ietf_temp_dirs[setting] = self.tempdir(slugify(setting))
|
||||||
|
@ -271,4 +312,4 @@ class TestCase(django.test.TestCase):
|
||||||
self._ietf_saved_context.disable()
|
self._ietf_saved_context.disable()
|
||||||
for dir in self._ietf_temp_dirs.values():
|
for dir in self._ietf_temp_dirs.values():
|
||||||
shutil.rmtree(dir)
|
shutil.rmtree(dir)
|
||||||
super().tearDown()
|
super().tearDown()
|
130
package-lock.json
generated
130
package-lock.json
generated
|
@ -1871,9 +1871,9 @@
|
||||||
"peer": true
|
"peer": true
|
||||||
},
|
},
|
||||||
"node_modules/@types/node": {
|
"node_modules/@types/node": {
|
||||||
"version": "17.0.12",
|
"version": "17.0.14",
|
||||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.12.tgz",
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.14.tgz",
|
||||||
"integrity": "sha512-4YpbAsnJXWYK/fpTVFlMIcUIho2AYCi4wg5aNPrG1ng7fn/1/RZfCIpRCiBX+12RVa34RluilnvCqD+g3KiSiA==",
|
"integrity": "sha512-SbjLmERksKOGzWzPNuW7fJM7fk3YXVTFiZWB/Hs99gwhk+/dnrQRPBQjPW9aO+fi1tAffi9PrwFvsmOKmDTyng==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/@types/parse-json": {
|
"node_modules/@types/parse-json": {
|
||||||
|
@ -2200,9 +2200,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/bootstrap-icons": {
|
"node_modules/bootstrap-icons": {
|
||||||
"version": "1.7.2",
|
"version": "1.8.0",
|
||||||
"resolved": "https://registry.npmjs.org/bootstrap-icons/-/bootstrap-icons-1.7.2.tgz",
|
"resolved": "https://registry.npmjs.org/bootstrap-icons/-/bootstrap-icons-1.8.0.tgz",
|
||||||
"integrity": "sha512-NiR2PqC73AQOPdVSu6GJfnk+hN2z6powcistXk1JgPnKuoV2FSdSl26w931Oz9HYbKCcKUSB6ncZTYJAYJl3QQ==",
|
"integrity": "sha512-plaZQb8tReUULAwQ9M98PyWh5H912eKGVC6etMtc6VqmPmp9Eq0s7Wd0qvPoPLHh0VhXxzdLk1ta5W7lwPIdCQ==",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=10"
|
"node": ">=10"
|
||||||
}
|
}
|
||||||
|
@ -2431,9 +2431,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/caniuse-lite": {
|
"node_modules/caniuse-lite": {
|
||||||
"version": "1.0.30001303",
|
"version": "1.0.30001304",
|
||||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001303.tgz",
|
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001304.tgz",
|
||||||
"integrity": "sha512-/Mqc1oESndUNszJP0kx0UaQU9kEv9nNtJ7Kn8AdA0mNnH8eR1cj0kG+NbNuC1Wq/b21eA8prhKRA3bbkjONegQ==",
|
"integrity": "sha512-bdsfZd6K6ap87AGqSHJP/s1V+U6Z5lyrcbBu3ovbCCf8cSYpwTtGrCBObMpJqwxfTbLW6YTIdbb1jEeTelcpYQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"funding": {
|
"funding": {
|
||||||
"type": "opencollective",
|
"type": "opencollective",
|
||||||
|
@ -3159,9 +3159,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/electron-to-chromium": {
|
"node_modules/electron-to-chromium": {
|
||||||
"version": "1.4.54",
|
"version": "1.4.59",
|
||||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.54.tgz",
|
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.59.tgz",
|
||||||
"integrity": "sha512-jRAoneRdSxnpRHO0ANpnEUtQHXxlgfVjrLOnQSisw1ryjXJXvS0pJaR/v2B7S++/tRjgEDp4Sjn5nmgb6uTySw==",
|
"integrity": "sha512-AOJ3cAE0TWxz4fQ9zkND5hWrQg16nsZKVz9INOot1oV//u4wWu5xrj9CQMmPTYskkZRunSRc9sAnr4EkexXokg==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/elliptic": {
|
"node_modules/elliptic": {
|
||||||
|
@ -3321,9 +3321,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/eslint": {
|
"node_modules/eslint": {
|
||||||
"version": "8.7.0",
|
"version": "8.8.0",
|
||||||
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.7.0.tgz",
|
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.8.0.tgz",
|
||||||
"integrity": "sha512-ifHYzkBGrzS2iDU7KjhCAVMGCvF6M3Xfs8X8b37cgrUlDt6bWRTpRh6T/gtSXv1HJ/BUGgmjvNvOEGu85Iif7w==",
|
"integrity": "sha512-H3KXAzQGBH1plhYS3okDix2ZthuYJlQQEGE5k0IKuEqUSiyu4AmxxlJ2MtTYeJ3xB4jDhcYCwGOg2TXYdnDXlQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@eslint/eslintrc": "^1.0.5",
|
"@eslint/eslintrc": "^1.0.5",
|
||||||
|
@ -4016,9 +4016,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/highcharts": {
|
"node_modules/highcharts": {
|
||||||
"version": "9.3.2",
|
"version": "9.3.3",
|
||||||
"resolved": "https://registry.npmjs.org/highcharts/-/highcharts-9.3.2.tgz",
|
"resolved": "https://registry.npmjs.org/highcharts/-/highcharts-9.3.3.tgz",
|
||||||
"integrity": "sha512-I/48gNMvs3hZxZnPRUqLbnlrGZJJ7YPPVr1+fYeZ35p4pSZAOwTmAGbptrjBr7JlF52HmJH9zMbt/I4TPLu9Pg=="
|
"integrity": "sha512-QeOvm6cifeZYYdTLm4IxZsXcOE9c4xqfs0z0OJJ0z7hhA9WG0rmcVAyuIp5HBl/znjA/ayYHmpYjBYD/9PG4Fg=="
|
||||||
},
|
},
|
||||||
"node_modules/highlight.js": {
|
"node_modules/highlight.js": {
|
||||||
"version": "10.4.1",
|
"version": "10.4.1",
|
||||||
|
@ -5552,14 +5552,14 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/postcss": {
|
"node_modules/postcss": {
|
||||||
"version": "8.4.5",
|
"version": "8.4.6",
|
||||||
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.5.tgz",
|
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.6.tgz",
|
||||||
"integrity": "sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg==",
|
"integrity": "sha512-OovjwIzs9Te46vlEx7+uXB0PLijpwjXGKXjVGGPIGubGpq7uh5Xgf6D6FiJ/SzJMBosHDp6a2hiXOS97iBXcaA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"nanoid": "^3.1.30",
|
"nanoid": "^3.2.0",
|
||||||
"picocolors": "^1.0.0",
|
"picocolors": "^1.0.0",
|
||||||
"source-map-js": "^1.0.1"
|
"source-map-js": "^1.0.2"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "^10 || ^12 || >=14"
|
"node": "^10 || ^12 || >=14"
|
||||||
|
@ -5570,9 +5570,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/postcss-calc": {
|
"node_modules/postcss-calc": {
|
||||||
"version": "8.2.2",
|
"version": "8.2.3",
|
||||||
"resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.2.tgz",
|
"resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.3.tgz",
|
||||||
"integrity": "sha512-B5R0UeB4zLJvxNt1FVCaDZULdzsKLPc6FhjFJ+xwFiq7VG4i9cuaJLxVjNtExNK8ocm3n2o4unXXLiVX1SCqxA==",
|
"integrity": "sha512-EGM2EBBWqP57N0E7N7WOLT116PJ39dwHVU01WO4XPPQLJfkL2xVgkMZ+TZvCfapj/uJH07UEfKHQNPHzSw/14Q==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"postcss-selector-parser": "^6.0.2",
|
"postcss-selector-parser": "^6.0.2",
|
||||||
|
@ -6108,9 +6108,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/preact": {
|
"node_modules/preact": {
|
||||||
"version": "10.6.4",
|
"version": "10.6.5",
|
||||||
"resolved": "https://registry.npmjs.org/preact/-/preact-10.6.4.tgz",
|
"resolved": "https://registry.npmjs.org/preact/-/preact-10.6.5.tgz",
|
||||||
"integrity": "sha512-WyosM7pxGcndU8hY0OQlLd54tOU+qmG45QXj2dAYrL11HoyU/EzOSTlpJsirbBr1QW7lICxSsVJJmcmUglovHQ==",
|
"integrity": "sha512-i+LXM6JiVjQXSt2jG2vZZFapGpCuk1fl8o6ii3G84MA3xgj686FKjs4JFDkmUVhtxyq21+4ay74zqPykz9hU6w==",
|
||||||
"funding": {
|
"funding": {
|
||||||
"type": "opencollective",
|
"type": "opencollective",
|
||||||
"url": "https://opencollective.com/preact"
|
"url": "https://opencollective.com/preact"
|
||||||
|
@ -6415,9 +6415,9 @@
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/sass": {
|
"node_modules/sass": {
|
||||||
"version": "1.49.0",
|
"version": "1.49.4",
|
||||||
"resolved": "https://registry.npmjs.org/sass/-/sass-1.49.0.tgz",
|
"resolved": "https://registry.npmjs.org/sass/-/sass-1.49.4.tgz",
|
||||||
"integrity": "sha512-TVwVdNDj6p6b4QymJtNtRS2YtLJ/CqZriGg0eIAbAKMlN8Xy6kbv33FsEZSF7FufFFM705SQviHjjThfaQ4VNw==",
|
"integrity": "sha512-xUU5ZlppOjgfEyIIcHpnmY+f+3/ieaadp25S/OqZ5+jBPeTAMJJblkhM6UD9jb4j/lzglz7VOL5kglYt+CvNdQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"chokidar": ">=3.0.0 <4.0.0",
|
"chokidar": ">=3.0.0 <4.0.0",
|
||||||
|
@ -6428,7 +6428,7 @@
|
||||||
"sass": "sass.js"
|
"sass": "sass.js"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=8.9.0"
|
"node": ">=12.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/select2": {
|
"node_modules/select2": {
|
||||||
|
@ -8524,9 +8524,9 @@
|
||||||
"peer": true
|
"peer": true
|
||||||
},
|
},
|
||||||
"@types/node": {
|
"@types/node": {
|
||||||
"version": "17.0.12",
|
"version": "17.0.14",
|
||||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.12.tgz",
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.14.tgz",
|
||||||
"integrity": "sha512-4YpbAsnJXWYK/fpTVFlMIcUIho2AYCi4wg5aNPrG1ng7fn/1/RZfCIpRCiBX+12RVa34RluilnvCqD+g3KiSiA==",
|
"integrity": "sha512-SbjLmERksKOGzWzPNuW7fJM7fk3YXVTFiZWB/Hs99gwhk+/dnrQRPBQjPW9aO+fi1tAffi9PrwFvsmOKmDTyng==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"@types/parse-json": {
|
"@types/parse-json": {
|
||||||
|
@ -8779,9 +8779,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"bootstrap-icons": {
|
"bootstrap-icons": {
|
||||||
"version": "1.7.2",
|
"version": "1.8.0",
|
||||||
"resolved": "https://registry.npmjs.org/bootstrap-icons/-/bootstrap-icons-1.7.2.tgz",
|
"resolved": "https://registry.npmjs.org/bootstrap-icons/-/bootstrap-icons-1.8.0.tgz",
|
||||||
"integrity": "sha512-NiR2PqC73AQOPdVSu6GJfnk+hN2z6powcistXk1JgPnKuoV2FSdSl26w931Oz9HYbKCcKUSB6ncZTYJAYJl3QQ=="
|
"integrity": "sha512-plaZQb8tReUULAwQ9M98PyWh5H912eKGVC6etMtc6VqmPmp9Eq0s7Wd0qvPoPLHh0VhXxzdLk1ta5W7lwPIdCQ=="
|
||||||
},
|
},
|
||||||
"brace-expansion": {
|
"brace-expansion": {
|
||||||
"version": "1.1.11",
|
"version": "1.1.11",
|
||||||
|
@ -8970,9 +8970,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"caniuse-lite": {
|
"caniuse-lite": {
|
||||||
"version": "1.0.30001303",
|
"version": "1.0.30001304",
|
||||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001303.tgz",
|
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001304.tgz",
|
||||||
"integrity": "sha512-/Mqc1oESndUNszJP0kx0UaQU9kEv9nNtJ7Kn8AdA0mNnH8eR1cj0kG+NbNuC1Wq/b21eA8prhKRA3bbkjONegQ==",
|
"integrity": "sha512-bdsfZd6K6ap87AGqSHJP/s1V+U6Z5lyrcbBu3ovbCCf8cSYpwTtGrCBObMpJqwxfTbLW6YTIdbb1jEeTelcpYQ==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"chalk": {
|
"chalk": {
|
||||||
|
@ -9539,9 +9539,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"electron-to-chromium": {
|
"electron-to-chromium": {
|
||||||
"version": "1.4.54",
|
"version": "1.4.59",
|
||||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.54.tgz",
|
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.59.tgz",
|
||||||
"integrity": "sha512-jRAoneRdSxnpRHO0ANpnEUtQHXxlgfVjrLOnQSisw1ryjXJXvS0pJaR/v2B7S++/tRjgEDp4Sjn5nmgb6uTySw==",
|
"integrity": "sha512-AOJ3cAE0TWxz4fQ9zkND5hWrQg16nsZKVz9INOot1oV//u4wWu5xrj9CQMmPTYskkZRunSRc9sAnr4EkexXokg==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"elliptic": {
|
"elliptic": {
|
||||||
|
@ -9669,9 +9669,9 @@
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"eslint": {
|
"eslint": {
|
||||||
"version": "8.7.0",
|
"version": "8.8.0",
|
||||||
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.7.0.tgz",
|
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.8.0.tgz",
|
||||||
"integrity": "sha512-ifHYzkBGrzS2iDU7KjhCAVMGCvF6M3Xfs8X8b37cgrUlDt6bWRTpRh6T/gtSXv1HJ/BUGgmjvNvOEGu85Iif7w==",
|
"integrity": "sha512-H3KXAzQGBH1plhYS3okDix2ZthuYJlQQEGE5k0IKuEqUSiyu4AmxxlJ2MtTYeJ3xB4jDhcYCwGOg2TXYdnDXlQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"@eslint/eslintrc": "^1.0.5",
|
"@eslint/eslintrc": "^1.0.5",
|
||||||
|
@ -10205,9 +10205,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"highcharts": {
|
"highcharts": {
|
||||||
"version": "9.3.2",
|
"version": "9.3.3",
|
||||||
"resolved": "https://registry.npmjs.org/highcharts/-/highcharts-9.3.2.tgz",
|
"resolved": "https://registry.npmjs.org/highcharts/-/highcharts-9.3.3.tgz",
|
||||||
"integrity": "sha512-I/48gNMvs3hZxZnPRUqLbnlrGZJJ7YPPVr1+fYeZ35p4pSZAOwTmAGbptrjBr7JlF52HmJH9zMbt/I4TPLu9Pg=="
|
"integrity": "sha512-QeOvm6cifeZYYdTLm4IxZsXcOE9c4xqfs0z0OJJ0z7hhA9WG0rmcVAyuIp5HBl/znjA/ayYHmpYjBYD/9PG4Fg=="
|
||||||
},
|
},
|
||||||
"highlight.js": {
|
"highlight.js": {
|
||||||
"version": "10.4.1",
|
"version": "10.4.1",
|
||||||
|
@ -11321,20 +11321,20 @@
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"postcss": {
|
"postcss": {
|
||||||
"version": "8.4.5",
|
"version": "8.4.6",
|
||||||
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.5.tgz",
|
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.6.tgz",
|
||||||
"integrity": "sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg==",
|
"integrity": "sha512-OovjwIzs9Te46vlEx7+uXB0PLijpwjXGKXjVGGPIGubGpq7uh5Xgf6D6FiJ/SzJMBosHDp6a2hiXOS97iBXcaA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"nanoid": "^3.1.30",
|
"nanoid": "^3.2.0",
|
||||||
"picocolors": "^1.0.0",
|
"picocolors": "^1.0.0",
|
||||||
"source-map-js": "^1.0.1"
|
"source-map-js": "^1.0.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"postcss-calc": {
|
"postcss-calc": {
|
||||||
"version": "8.2.2",
|
"version": "8.2.3",
|
||||||
"resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.2.tgz",
|
"resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.3.tgz",
|
||||||
"integrity": "sha512-B5R0UeB4zLJvxNt1FVCaDZULdzsKLPc6FhjFJ+xwFiq7VG4i9cuaJLxVjNtExNK8ocm3n2o4unXXLiVX1SCqxA==",
|
"integrity": "sha512-EGM2EBBWqP57N0E7N7WOLT116PJ39dwHVU01WO4XPPQLJfkL2xVgkMZ+TZvCfapj/uJH07UEfKHQNPHzSw/14Q==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"postcss-selector-parser": "^6.0.2",
|
"postcss-selector-parser": "^6.0.2",
|
||||||
|
@ -11678,9 +11678,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"preact": {
|
"preact": {
|
||||||
"version": "10.6.4",
|
"version": "10.6.5",
|
||||||
"resolved": "https://registry.npmjs.org/preact/-/preact-10.6.4.tgz",
|
"resolved": "https://registry.npmjs.org/preact/-/preact-10.6.5.tgz",
|
||||||
"integrity": "sha512-WyosM7pxGcndU8hY0OQlLd54tOU+qmG45QXj2dAYrL11HoyU/EzOSTlpJsirbBr1QW7lICxSsVJJmcmUglovHQ=="
|
"integrity": "sha512-i+LXM6JiVjQXSt2jG2vZZFapGpCuk1fl8o6ii3G84MA3xgj686FKjs4JFDkmUVhtxyq21+4ay74zqPykz9hU6w=="
|
||||||
},
|
},
|
||||||
"prelude-ls": {
|
"prelude-ls": {
|
||||||
"version": "1.2.1",
|
"version": "1.2.1",
|
||||||
|
@ -11899,9 +11899,9 @@
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"sass": {
|
"sass": {
|
||||||
"version": "1.49.0",
|
"version": "1.49.4",
|
||||||
"resolved": "https://registry.npmjs.org/sass/-/sass-1.49.0.tgz",
|
"resolved": "https://registry.npmjs.org/sass/-/sass-1.49.4.tgz",
|
||||||
"integrity": "sha512-TVwVdNDj6p6b4QymJtNtRS2YtLJ/CqZriGg0eIAbAKMlN8Xy6kbv33FsEZSF7FufFFM705SQviHjjThfaQ4VNw==",
|
"integrity": "sha512-xUU5ZlppOjgfEyIIcHpnmY+f+3/ieaadp25S/OqZ5+jBPeTAMJJblkhM6UD9jb4j/lzglz7VOL5kglYt+CvNdQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"chokidar": ">=3.0.0 <4.0.0",
|
"chokidar": ">=3.0.0 <4.0.0",
|
||||||
|
|
|
@ -73,4 +73,5 @@ Unidecode>=0.4.18,<1.2.0
|
||||||
xml2rfc>=2.35.0
|
xml2rfc>=2.35.0
|
||||||
xym>=0.4.4,!=0.4.7,<1.0
|
xym>=0.4.4,!=0.4.7,<1.0
|
||||||
#zxcvbn-python>=4.4.14 # Not needed until we do back-end password entropy validation
|
#zxcvbn-python>=4.4.14 # Not needed until we do back-end password entropy validation
|
||||||
djhtml>=1.4.11 # To auto-indent templates via "djlint --profile django --reformat"
|
djhtml>=1.4.11 # To auto-indent templates via "djlint --profile django --reformat"
|
||||||
|
pytidylib>=0.3.2 # Used during tests to check validity of generated HTML
|
Loading…
Reference in a new issue