chore: Use URL resolver in more places (#4104)
* chore: Use URL resolver more * Use settings.IDTRACKER_BASE_URL * More fixes * Use URL resolver for things under /accounts * Use URL resolver for things under /stream * Use URL resolver for things under /iesg * Use URL resolver for things under /meeting * Fix bugs * Use URL resolver for things under /help * Use URL resolver for things under /ipr * More changes * Revert vnu.jar * Fix typos * Address review comments by @rjsparks Co-authored-by: Robert Sparks <rjsparks@nostrum.com>
This commit is contained in:
parent
4f34c0478e
commit
c09fd9dad2
|
@ -169,16 +169,14 @@ def doc_canonical_name(name):
|
|||
return ""
|
||||
|
||||
|
||||
def link_charter_doc_match1(match):
|
||||
def link_charter_doc_match(match):
|
||||
if not doc_canonical_name(match[0]):
|
||||
return match[0]
|
||||
return f'<a href="/doc/{match[1][:-1]}/{match[2]}/">{match[0]}</a>'
|
||||
|
||||
|
||||
def link_charter_doc_match2(match):
|
||||
if not doc_canonical_name(match[0]):
|
||||
return match[0]
|
||||
return f'<a href="/doc/{match[1][:-1]}/{match[2]}/">{match[0]}</a>'
|
||||
url = urlreverse(
|
||||
"ietf.doc.views_doc.document_main",
|
||||
kwargs=dict(name=match[1][:-1], rev=match[2]),
|
||||
)
|
||||
return f'<a href="{url}">{match[0]}</a>'
|
||||
|
||||
|
||||
def link_non_charter_doc_match(match):
|
||||
|
@ -187,20 +185,26 @@ def link_non_charter_doc_match(match):
|
|||
if not cname:
|
||||
return match[0]
|
||||
if name == cname:
|
||||
return f'<a href="/doc/{cname}/">{match[0]}</a>'
|
||||
url = urlreverse("ietf.doc.views_doc.document_main", kwargs=dict(name=cname))
|
||||
return f'<a href="{url}">{match[0]}</a>'
|
||||
|
||||
# if we get here, the name probably has a version number and/or extension at the end
|
||||
rev_split = re.search(r"^(" + re.escape(cname) + r")-(\d{2,})", name)
|
||||
if rev_split:
|
||||
name = rev_split.group(1)
|
||||
else:
|
||||
return f'<a href="/doc/{cname}/">{match[0]}</a>'
|
||||
url = urlreverse("ietf.doc.views_doc.document_main", kwargs=dict(name=cname))
|
||||
return f'<a href="{url}">{match[0]}</a>'
|
||||
|
||||
cname = doc_canonical_name(name)
|
||||
if not cname:
|
||||
return match[0]
|
||||
if name == cname:
|
||||
return f'<a href="/doc/{cname}/{rev_split.group(2)}/">{match[0]}</a>'
|
||||
url = urlreverse(
|
||||
"ietf.doc.views_doc.document_main",
|
||||
kwargs=dict(name=cname, rev=rev_split.group(2)),
|
||||
)
|
||||
return f'<a href="{url}">{match[0]}</a>'
|
||||
|
||||
# if we get here, we can't linkify
|
||||
return match[0]
|
||||
|
@ -211,44 +215,33 @@ def link_other_doc_match(match):
|
|||
rev = match[3]
|
||||
if not doc_canonical_name(doc + rev):
|
||||
return match[0]
|
||||
return f'<a href="/doc/{doc}{rev}/">{match[1]}</a>'
|
||||
url = urlreverse("ietf.doc.views_doc.document_main", kwargs=dict(name=doc + rev))
|
||||
return f'<a href="{url}">{match[1]}</a>'
|
||||
|
||||
|
||||
@register.filter(name="urlize_ietf_docs", is_safe=True, needs_autoescape=True)
|
||||
def urlize_ietf_docs(string, autoescape=None):
|
||||
"""
|
||||
Make occurrences of RFC NNNN and draft-foo-bar links to /doc/.
|
||||
Make occurrences of RFC NNNN and draft-foo-bar links to the doc pages.
|
||||
"""
|
||||
if autoescape and not isinstance(string, SafeData):
|
||||
if "<" in string:
|
||||
string = escape(string)
|
||||
else:
|
||||
string = mark_safe(string)
|
||||
exp1 = r"\b(?<![/\-:=#])(charter-(?:[\d\w\.+]+-)*)(\d{2}-\d{2})(\.(?:txt|ps|pdf|html))?\b"
|
||||
exp2 = r"\b(?<![/\-:=#])(charter-(?:[\d\w\.+]+-)*)(\d{2})(\.(?:txt|ps|pdf|html))?\b"
|
||||
if re.search(exp1, string):
|
||||
string = re.sub(
|
||||
exp1,
|
||||
link_charter_doc_match1,
|
||||
string,
|
||||
flags=re.IGNORECASE | re.ASCII,
|
||||
)
|
||||
elif re.search(exp2, string):
|
||||
string = re.sub(
|
||||
exp2,
|
||||
link_charter_doc_match2,
|
||||
string,
|
||||
flags=re.IGNORECASE | re.ASCII,
|
||||
)
|
||||
string = re.sub(
|
||||
r"\b(?<![/\-:=#])(charter-(?:[\d\w\.+]+-)*)(\d{2}(?:-\d{2}))(\.(?:txt|ps|pdf|html))?\b",
|
||||
link_charter_doc_match,
|
||||
string,
|
||||
flags=re.IGNORECASE | re.ASCII,
|
||||
)
|
||||
string = re.sub(
|
||||
r"\b(?<![/\-:=#])((?:draft-|bofreq-|conflict-review-|status-change-)[\d\w\.+-]+(?![-@]))",
|
||||
# r"\b(?<![/\-:=#])(((?:draft-|bofreq-|conflict-review-|status-change-)(?:[\d\w\.+]+-)*)([\d\w\.+]+?)(\.(?:txt|ps|pdf|html))?)\b(?![-@])",
|
||||
link_non_charter_doc_match,
|
||||
string,
|
||||
flags=re.IGNORECASE | re.ASCII,
|
||||
)
|
||||
string = re.sub(
|
||||
# r"\b((RFC|BCP|STD|FYI|(?:draft-|bofreq-|conflict-review-|status-change-|charter-)[-\d\w.+]+)\s*0*(\d+))\b",
|
||||
r"\b(?<![/\-:=#])((RFC|BCP|STD|FYI)\s*0*(\d+))\b",
|
||||
link_other_doc_match,
|
||||
string,
|
||||
|
|
|
@ -1887,7 +1887,7 @@ class DocTestCase(TestCase):
|
|||
self.assertEqual(entry['year'], str(draft.pub_date().year))
|
||||
self.assertEqual(entry['month'], draft.pub_date().strftime('%b').lower())
|
||||
self.assertEqual(entry['day'], str(draft.pub_date().day))
|
||||
self.assertEqual(entry['url'], f'https://datatracker.ietf.org/doc/html/{docname}')
|
||||
self.assertEqual(entry['url'], settings.IDTRACKER_BASE_URL + urlreverse("ietf.doc.views_doc.document_main", kwargs=dict(name=draft.name, rev=draft.rev)))
|
||||
#
|
||||
self.assertNotIn('doi', entry)
|
||||
|
||||
|
|
|
@ -322,7 +322,7 @@ This test section has some text.
|
|||
self.assertContains(r,'Fill in the details below. Keep items in the order they appear here.',status_code=200)
|
||||
r = self.client.post(url, dict(title='default',
|
||||
bofreq_submission='enter',
|
||||
bofreq_content=render_to_string('doc/bofreq/bofreq_template.md',{})))
|
||||
bofreq_content=render_to_string('doc/bofreq/bofreq_template.md',{'settings': settings})))
|
||||
self.assertContains(r, 'The example content may not be saved.', status_code=200)
|
||||
file = NamedTemporaryFile(delete=False,mode="w+",encoding='utf-8')
|
||||
file.write('some stuff')
|
||||
|
|
|
@ -5,6 +5,7 @@ import debug # pyflakes:ignore
|
|||
import io
|
||||
|
||||
from django import forms
|
||||
from django.conf import settings
|
||||
from django.contrib.auth.decorators import login_required
|
||||
from django.shortcuts import get_object_or_404, redirect, render
|
||||
from django.template.loader import render_to_string
|
||||
|
@ -57,7 +58,7 @@ class BofreqUploadForm(forms.Form):
|
|||
if submission_method == "enter":
|
||||
if require_field("bofreq_content"):
|
||||
content = self.cleaned_data["bofreq_content"].replace("\r", "")
|
||||
default_content = render_to_string('doc/bofreq/bofreq_template.md',{})
|
||||
default_content = render_to_string('doc/bofreq/bofreq_template.md', {'settings': settings})
|
||||
if content==default_content:
|
||||
raise forms.ValidationError('The example content may not be saved. Edit it as instructed to document this BOF request.')
|
||||
elif submission_method == "upload":
|
||||
|
@ -178,7 +179,7 @@ def new_bof_request(request):
|
|||
return redirect('ietf.doc.views_doc.document_main', name=bofreq.name)
|
||||
|
||||
else:
|
||||
init = {'bofreq_content':escape(render_to_string('doc/bofreq/bofreq_template.md',{})),
|
||||
init = {'bofreq_content':escape(render_to_string('doc/bofreq/bofreq_template.md',{'settings': settings})),
|
||||
'bofreq_submission':'enter',
|
||||
}
|
||||
form = NewBofreqForm(request.user.person, initial=init)
|
||||
|
@ -346,4 +347,4 @@ def change_state(request, name, option=None):
|
|||
doc=bofreq,
|
||||
login=login,
|
||||
help_url=urlreverse('ietf.doc.views_help.state_help', kwargs=dict(type="bofreq")),
|
||||
))
|
||||
))
|
||||
|
|
|
@ -547,7 +547,7 @@ def index_all_drafts(request):
|
|||
|
||||
names.sort(key=lambda t: t[1])
|
||||
|
||||
names = ['<a href="/doc/' + n + '/">' + n +'</a>'
|
||||
names = [f'<a href=\"{urlreverse("ietf.doc.views_doc.document_main", kwargs=dict(name=n))}\">{n}</a>'
|
||||
for n, __ in names if n not in names_to_skip]
|
||||
|
||||
categories.append((state,
|
||||
|
|
|
@ -744,11 +744,11 @@ def login(request, extra_context=None):
|
|||
logout(request)
|
||||
response = render(request, 'registration/missing_person.html')
|
||||
if require_consent:
|
||||
messages.warning(request, mark_safe('''
|
||||
messages.warning(request, mark_safe(f'''
|
||||
|
||||
You have personal information associated with your account which is not
|
||||
derived from draft submissions or other ietf work, namely: %s. Please go
|
||||
to your <a href="/accounts/profile">account profile</a> and review your
|
||||
to your <a href="{urlreverse("ietf.ietfauth.views.profile")}">account profile</a> and review your
|
||||
personal information, then scoll to the bottom and check the 'confirm'
|
||||
checkbox and submit the form, in order to to indicate that that the
|
||||
provided personal information may be used and displayed within the IETF
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
</td>
|
||||
<td class="text-end">
|
||||
<br>
|
||||
<span class="login">{% if user|has_role:"Secretariat" %}Secretariat {% endif %}Logged in: <a href="/accounts/profile/">{{ user }}</a> | <a rel="nofollow" href="/accounts/logout/">Log out</a></span>
|
||||
<span class="login">{% if user|has_role:"Secretariat" %}Secretariat {% endif %}Logged in: <a href="{% url 'ietf.ietfauth.views.profile' %}">{{ user }}</a> | <a rel="nofollow" href="{% url 'django.contrib.auth.views.logout' %}">Log out</a></span>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
@ -36,4 +36,4 @@
|
|||
<a href="https://www.amsl.com/"><img src="{% static 'secr/images/ams_logo.png' %}" alt="AMS" class="text-end p-3" ></a>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
{% endblock %}
|
|
@ -14,7 +14,7 @@
|
|||
</td>
|
||||
<td class="text-end">
|
||||
<br>
|
||||
<span class="login">{% if user|has_role:"Secretariat" %}Secretariat {% endif %}Logged in: <a href="/accounts/profile/">{{ user }}</a> | <a rel="nofollow" href="/accounts/logout/">Log out</a></span>
|
||||
<span class="login">{% if user|has_role:"Secretariat" %}Secretariat {% endif %}Logged in: <a href="{% url 'ietf.ietfauth.views.profile' %}">{{ user }}</a> | <a rel="nofollow" href="{% url 'django.contrib.auth.views.logout' %}">Log out</a></span>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
@ -36,4 +36,4 @@
|
|||
<a href="https://www.amsl.com/"><img src="{% static 'secr/images/ams_logo.png' %}" alt="AMS" class="text-end p-3" ></a>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
{% endblock %}
|
|
@ -1,3 +1,3 @@
|
|||
<ul>
|
||||
<li><a href="https://datatracker.ietf.org/meeting/{{ meeting.number }}/agenda.txt" target="_blank">View Agenda</a>.</li>
|
||||
<li><a href="{% url 'ietf.meeting.views.agenda' num=meeting.number ext='.txt' %}" target="_blank">View Agenda</a>.</li>
|
||||
</ul>
|
|
@ -13,7 +13,7 @@
|
|||
{% for meeting in meetings %}
|
||||
<tr class="{% cycle 'row1' 'row2' %}">
|
||||
<td class="text-start text-nowrap">{{ meeting.date }}</td>
|
||||
<td><a href="https://datatracker.ietf.org/wg/{{ meeting.group.acronym }}">{{ meeting.group.acronym }}</a></td>
|
||||
<td><a href="{% url 'ietf.group.views.group_home' acronym=meeting.group.acronym %}">{{ meeting.group.acronym }}</a></td>
|
||||
{% if meeting.schedule %}
|
||||
<td class="text-center"><a href="{{ meeting.schedule.get_absolute_url }}">Agenda</a></td>
|
||||
{% else %}
|
||||
|
@ -33,4 +33,4 @@
|
|||
{% endfor %}
|
||||
</table>
|
||||
|
||||
{% endblock %}
|
||||
{% endblock %}
|
|
@ -12,7 +12,7 @@
|
|||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<p>» <a href="/meeting/requests">View list of timeslot requests</a></p>
|
||||
<p>» <a href="{% url 'ietf.meeting.views.meeting_requests' %}">View list of timeslot requests</a></p>
|
||||
<div class="module interim-container">
|
||||
<h2>Sessions - Status</h2>
|
||||
|
||||
|
@ -27,4 +27,4 @@
|
|||
|
||||
</div> <!-- module -->
|
||||
|
||||
{% endblock %}
|
||||
{% endblock %}
|
|
@ -16,7 +16,7 @@
|
|||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<p>» <a href="/meeting/requests">View list of timeslot requests</a></p>
|
||||
<p>» <a href="{% url 'ietf.meeting.views.meeting_requests' %}">View list of timeslot requests</a></p>
|
||||
<div class="module interim-container">
|
||||
<h2>
|
||||
Sessions Request Tool: IETF {{ meeting.number }}
|
||||
|
|
|
@ -5,7 +5,7 @@ submitted by {{ requester }}.
|
|||
The third session requires your approval.
|
||||
|
||||
To approve the session go to the session request view here:
|
||||
https://datatracker.ietf.org{% url "ietf.secr.sreq.views.view" acronym=group.acronym %}
|
||||
{{ settings.IDTRACKER_BASE_URL }}{% url "ietf.secr.sreq.views.view" acronym=group.acronym %}
|
||||
and click "Approve Third Session".
|
||||
|
||||
Regards,
|
||||
|
|
|
@ -7,6 +7,6 @@
|
|||
{{ form.date.label_tag }} {{ form.date }} <button type="submit" name="submit" value="Select">Select</button>
|
||||
</form>
|
||||
<br>
|
||||
<a href="/admin/iesg/telechatdate/" target="_blank">Add a new Telechat Date</a>
|
||||
<a href="{% url 'admin:iesg_telechatdate_changelist' %}" target="_blank">Add a new Telechat Date</a>
|
||||
</div>
|
||||
{% endblock %}
|
|
@ -14,8 +14,8 @@
|
|||
{% endfor %}
|
||||
</ul>
|
||||
<br>
|
||||
<a href="/admin/iesg/telechatagendaitem/" target="_blank">Add a new Management Issue</a>
|
||||
<a href="{% url 'admin:iesg_telechatagendaitem_changelist' %}" target="_blank">Add a new Management Issue</a>
|
||||
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
||||
{% endblock %}
|
|
@ -515,9 +515,6 @@ CORS_URLS_REGEX = r'^(/api/.*|.*\.json|.*/json/?)$'
|
|||
# Setting for django_referrer_policy.middleware.ReferrerPolicyMiddleware
|
||||
REFERRER_POLICY = 'strict-origin-when-cross-origin'
|
||||
|
||||
# Content security policy configuration (django-csp)
|
||||
CSP_DEFAULT_SRC = ("'self'", "'unsafe-inline'", "data: https://datatracker.ietf.org/ https://www.ietf.org/ https://analytics.ietf.org/")
|
||||
|
||||
# django.middleware.security.SecurityMiddleware
|
||||
SECURE_BROWSER_XSS_FILTER = True
|
||||
SECURE_CONTENT_TYPE_NOSNIFF = True
|
||||
|
@ -541,6 +538,9 @@ RFCDIFF_BASE_URL = "https://www.ietf.org/rfcdiff"
|
|||
IDNITS_BASE_URL = "https://www.ietf.org/tools/idnits"
|
||||
XML2RFC_BASE_URL = "https://xml2rfc.tools.ietf.org/experimental.html"
|
||||
|
||||
# Content security policy configuration (django-csp)
|
||||
CSP_DEFAULT_SRC = ("'self'", "'unsafe-inline'", f"data: {IDTRACKER_BASE_URL} https://www.ietf.org/ https://analytics.ietf.org/")
|
||||
|
||||
# The name of the method to use to invoke the test suite
|
||||
TEST_RUNNER = 'ietf.utils.test_runner.IetfTestRunner'
|
||||
|
||||
|
@ -1010,7 +1010,7 @@ BIBXML_BASE_PATH = '/a/ietfdata/derived/bibxml'
|
|||
TZDATA_ICS_PATH = BASE_DIR + '/../vzic/zoneinfo/'
|
||||
|
||||
SECR_BLUE_SHEET_PATH = '/a/www/ietf-datatracker/documents/blue_sheet.rtf'
|
||||
SECR_BLUE_SHEET_URL = '//datatracker.ietf.org/documents/blue_sheet.rtf'
|
||||
SECR_BLUE_SHEET_URL = IDTRACKER_BASE_URL + '/documents/blue_sheet.rtf'
|
||||
SECR_INTERIM_LISTING_DIR = '/a/www/www6/meeting/interim'
|
||||
SECR_MAX_UPLOAD_SIZE = 40960000
|
||||
SECR_PROCEEDINGS_DIR = '/a/www/www6s/proceedings/'
|
||||
|
@ -1265,4 +1265,4 @@ if SERVER_MODE != 'production':
|
|||
CSRF_COOKIE_SAMESITE = 'Lax'
|
||||
SESSION_COOKIE_SECURE = False
|
||||
SESSION_COOKIE_SAMESITE = 'Lax'
|
||||
|
||||
|
||||
|
|
|
@ -15,6 +15,9 @@ from ietf.settings import TEST_CODE_COVERAGE_CHECKER, BASE_DIR, PHOTOS_DIRNAME
|
|||
import debug # pyflakes:ignore
|
||||
debug.debug = True
|
||||
|
||||
# Use a different hostname, to catch hardcoded values
|
||||
IDTRACKER_BASE_URL = "https://sqlitetest.ietf.org"
|
||||
|
||||
# Workaround to avoid spending minutes stepping through the migrations in
|
||||
# every test run. The result of this is to use the 'syncdb' way of creating
|
||||
# the test database instead of doing it through the migrations. Taken from
|
||||
|
|
|
@ -15,10 +15,10 @@
|
|||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
<a href="/accounts/login/">Attempt to login again</a>
|
||||
<a href="{% url 'ietf.ietfauth.views.login' %}">Attempt to login again</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="/accounts/reset/">Request a password reset</a>
|
||||
<a href="{% url 'ietf.ietfauth.views.password_reset' %}">Request a password reset</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="mb-0">
|
||||
|
|
|
@ -25,7 +25,7 @@
|
|||
</p>
|
||||
<p>
|
||||
The API top endpoint is at
|
||||
<a href="https://datatracker.ietf.org/api/v1/">https://datatracker.ietf.org/api/v1/</a>.
|
||||
<a href="{{ settings.IDTRACKER_BASE_URL }}{% url 'ietf.api.views.top_level' %}">{{ settings.IDTRACKER_BASE_URL }}{% url 'ietf.api.views.top_level' %}</a>.
|
||||
The top
|
||||
endpoint lists inferior endpoints, and thus permits some autodiscovery,
|
||||
but there's really no substitute for looking at the actual ORM model classes.
|
||||
|
@ -34,7 +34,7 @@
|
|||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
<a href="https://datatracker.ietf.org/api/v1/group/group/">https://datatracker.ietf.org/api/v1/group/group/</a>
|
||||
<a href="{{ settings.IDTRACKER_BASE_URL }}{% url 'ietf.api.views.top_level' %}/group/group/">{{ settings.IDTRACKER_BASE_URL }}{% url 'ietf.api.views.top_level' %}/group/group/</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="https://github.com/ietf-tools/datatracker/blob/main/ietf/group/models.py">
|
||||
|
@ -49,7 +49,7 @@
|
|||
<h3 id="framework-documents">Framework API: Documents</h3>
|
||||
<p>
|
||||
Documents are listed at
|
||||
<a href="https://datatracker.ietf.org/api/v1/doc/document/">/api/v1/doc/document/</a>.
|
||||
<a href="{{ settings.IDTRACKER_BASE_URL }}{% url 'ietf.api.views.top_level' %}/doc/document/">{% url 'ietf.api.views.top_level' %}/doc/document/</a>.
|
||||
</p>
|
||||
<p>
|
||||
In general, individual database objects are represented in the API with a path
|
||||
|
@ -61,8 +61,8 @@
|
|||
URL:
|
||||
</p>
|
||||
<p>
|
||||
<a href="https://datatracker.ietf.org/api/v1/doc/document/draft-ietf-eppext-keyrelay/">
|
||||
https://datatracker.ietf.org/api/v1/doc/document/draft-ietf-eppext-keyrelay/
|
||||
<a href="{{ settings.IDTRACKER_BASE_URL }}{% url 'ietf.api.views.top_level' %}/doc/document/draft-ietf-eppext-keyrelay/">
|
||||
{{ settings.IDTRACKER_BASE_URL }}{% url 'ietf.api.views.top_level' %}/doc/document/draft-ietf-eppext-keyrelay/
|
||||
</a>
|
||||
</p>
|
||||
<p>
|
||||
|
@ -71,7 +71,7 @@
|
|||
and a list with one element:
|
||||
</p>
|
||||
<p>
|
||||
<a href="https://datatracker.ietf.org/api/v1/doc/document/?name=draft-ietf-eppext-keyrelay">
|
||||
<a href="{{ settings.IDTRACKER_BASE_URL }}{% url 'ietf.api.views.top_level' %}/doc/document/?name=draft-ietf-eppext-keyrelay">
|
||||
api/v1/doc/document/?name=draft-ietf-eppext-keyrelay
|
||||
</a>
|
||||
</p>
|
||||
|
@ -82,13 +82,13 @@
|
|||
<ul>
|
||||
<li>
|
||||
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="{{ settings.IDTRACKER_BASE_URL }}{% url 'ietf.api.views.top_level' %}/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>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
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="{{ settings.IDTRACKER_BASE_URL }}{% url 'ietf.api.views.top_level' %}/doc/document/?name__contains=-v6ops&states__type__slug__in=draft-iesg">
|
||||
v6ops documents which match <code>states__type__slug__in=draft-iesg</code>
|
||||
</a>
|
||||
</li>
|
||||
|
@ -110,22 +110,22 @@
|
|||
You could either fetch and remember the different state groups of interest to you
|
||||
with queries like
|
||||
<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-iesg'
|
||||
$ curl 'https://datatracker.ietf.org/api/v1/doc/state/?format=json&limit=0&type__slug__in=draft-stream-ietf'
|
||||
$ curl '{{ settings.IDTRACKER_BASE_URL }}{% url 'ietf.api.views.top_level' %}/doc/state/?format=json&limit=0&type__slug__in=draft-rfceditor'
|
||||
$ curl '{{ settings.IDTRACKER_BASE_URL }}{% url 'ietf.api.views.top_level' %}/doc/state/?format=json&limit=0&type__slug__in=draft-iesg'
|
||||
$ curl '{{ settings.IDTRACKER_BASE_URL }}{% url 'ietf.api.views.top_level' %}/doc/state/?format=json&limit=0&type__slug__in=draft-stream-ietf'
|
||||
</pre>
|
||||
and then match the listed "resource_uri" of the results to the states listed for each
|
||||
document when you ask for
|
||||
<pre>
|
||||
$ curl 'https://datatracker.ietf.org/api/v1/doc/document/?limit=0&name__contains=-v6ops-'
|
||||
$ curl '{{ settings.IDTRACKER_BASE_URL }}{% url 'ietf.api.views.top_level' %}/doc/document/?limit=0&name__contains=-v6ops-'
|
||||
</pre>
|
||||
</li>
|
||||
<li>
|
||||
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:
|
||||
<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-iesg' ...
|
||||
$ curl '{{ settings.IDTRACKER_BASE_URL }}{% url 'ietf.api.views.top_level' %}/doc/document/?limit=0&name__contains=-v6ops-&states__type__slug__in=draft-rfceditor' ...
|
||||
$ curl '{{ settings.IDTRACKER_BASE_URL }}{% url 'ietf.api.views.top_level' %}/doc/document/?limit=0&name__contains=-v6ops-&states__type__slug__in=draft-iesg' ...
|
||||
</pre>
|
||||
etc.
|
||||
</li>
|
||||
|
@ -180,7 +180,7 @@ $ curl 'https://datatracker.ietf.org/api/v1/doc/document/?limit=0&name__cont
|
|||
Here is an example:
|
||||
</p>
|
||||
<pre>
|
||||
$ curl -S -F "apikey=AwAAABVR3D5GHkVMhspKSxBCVknGMmqikNIhT85kSnghjaV_pYy26WV92mm-jpdi" -F "doc=draft-ietf-lamps-eai-addresses" -F "position=noobj" -F "comment=Comment text" https://datatracker.ietf.org/api/iesg/position
|
||||
$ curl -S -F "apikey=AwAAABVR3D5GHkVMhspKSxBCVknGMmqikNIhT85kSnghjaV_pYy26WV92mm-jpdi" -F "doc=draft-ietf-lamps-eai-addresses" -F "position=noobj" -F "comment=Comment text" {{ settings.IDTRACKER_BASE_URL }}{% url 'ietf.doc.views_ballot.api_set_position' %}
|
||||
Done
|
||||
</pre>
|
||||
<h2 id="session-video-url-api">Set Session Video URL</h2>
|
||||
|
@ -221,7 +221,7 @@ $ curl -S -F "apikey=AwAAABVR3D5GHkVMhspKSxBCVknGMmqikNIhT85kSnghjaV_pYy26WV92mm
|
|||
Here is an example:
|
||||
</p>
|
||||
<pre>
|
||||
$ curl -S -F "apikey=DgAAAMLSi3coaE5TjrRs518xO8eBRlCmFF3eQcC8_SjUTtRGLGiJh7-1SYPT5WiS" -F "meeting=101" -F "group=mptcp" -F "item=1" -F "url=https://foo.example/beer/mptcp" https://datatracker.ietf.org/api/meeting/session/video/url
|
||||
$ curl -S -F "apikey=DgAAAMLSi3coaE5TjrRs518xO8eBRlCmFF3eQcC8_SjUTtRGLGiJh7-1SYPT5WiS" -F "meeting=101" -F "group=mptcp" -F "item=1" -F "url=https://foo.example/beer/mptcp" {{ settings.IDTRACKER_BASE_URL }}{% url 'ietf.meeting.views.api_set_session_video_url' %}
|
||||
Done
|
||||
</pre>
|
||||
<h2 id="openid-connect">OpenID Connect</h2>
|
||||
|
@ -230,7 +230,7 @@ $ curl -S -F "apikey=DgAAAMLSi3coaE5TjrRs518xO8eBRlCmFF3eQcC8_SjUTtRGLGiJh7-1SYP
|
|||
<a href="https://openid.net/connect/">OpenID Connect</a>,
|
||||
but
|
||||
not dynamic registration. The OpenID Connect Issuer is
|
||||
<code> {{ settings.IDTRACKER_BASE_URL }}{% url 'ietf.api.urls.oidc_issuer' %} </code>
|
||||
<code>{{ settings.IDTRACKER_BASE_URL }}{% url 'ietf.api.urls.oidc_issuer' %}</code>
|
||||
</p>
|
||||
<h2 id="datatracker-version">Datatracker Version</h2>
|
||||
<p>
|
||||
|
|
|
@ -47,7 +47,7 @@
|
|||
{% if not user.is_authenticated %}
|
||||
<a class="d-none d-sm-block mx-5 btn {% if server_mode and server_mode == "production" %} btn-warning {% else %} btn-info {% endif %}"
|
||||
rel="nofollow"
|
||||
href="/accounts/login/?next={{ request.get_full_path|removesuffix:"accounts/logout/"|urlencode }}">
|
||||
href="{% url 'ietf.ietfauth.views.login' %}?next={{ request.get_full_path|removesuffix:'accounts/logout/'|urlencode }}">
|
||||
Sign
|
||||
in
|
||||
</a>
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
<link rel="icon"
|
||||
sizes="16x16"
|
||||
href="{% if server_mode and server_mode == 'production' %}{% static 'ietf/images/ietf-logo-nor-16.png' %}{% else %}{% static 'ietf/images/ietf-logo-nor-16-dev.png' %}{% endif %}">
|
||||
<link rel="manifest" href="/site.webmanifest">
|
||||
<link rel="manifest" href="{% url 'site.webmanifest' %}">
|
||||
<link rel="mask-icon"
|
||||
href="{% static 'ietf/images/ietf-logo-nor-mask.svg' %}"
|
||||
color="{% if server_mode and server_mode == 'production' %}#ffffff{% else %}#ffc4c4{% endif %}">
|
||||
|
|
|
@ -236,19 +236,19 @@
|
|||
{% endif %}
|
||||
<li>
|
||||
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
||||
href="/meeting/agenda/">
|
||||
href="{% url 'ietf.meeting.views.agenda' %}">
|
||||
Agenda
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
||||
href="/meeting/materials/">
|
||||
href="{% url 'ietf.meeting.views.materials' %}">
|
||||
Materials
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
||||
href="/meeting/floor-plan/">
|
||||
href="{% url 'ietf.meeting.views.floor_plan' %}">
|
||||
Floor plan
|
||||
</a>
|
||||
</li>
|
||||
|
@ -266,13 +266,13 @@
|
|||
</li>
|
||||
<li>
|
||||
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
||||
href="/secr/sreq/">
|
||||
href="{% url 'ietf.secr.sreq.views.main' %}">
|
||||
Request a session
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
||||
href="/meeting/requests">
|
||||
href="{% url 'ietf.meeting.views.meeting_requests' %}">
|
||||
Session requests
|
||||
</a>
|
||||
</li>
|
||||
|
@ -287,7 +287,7 @@
|
|||
{% endif %}
|
||||
<li>
|
||||
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
||||
href="/meeting/upcoming">
|
||||
href="{% url 'ietf.meeting.views.upcoming' %}">
|
||||
Upcoming meetings
|
||||
</a>
|
||||
</li>
|
||||
|
@ -302,7 +302,7 @@
|
|||
{% endif %}
|
||||
<li>
|
||||
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
||||
href="/meeting/past">
|
||||
href="{% url 'ietf.meeting.views.past' %}">
|
||||
Past meetings
|
||||
</a>
|
||||
</li>
|
||||
|
@ -334,19 +334,19 @@
|
|||
{% endif %}
|
||||
<li>
|
||||
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
||||
href="/ipr/">
|
||||
href="{% url 'ietf.ipr.views.showlist' %}">
|
||||
IPR disclosures
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
||||
href="/liaison/">
|
||||
href="{% url 'ietf.liaisons.views.liaison_list' %}">
|
||||
Liaison statements
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
||||
href="/iesg/agenda/">
|
||||
href="{% url 'ietf.iesg.views.agenda' %}">
|
||||
IESG agenda
|
||||
</a>
|
||||
</li>
|
||||
|
@ -358,7 +358,7 @@
|
|||
</li>
|
||||
<li>
|
||||
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
||||
href="/doc/downref/">
|
||||
href="{% url 'ietf.doc.views_downref.downref_registry' %}">
|
||||
Downref registry
|
||||
</a>
|
||||
</li>
|
||||
|
@ -392,13 +392,13 @@
|
|||
</li>
|
||||
<li>
|
||||
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
||||
href="/group/edu/materials/">
|
||||
href="{% url "ietf.group.views.materials" acronym='edu' %}">
|
||||
Tutorials
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
|
||||
href="/api/">
|
||||
href="{% url 'ietf.api.views.api_help' %}">
|
||||
API Help
|
||||
</a>
|
||||
</li>
|
||||
|
@ -426,4 +426,4 @@
|
|||
{% endif %}
|
||||
{% if flavor == 'top' %}
|
||||
{% include "base/menu_user.html" %}
|
||||
{% endif %}
|
||||
{% endif %}
|
|
@ -20,11 +20,12 @@
|
|||
<span class="fw-bolder">User</span>
|
||||
</li>
|
||||
{% endif %}
|
||||
{% if request.get_full_path == "/accounts/logout/" %}
|
||||
{% url 'django.contrib.auth.views.logout' as logout_url %}
|
||||
{% if request.get_full_path == logout_url %}
|
||||
<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 %}">
|
||||
href="{% url 'ietf.ietfauth.views.login' %}{% if logout_url not in request.get_full_path %}/?next={{ request.get_full_path|urlencode }}{% endif %}">
|
||||
Sign in
|
||||
</a>
|
||||
</li>
|
||||
|
@ -33,33 +34,33 @@
|
|||
<li>
|
||||
<a class="dropdown-item {% if flavor != 'top' %} text-wrap link-primary{% endif %}"
|
||||
rel="nofollow"
|
||||
href="/accounts/logout/">
|
||||
href="{% url 'django.contrib.auth.views.logout' %}">
|
||||
Sign out
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="dropdown-item {% if flavor != 'top' %} text-wrap link-primary{% endif %}"
|
||||
rel="nofollow"
|
||||
href="/accounts/profile/">
|
||||
href="{% url 'ietf.ietfauth.views.profile' %}">
|
||||
Account info
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="dropdown-item {% if flavor != 'top' %} text-wrap link-primary{% endif %}"
|
||||
href="/person/{{ user.person.name|urlencode }}">
|
||||
href="{% url 'ietf.person.views.profile' email_or_name=user.person.name %}">
|
||||
Public profile page
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="dropdown-item {% if flavor != 'top' %} text-wrap link-primary{% endif %}"
|
||||
href="{% url "ietf.cookies.views.preferences" %}"
|
||||
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" %}"
|
||||
href="{% url 'ietf.ietfauth.views.apikey_index' %}"
|
||||
rel="nofollow">
|
||||
API keys
|
||||
</a>
|
||||
|
@ -67,14 +68,14 @@
|
|||
<li>
|
||||
<a class="dropdown-item {% if flavor != 'top' %} text-wrap link-primary{% endif %}"
|
||||
rel="nofollow"
|
||||
href="/accounts/password/">
|
||||
href="{% url 'ietf.ietfauth.views.change_password' %}">
|
||||
Change password
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="dropdown-item {% if flavor != 'top' %} text-wrap link-primary{% endif %}"
|
||||
rel="nofollow"
|
||||
href="/accounts/username/">
|
||||
href="{% url 'ietf.ietfauth.views.change_username' %}">
|
||||
Change username
|
||||
</a>
|
||||
</li>
|
||||
|
@ -82,20 +83,20 @@
|
|||
<li>
|
||||
<a class="dropdown-item {% if flavor != 'top' %} text-wrap link-primary{% endif %}"
|
||||
rel="nofollow"
|
||||
href="/accounts/login/?next={{ request.get_full_path|urlencode }}">
|
||||
href="{% url 'ietf.ietfauth.views.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/">
|
||||
href="{% url 'ietf.ietfauth.views.password_reset' %}">
|
||||
Password reset
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="dropdown-item {% if flavor != 'top' %} text-wrap link-primary{% endif %}"
|
||||
href="{% url "ietf.cookies.views.preferences" %}"
|
||||
href="{% url 'ietf.cookies.views.preferences' %}"
|
||||
rel="nofollow">
|
||||
Preferences
|
||||
</a>
|
||||
|
@ -111,7 +112,7 @@
|
|||
{% if not request.user.is_authenticated %}
|
||||
<li>
|
||||
<a class="dropdown-item {% if flavor != 'top' %} text-wrap link-primary{% endif %}"
|
||||
href="{% url "ietf.ietfauth.views.create_account" %}">
|
||||
href="{% url 'ietf.ietfauth.views.create_account' %}">
|
||||
New account
|
||||
</a>
|
||||
</li>
|
||||
|
@ -119,7 +120,7 @@
|
|||
{% 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" %}">
|
||||
href="{% url 'ietf.ietfauth.views.review_overview' %}">
|
||||
My reviews
|
||||
</a>
|
||||
</li>
|
||||
|
@ -135,25 +136,25 @@
|
|||
</li>
|
||||
<li>
|
||||
<a class="dropdown-item {% if flavor != 'top' %} text-wrap link-primary{% endif %}"
|
||||
href="{% url "ietf.iesg.views.agenda_documents" %}">
|
||||
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" %}">
|
||||
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" %}">
|
||||
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" %}">
|
||||
href="{% url 'ietf.doc.views_search.drafts_in_last_call' %}">
|
||||
Last Call docs
|
||||
</a>
|
||||
</li>
|
||||
|
@ -165,31 +166,31 @@
|
|||
</li>
|
||||
<li>
|
||||
<a class="dropdown-item {% if flavor != 'top' %} text-wrap link-primary{% endif %}"
|
||||
href="/admin/iesg/telechatdate/">
|
||||
href="{% url 'admin:iesg_telechatdate_changelist' %}">
|
||||
Telechat dates
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="dropdown-item {% if flavor != 'top' %} text-wrap link-primary{% endif %}"
|
||||
href="/admin/iesg/telechatagendaitem/">
|
||||
href="{% url 'admin:iesg_telechatagendaitem_changelist' %}">
|
||||
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" %}">
|
||||
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" %}">
|
||||
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" %}">
|
||||
href="{% url 'ietf.ietfauth.views.add_account_whitelist' %}">
|
||||
Account whitelist
|
||||
</a>
|
||||
</li>
|
||||
|
@ -204,7 +205,7 @@
|
|||
</li>
|
||||
<li>
|
||||
<a class="dropdown-item {% if flavor != 'top' %} text-wrap link-primary{% endif %}"
|
||||
href="{% url "ietf.sync.views.discrepancies" %}">
|
||||
href="{% url 'ietf.sync.views.discrepancies' %}">
|
||||
Sync discrepancies
|
||||
</a>
|
||||
</li>
|
||||
|
@ -219,9 +220,9 @@
|
|||
</li>
|
||||
<li>
|
||||
<a class="dropdown-item {% if flavor != 'top' %} text-wrap link-primary{% endif %}"
|
||||
href="{% url "ietf.sync.views.discrepancies" %}">
|
||||
href="{% url 'ietf.sync.views.discrepancies' %}">
|
||||
Sync discrepancies
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
{% if flavor == "top" %}</ul></li>{% endif %}
|
||||
{% if flavor == "top" %}</ul></li>{% endif %}
|
|
@ -61,7 +61,7 @@
|
|||
Conveniently track individual documents in your personal list with the track icon
|
||||
<i class="bi bi-bookmark"></i>
|
||||
in
|
||||
<a href="/doc/search/">search results</a>.
|
||||
<a href="{% url 'ietf.doc.views_search.search' %}">search results</a>.
|
||||
</p>
|
||||
<p>
|
||||
You can also add documents here:
|
||||
|
|
|
@ -4,7 +4,7 @@ Hello,
|
|||
This is a notification from the {{ clist.long_name }}.
|
||||
|
||||
Document: {{ event.doc }},
|
||||
https://datatracker.ietf.org/doc/{{ event.doc.name }}/
|
||||
{{ settings.IDTRACKER_BASE_URL }}{% url 'ietf.doc.views_doc.document_main' name=event.doc.name %}
|
||||
|
||||
Change by {{ event.by }} on {{ event.time }}:
|
||||
|
||||
|
|
|
@ -21,42 +21,42 @@
|
|||
{% if new_enough == '7' %}
|
||||
active
|
||||
{% endif %}"
|
||||
href="/accounts/settings/new_enough/7">
|
||||
href="{% url 'ietf.cookies.views.new_enough' days=7 %}">
|
||||
7 days
|
||||
</a>
|
||||
<a class="btn btn-outline-primary
|
||||
{% if new_enough == '14' %}
|
||||
active
|
||||
{% endif %}"
|
||||
href="/accounts/settings/new_enough/14">
|
||||
href="{% url 'ietf.cookies.views.new_enough' days=14 %}">
|
||||
14 days
|
||||
</a>
|
||||
<a class="btn btn-outline-primary
|
||||
{% if new_enough == '21' %}
|
||||
active
|
||||
{% endif %}"
|
||||
href="/accounts/settings/new_enough/21">
|
||||
href="{% url 'ietf.cookies.views.new_enough' days=21 %}">
|
||||
21 days
|
||||
</a>
|
||||
<a class="btn btn-outline-primary
|
||||
{% if new_enough == '30' %}
|
||||
active
|
||||
{% endif %}"
|
||||
href="/accounts/settings/new_enough/30">
|
||||
href="{% url 'ietf.cookies.views.new_enough' days=30 %}">
|
||||
30 days
|
||||
</a>
|
||||
<a class="btn btn-outline-primary
|
||||
{% if new_enough == '60' %}
|
||||
active
|
||||
{% endif %}"
|
||||
href="/accounts/settings/new_enough/60">
|
||||
href="{% url 'ietf.cookies.views.new_enough' days=60 %}">
|
||||
60 days
|
||||
</a>
|
||||
<a class="btn btn-outline-primary
|
||||
{% if new_enough == '90' %}
|
||||
active
|
||||
{% endif %}"
|
||||
href="/accounts/settings/new_enough/90">
|
||||
href="{% url 'ietf.cookies.views.new_enough' days=90 %}">
|
||||
90 days
|
||||
</a>
|
||||
</p>
|
||||
|
@ -69,42 +69,42 @@
|
|||
{% if expires_soon == '7' %}
|
||||
active
|
||||
{% endif %}"
|
||||
href="/accounts/settings/expires_soon/7">
|
||||
href="{% url 'ietf.cookies.views.expires_soon' days=7 %}">
|
||||
7 days
|
||||
</a>
|
||||
<a class="btn btn-outline-primary
|
||||
{% if expires_soon == '14' %}
|
||||
active
|
||||
{% endif %}"
|
||||
href="/accounts/settings/expires_soon/14">
|
||||
href="{% url 'ietf.cookies.views.expires_soon' days=14 %}">
|
||||
14 days
|
||||
</a>
|
||||
<a class="btn btn-outline-primary
|
||||
{% if expires_soon == '21' %}
|
||||
active
|
||||
{% endif %}"
|
||||
href="/accounts/settings/expires_soon/21">
|
||||
href="{% url 'ietf.cookies.views.expires_soon' days=21 %}">
|
||||
21 days
|
||||
</a>
|
||||
<a class="btn btn-outline-primary
|
||||
{% if expires_soon == '30' %}
|
||||
active
|
||||
{% endif %}"
|
||||
href="/accounts/settings/expires_soon/30">
|
||||
href="{% url 'ietf.cookies.views.expires_soon' days=30 %}">
|
||||
30 days
|
||||
</a>
|
||||
<a class="btn btn-outline-primary
|
||||
{% if expires_soon == '60' %}
|
||||
active
|
||||
{% endif %}"
|
||||
href="/accounts/settings/expires_soon/60">
|
||||
href="{% url 'ietf.cookies.views.expires_soon' days=60 %}">
|
||||
60 days
|
||||
</a>
|
||||
<a class="btn btn-outline-primary
|
||||
{% if expires_soon == '90' %}
|
||||
active
|
||||
{% endif %}"
|
||||
href="/accounts/settings/expires_soon/90">
|
||||
href="{% url 'ietf.cookies.views.expires_soon' days=90 %}">
|
||||
90 days
|
||||
</a>
|
||||
</p>
|
||||
|
@ -117,14 +117,14 @@
|
|||
{% if full_draft == 'off' %}
|
||||
active
|
||||
{% endif %}"
|
||||
href="/accounts/settings/full_draft/off">
|
||||
href="{% url 'ietf.cookies.views.full_draft' enabled='off' %}">
|
||||
Off
|
||||
</a>
|
||||
<a class="btn btn-outline-primary
|
||||
{% if full_draft == 'on' %}
|
||||
active
|
||||
{% endif %}"
|
||||
href="/accounts/settings/full_draft/on">
|
||||
href="{% url 'ietf.cookies.views.full_draft' enabled='on' %}">
|
||||
On
|
||||
</a>
|
||||
</p>
|
||||
|
@ -137,15 +137,15 @@
|
|||
{% if left_menu == 'off' %}
|
||||
active
|
||||
{% endif %}"
|
||||
href="/accounts/settings/left_menu/off">
|
||||
href="{% url 'ietf.cookies.views.left_menu' enabled='off' %}">
|
||||
Off
|
||||
</a>
|
||||
<a class="btn btn-outline-primary
|
||||
{% if left_menu == 'on' %}
|
||||
active
|
||||
{% endif %}"
|
||||
href="/accounts/settings/left_menu/on">
|
||||
href="{% url 'ietf.cookies.views.left_menu' enabled='on' %}">
|
||||
On
|
||||
</a>
|
||||
</p>
|
||||
{% endblock %}
|
||||
{% endblock %}
|
|
@ -30,9 +30,9 @@ To allow evaluation of your proposal, please include the following items:
|
|||
|
||||
## Links to the mailing list, draft charter if any, relevant Internet-Drafts, etc.
|
||||
- Mailing List: https://www.ietf.org/mailman/listinfo/example
|
||||
- Draft charter: https://datatracker.ietf.org/doc/charter-ietf-EXAMPLE/
|
||||
- Draft charter: {{ settings.IDTRACKER_BASE_URL }}{% url 'ietf.doc.views_doc.document_main' name='charter-ietf-EXAMPLE' %}
|
||||
- Relevant drafts:
|
||||
- Use Cases:
|
||||
- https://datatracker.ietf.org/html/draft-blah-uses
|
||||
- {{ settings.IDTRACKER_BASE_URL }}{% url 'ietf.doc.views_doc.document_main' name='draft-blah-uses' %}
|
||||
- Solutions
|
||||
- https://datatracker.ietf.org/html/draft-blah-soln
|
||||
- {{ settings.IDTRACKER_BASE_URL }}{% url 'ietf.doc.views_doc.document_main' name='draft-blah-soln' %}
|
||||
|
|
|
@ -10,28 +10,28 @@
|
|||
% actual RFC at https://rfc-editor.org/rfc/rfc{{ doc.rfc_number }}.txt
|
||||
{% endif %}
|
||||
@misc{% templatetag openbrace %}rfc{{ doc.rfc_number }},
|
||||
series = {Request for Comments},
|
||||
number = {{ doc.rfc_number }},
|
||||
howpublished = {% templatetag openbrace %}RFC {{ doc.rfc_number }}{% if doc.doc.intended_std_level %} ({{ doc.intended_std_level }}){% endif %}{% templatetag closebrace %},
|
||||
publisher = {RFC Editor},
|
||||
doi = {% templatetag openbrace %}{{ doi }}{% templatetag closebrace %},
|
||||
url = {% templatetag openbrace %}{{ doc.rfc_number|rfceditor_info_url }}{% templatetag closebrace %},{% else %}
|
||||
series = {Request for Comments},
|
||||
number = {{ doc.rfc_number }},
|
||||
howpublished = {% templatetag openbrace %}RFC {{ doc.rfc_number }}{% if doc.doc.intended_std_level %} ({{ doc.intended_std_level }}){% endif %}{% templatetag closebrace %},
|
||||
publisher = {RFC Editor},
|
||||
doi = {% templatetag openbrace %}{{ doi }}{% templatetag closebrace %},
|
||||
url = {% templatetag openbrace %}{{ doc.rfc_number|rfceditor_info_url }}{% templatetag closebrace %},{% else %}
|
||||
{% if published %}%% You should probably cite rfc{{ latest_revision.doc.rfc_number }} instead of this I-D.{% else %}{% if replaced_by %}%% You should probably cite {{replaced_by|join:" or "}} instead of this I-D.{% else %}
|
||||
{% if doc.rev != latest_revision.rev %}%% You should probably cite {{latest_revision.doc.name}}-{{latest_revision.rev}} instead of this revision.{%endif%}{% endif %}{% endif %}
|
||||
@techreport{% templatetag openbrace %}{{doc.name|slice:"6:"}}-{{doc.rev}},
|
||||
number = {% templatetag openbrace %}{{doc.name}}-{{doc.rev}}{% templatetag closebrace %},
|
||||
type = {% templatetag openbrace %}Internet-Draft{% templatetag closebrace %},
|
||||
institution = {% templatetag openbrace %}Internet Engineering Task Force{% templatetag closebrace %},
|
||||
publisher = {% templatetag openbrace %}Internet Engineering Task Force{% templatetag closebrace %},
|
||||
note = {% templatetag openbrace %}Work in Progress{% templatetag closebrace %},
|
||||
url = {% templatetag openbrace %}https://datatracker.ietf.org/doc/html/{{doc.name}}-{{doc.rev}}{% templatetag closebrace %},{% endif %}
|
||||
author = {% templatetag openbrace %}{% for author in doc.documentauthor_set.all %}{{ author.person.name|texescape}}{% if not forloop.last %} and {% endif %}{% endfor %}{% templatetag closebrace %},
|
||||
title = {% templatetag openbrace %}{% templatetag openbrace %}{{doc.title|texescape}}{% templatetag closebrace %}{% templatetag closebrace %},
|
||||
pagetotal = {{ doc.pages }},
|
||||
year = {{ doc.pub_date.year }},
|
||||
month = {{ doc.pub_date|date:"b" }},{% if not doc.rfc_number or doc.pub_date.day == 1 and doc.pub_date.month == 4 %}
|
||||
day = {{ doc.pub_date.day }},{% endif %}
|
||||
abstract = {% templatetag openbrace %}{{ doc.abstract|clean_whitespace|texescape }}{% templatetag closebrace %},
|
||||
number = {% templatetag openbrace %}{{doc.name}}-{{doc.rev}}{% templatetag closebrace %},
|
||||
type = {% templatetag openbrace %}Internet-Draft{% templatetag closebrace %},
|
||||
institution = {% templatetag openbrace %}Internet Engineering Task Force{% templatetag closebrace %},
|
||||
publisher = {% templatetag openbrace %}Internet Engineering Task Force{% templatetag closebrace %},
|
||||
note = {% templatetag openbrace %}Work in Progress{% templatetag closebrace %},
|
||||
url = {% templatetag openbrace %}{{ settings.IDTRACKER_BASE_URL }}{% url 'ietf.doc.views_doc.document_main' name=doc.name rev=doc.rev %}{% templatetag closebrace %},{% endif %}
|
||||
author = {% templatetag openbrace %}{% for author in doc.documentauthor_set.all %}{{ author.person.name|texescape}}{% if not forloop.last %} and {% endif %}{% endfor %}{% templatetag closebrace %},
|
||||
title = {% templatetag openbrace %}{% templatetag openbrace %}{{doc.title|texescape}}{% templatetag closebrace %}{% templatetag closebrace %},
|
||||
pagetotal = {{ doc.pages }},
|
||||
year = {{ doc.pub_date.year }},
|
||||
month = {{ doc.pub_date|date:"b" }},{% if not doc.rfc_number or doc.pub_date.day == 1 and doc.pub_date.month == 4 %}
|
||||
day = {{ doc.pub_date.day }},{% endif %}
|
||||
abstract = {% templatetag openbrace %}{{ doc.abstract|clean_whitespace|texescape }}{% templatetag closebrace %},
|
||||
{% templatetag closebrace %}
|
||||
|
||||
{% endautoescape %}
|
||||
|
|
|
@ -74,7 +74,7 @@
|
|||
{% if draft_name %}
|
||||
<div>
|
||||
Was
|
||||
<a href="/doc/{{ draft_name }}/">{{ draft_name }}</a>
|
||||
<a href="{% url 'ietf.doc.views_doc.document_main' name=draft_name %}">{{ draft_name }}</a>
|
||||
{% if submission %}({{ submission|safe }}){% endif %}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
@ -1188,4 +1188,4 @@
|
|||
</script>
|
||||
<script src="{% static 'ietf/js/document_timeline.js' %}">
|
||||
</script>
|
||||
{% endblock %}
|
||||
{% endblock %}
|
|
@ -38,7 +38,7 @@
|
|||
{{ a }}{% if not forloop.last %}, {% else %}.{% endif %}
|
||||
{% endfor %}
|
||||
<br>
|
||||
<a href="/doc/{{ d.name }}/">{{ d.name }}-{{ d.rev }}</a>
|
||||
<a href="{% url 'ietf.doc.views_doc.document_main' name=d.name rev=d.rev %}">{{ d.name }}-{{ d.rev }}</a>
|
||||
<br>
|
||||
{{ d.rev_time|date:"Y-m-d" }}
|
||||
</div>
|
||||
|
|
|
@ -24,7 +24,7 @@
|
|||
<p>
|
||||
You can see the default Working Group I-D State Diagram
|
||||
in
|
||||
<a href="/doc/html/rfc6174#section-4.1">Section 4.1 of RFC6174</a>.
|
||||
<a href="{% url 'ietf.doc.views_doc.document_html' name='rfc6174' %}">Section 4.1 of RFC6174</a>.
|
||||
</p>
|
||||
{% endif %}
|
||||
<h2 class="mt-5">States</h2>
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
{% for stream in streams %}
|
||||
<tr>
|
||||
<td>
|
||||
<a href="/stream/{{ stream.acronym }}/">{{ stream.acronym }}</a>
|
||||
<a href="{% url 'ietf.group.views.stream_documents' acronym=stream.acronym %}">{{ stream.acronym }}</a>
|
||||
</td>
|
||||
<td>{{ stream.name }}</td>
|
||||
<td>
|
||||
|
@ -37,4 +37,4 @@
|
|||
{% endblock %}
|
||||
{% block js %}
|
||||
<script src="{% static "ietf/js/list.js" %}"></script>
|
||||
{% endblock %}
|
||||
{% endblock %}
|
|
@ -69,7 +69,7 @@
|
|||
</ul>
|
||||
<p>
|
||||
Most of this information can be edited on the individual's
|
||||
<a href="/accounts/profile/">Account Info</a>
|
||||
<a href="{% url 'ietf.ietfauth.views.profile' %}">Account Info</a>
|
||||
page by the individual
|
||||
after logging in to the account. If the datatracker holds such
|
||||
information about a person, and they don't have an account, a request to
|
||||
|
|
|
@ -49,7 +49,7 @@
|
|||
{% for ipr in conflictdoc.ipr %}
|
||||
{% if ipr.disclosure.state_id == "posted" %}
|
||||
<div>
|
||||
<a href="/ipr/{{ ipr.disclosure.id }}/">{{ ipr.disclosure.title }}</a>
|
||||
<a href="{% url 'ietf.ipr.views.show' id=ipr.disclosure.id %}">{{ ipr.disclosure.title }}</a>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
|
|
|
@ -87,7 +87,7 @@
|
|||
{% for ipr in doc.ipr %}
|
||||
{% if ipr.disclosure.state_id == "posted" %}
|
||||
<div>
|
||||
<a href="/ipr/{{ ipr.disclosure.id }}/">{{ ipr.disclosure.title }}</a>
|
||||
<a href="{% url 'ietf.ipr.views.show' id=ipr.disclosure.id %}">{{ ipr.disclosure.title }}</a>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
|
|
|
@ -24,13 +24,13 @@
|
|||
<small class="text-muted">{{ t.pages }} page{{ t.pages|pluralize }}</small>
|
||||
</h2>
|
||||
<div class="buttonlist">
|
||||
<a class="btn btn-primary" role="button" href="/iesg/agenda/">
|
||||
<a class="btn btn-primary" role="button" href="{% url 'ietf.iesg.views.agenda' %}">
|
||||
<i class="bi bi-list"></i>
|
||||
Full IESG agenda
|
||||
</a>
|
||||
<a class="btn btn-primary"
|
||||
role="button"
|
||||
href="/iesg/agenda/telechat-{{ t.date|date:'Y' }}-{{ t.date|date:'m' }}-{{ t.date|date:'d' }}-docs.tgz">
|
||||
href="{% url 'ietf.iesg.views.telechat_docs_tarfile' date=t.date %}">
|
||||
<i class="bi bi-download"></i>
|
||||
Download documents
|
||||
</a>
|
||||
|
|
|
@ -5,9 +5,9 @@ Contents:
|
|||
1. Roll Call and Dial-In Instructions
|
||||
{{ roll_call_url }}
|
||||
2. Agenda
|
||||
https://datatracker.ietf.org/iesg/agenda/
|
||||
{{ settings.IDTRACKER_BASE_URL }}{% url 'ietf.iesg.views.agenda' %}
|
||||
3. Management Item Details
|
||||
https://datatracker.ietf.org/iesg/agenda/#6
|
||||
{{ settings.IDTRACKER_BASE_URL }}{% url 'ietf.iesg.views.agenda' %}#6
|
||||
4. Previous minutes
|
||||
{{ minutes_url }}
|
||||
|
||||
|
|
|
@ -32,7 +32,7 @@
|
|||
regarding an IETF document or contribution when the person letting the
|
||||
IETF know about the patent has no relationship with the patent owners.
|
||||
Click
|
||||
<a href="/ipr/new-specific">here</a>
|
||||
<a href="{% url 'ietf.ipr.views.new' type='specific' %}">here</a>
|
||||
if you want to disclose information about patents or patent
|
||||
applications where you do have a relationship to the patent owners or
|
||||
patent applicants.
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{% autoescape off %}A new IPR disclosure has been submitted.
|
||||
Please check it and post it.
|
||||
https://datatracker.ietf.org/ipr/admin/pending/
|
||||
{{ settings.IDTRACKER_BASE_URL }}{% url "ietf.ipr.views.admin" state='pending' %}
|
||||
|
||||
{% include "ipr/details.txt" %}
|
||||
{% endautoescape %}
|
||||
|
|
|
@ -6,7 +6,7 @@ Cc: {{ cc_email }}
|
|||
Dear {{ to_name }}:
|
||||
|
||||
{% filter wordwrap:78 %}
|
||||
An IPR disclosure that pertains to your {{ doc_info }} was submitted to the IETF Secretariat on {{ ipr.get_latest_event_submitted.time|date:"Y-m-d" }} and has been posted on the "IETF Page of Intellectual Property Rights Disclosures" (https://datatracker.ietf.org/ipr/{{ ipr.pk }}/). The title of the IPR disclosure is "{{ ipr.title }}"
|
||||
An IPR disclosure that pertains to your {{ doc_info }} was submitted to the IETF Secretariat on {{ ipr.get_latest_event_submitted.time|date:"Y-m-d" }} and has been posted on the "IETF Page of Intellectual Property Rights Disclosures" ({{ settings.IDTRACKER_BASE_URL }}{% url "ietf.ipr.views.history" id=ipr.pk %}). The title of the IPR disclosure is "{{ ipr.title }}"
|
||||
{% endfilter %}
|
||||
|
||||
Thank you
|
||||
|
|
|
@ -7,7 +7,7 @@ Dear {{ to_name }}:
|
|||
|
||||
A generic IPR disclosure was submitted to the IETF Secretariat on {{ ipr.get_latest_event_submitted.time|date:"Y-m-d" }}
|
||||
and has been posted on the "IETF Page of Intellectual Property Rights Disclosures"
|
||||
(https://datatracker.ietf.org/ipr/). The title of the IPR disclosure is
|
||||
({{ settings.IDTRACKER_BASE_URL }}{% url "ietf.ipr.views.showlist" %}). The title of the IPR disclosure is
|
||||
{{ ipr.title }}.
|
||||
|
||||
Thank you
|
||||
|
|
|
@ -7,7 +7,7 @@ Dear {{ to_name }}:
|
|||
|
||||
Your IPR disclosure entitled {{ ipr.title }}
|
||||
has been posted on the "IETF Page of Intellectual Property Rights Disclosures"
|
||||
(https://datatracker.ietf.org/ipr/).{% if ipr.updates %}
|
||||
({{ settings.IDTRACKER_BASE_URL }}{% url "ietf.ipr.views.showlist" %}).{% if ipr.updates %}
|
||||
Your IPR disclosure updates:
|
||||
|
||||
{% for rel in ipr.updates %}
|
||||
|
|
|
@ -25,7 +25,7 @@
|
|||
<a href="/liaison/help/from_ietf/">Liaison statements from the IETF: guidelines for completing the "Cc:" field</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="/wg/">Active IETF working groups</a>
|
||||
<a href="{% url 'ietf.group.views.active_groups' group_type='wg' %}">Active IETF working groups</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="https://www.ietf.org/liaison/managers.html">IETF liaison managers</a>
|
||||
|
|
|
@ -85,7 +85,7 @@
|
|||
<a href="https://www.ietf.org/liaison/managers.html">The IETF Liaison Manager for the SDO</a>
|
||||
<sup><small>(4)</small></sup>
|
||||
<br>
|
||||
<a href="/wg/">The IETF Area Director(s)</a>
|
||||
<a href="{% url 'ietf.group.views.active_groups' group_type='wg' %}">The IETF Area Director(s)</a>
|
||||
(if not the submitter)
|
||||
<br>
|
||||
The IETF Chair <chair@ietf.org>
|
||||
|
@ -100,12 +100,12 @@
|
|||
<a href="https://www.ietf.org/liaison/managers.html">The IETF Liaison Manager for the SDO</a>
|
||||
<sup><small>(4)</small></sup>
|
||||
<br>
|
||||
<a href="/wg/">The IETF Working Group Chair(s)</a>
|
||||
<a href="{% url 'ietf.group.views.active_groups' group_type='wg' %}">The IETF Working Group Chair(s)</a>
|
||||
(if not the submitter)
|
||||
<br>
|
||||
<a href="/wg/">The IETF Area Director(s)</a>
|
||||
<a href="{% url 'ietf.group.views.active_groups' group_type='wg' %}">The IETF Area Director(s)</a>
|
||||
<br>
|
||||
<a href="/wg/">The IETF Working Group Discussion List</a>
|
||||
<a href="{% url 'ietf.group.views.active_groups' group_type='wg' %}">The IETF Working Group Discussion List</a>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
|
|
|
@ -62,7 +62,7 @@
|
|||
<tr>
|
||||
<td>An IETF Area</td>
|
||||
<td>
|
||||
<a href="/wg/">The IETF Area Director(s)</a>
|
||||
<a href="{% url 'ietf.group.views.active_groups' group_type='wg' %}">The IETF Area Director(s)</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="https://www.ietf.org/liaison/managers.html">The IETF Liaison Manager for the SDO</a>
|
||||
|
@ -75,14 +75,14 @@
|
|||
<tr>
|
||||
<td>An IETF Working Group</td>
|
||||
<td>
|
||||
<a href="/wg/">The Working Group Chair(s)</a>
|
||||
<a href="{% url 'ietf.group.views.active_groups' group_type='wg' %}">The Working Group Chair(s)</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="https://www.ietf.org/liaison/managers.html">The IETF Liaison Manager for the SDO</a>
|
||||
<br>
|
||||
<a href="/wg/">The IETF Area Director(s)</a>
|
||||
<a href="{% url 'ietf.group.views.active_groups' group_type='wg' %}">The IETF Area Director(s)</a>
|
||||
<br>
|
||||
<a href="/wg/">The IETF Working Group Discussion List</a>
|
||||
<a href="{% url 'ietf.group.views.active_groups' group_type='wg' %}">The IETF Working Group Discussion List</a>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
|
|
@ -9,7 +9,7 @@ be provided within 10 days of the event.
|
|||
At your earliest convenience, please upload meeting minutes, as
|
||||
well as any presentations from your sessions by using the Meeting
|
||||
Materials Manager found here:
|
||||
https://datatracker.ietf.org/secr/proceedings/.
|
||||
{{ settings.IDTRACKER_BASE_URL }}{% url 'ietf.secr.proceedings.views.main'/secr/proceedings/.
|
||||
Alternatively, you are welcome to send them to proceedings@ietf.org
|
||||
for manual posting.
|
||||
|
||||
|
|
|
@ -18,14 +18,14 @@
|
|||
</a>
|
||||
{# materials tar file #}
|
||||
<a class="btn btn-outline-primary"
|
||||
href="/meeting/{{ meeting.number }}/agenda/{{ acronym }}-drafts.tgz"
|
||||
href="{% url 'ietf.meeting.views.session_draft_tarfile' num=meeting.number acronym=acronym %}"
|
||||
aria-label="Download meeting materials as .tar archive"
|
||||
title="Download meeting materials as .tar archive">
|
||||
<i class="bi bi-file-zip"></i>
|
||||
</a>
|
||||
{# materials PDF file #}
|
||||
<a class="btn btn-outline-primary"
|
||||
href="/meeting/{{ meeting.number }}/agenda/{{ acronym }}-drafts.pdf"
|
||||
href="{% url 'ietf.meeting.views.session_draft_pdf' num=meeting.number acronym=acronym %}"
|
||||
aria-label="Download meeting materials as PDF file"
|
||||
title="Download meeting materials as PDF file">
|
||||
<i class="bi bi-file-pdf"></i>
|
||||
|
@ -157,4 +157,4 @@
|
|||
{% endwith %}
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endwith %}
|
||||
{% endwith %}
|
|
@ -32,7 +32,7 @@
|
|||
</a>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
<a class="btn btn-primary" href="/meeting/{{ meeting.number }}/requests">Meeting requests/conflicts</a>
|
||||
<a class="btn btn-primary" href="{% url 'ietf.meeting.views.meeting_requests' num=meeting.number %}">Meeting requests/conflicts</a>
|
||||
</p>
|
||||
{% include 'meeting/proceedings/materials_table.html' with meeting=meeting proceedings_materials=proceedings_materials user=user only %}
|
||||
{% with "True" as show_agenda %}
|
||||
|
|
|
@ -29,7 +29,7 @@
|
|||
{# materials tar file #}
|
||||
<a class="btn btn-outline-primary"
|
||||
role="button"
|
||||
href="/meeting/{{ meeting.number }}/agenda/{{ acronym }}-drafts.tgz"
|
||||
href="{% url 'ietf.meeting.views.session_draft_tarfile' num=meeting.number acronym=acronym %}"
|
||||
aria-label="Download meeting materials as .tar archive"
|
||||
title="Download meeting materials as .tar archive">
|
||||
<i class="bi bi-file-zip"></i>
|
||||
|
@ -37,7 +37,7 @@
|
|||
{# materials PDF file #}
|
||||
<a class="btn btn-outline-primary"
|
||||
role="button"
|
||||
href="/meeting/{{ meeting.number }}/agenda/{{ acronym }}-drafts.pdf"
|
||||
href="{% url 'ietf.meeting.views.session_draft_pdf' num=meeting.number acronym=acronym %}"
|
||||
aria-label="Download meeting materials as PDF file"
|
||||
title="Download meeting materials as PDF file">
|
||||
<i class="bi bi-file-pdf"></i>
|
||||
|
@ -219,14 +219,14 @@
|
|||
{# materials tar file #}
|
||||
<li>
|
||||
<a class="dropdown-item"
|
||||
href="/meeting/{{ meeting.number }}/agenda/{{ acronym }}-drafts.tgz">
|
||||
href="{% url 'ietf.meeting.views.session_draft_tarfile' num=meeting.number acronym=acronym %}">
|
||||
<i class="bi bi-file-zip"></i> Meeting materials archive
|
||||
</a>
|
||||
</li>
|
||||
{# materials PDF file #}
|
||||
<li>
|
||||
<a class="dropdown-item"
|
||||
href="/meeting/{{ meeting.number }}/agenda/{{ acronym }}-drafts.pdf">
|
||||
href="{% url 'ietf.meeting.views.session_draft_pdf' num=meeting.number acronym=acronym %}">
|
||||
<i class="bi bi-file-pdf"></i> Meeting materials PDF
|
||||
</a>
|
||||
</li>
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
{% if not user.is_authenticated %}
|
||||
<a
|
||||
class="btn btn-primary"
|
||||
href="/accounts/login/"
|
||||
href="{% url 'ietf.ietfauth.views.login' %}"
|
||||
rel="nofollow">Sign in</a>
|
||||
{% endif %}
|
||||
{% else %}
|
||||
|
|
|
@ -28,7 +28,7 @@
|
|||
<p class="form-control-plaintext">
|
||||
{{ user.username }}
|
||||
</p>
|
||||
<a class="btn btn-primary" href="/accounts/username/">Edit</a>
|
||||
<a class="btn btn-primary" href="{% url 'ietf.ietfauth.views.change_username' %}">Edit</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-3">
|
||||
|
@ -39,7 +39,7 @@
|
|||
</a>
|
||||
</label>
|
||||
<div class="col-sm-10">
|
||||
<a class="btn btn-primary" href="/accounts/password/">Change password</a>
|
||||
<a class="btn btn-primary" href="{% url 'ietf.ietfauth.views.change_password' %}">Change password</a>
|
||||
</div>
|
||||
</div>
|
||||
{% if person.photo %}
|
||||
|
@ -196,7 +196,7 @@
|
|||
</a>
|
||||
covering IETF's Legitimate Interest due to the IETF's mission of developing standards
|
||||
for the internet. See also the page on
|
||||
<a href="/help/personal-information">
|
||||
<a href="{% url 'personal-information' %}">
|
||||
handling
|
||||
of personal information
|
||||
</a>.
|
||||
|
@ -271,4 +271,4 @@
|
|||
});
|
||||
|
||||
</script>
|
||||
{% endblock %}
|
||||
{% endblock %}
|
|
@ -7,15 +7,15 @@
|
|||
<h1>Account management</h1>
|
||||
<div class="buttonlist">
|
||||
{% if user.username %}
|
||||
<a class="btn btn-primary" href="/accounts/profile/">View/edit profile</a>
|
||||
<a class="btn btn-primary" href="{% url 'ietf.ietfauth.views.profile' %}">View/edit profile</a>
|
||||
{% else %}
|
||||
<a
|
||||
class="btn btn-primary"
|
||||
href="/accounts/login/"
|
||||
href="{% url 'ietf.ietfauth.views.login' %}"
|
||||
rel="nofollow">Sign in</a>
|
||||
{% endif %}
|
||||
<a class="btn btn-info" href="/accounts/create/">New account</a>
|
||||
<a class="btn btn-warning" href="/accounts/reset/">Reset password</a>
|
||||
<a class="btn btn-primary" href="/accounts/settings/">Change browser preferences</a>
|
||||
<a class="btn btn-info" href="{% url 'ietf.ietfauth.views.create_account' %}">New account</a>
|
||||
<a class="btn btn-warning" href="{% url 'ietf.ietfauth.views.password_reset' %}">Reset password</a>
|
||||
<a class="btn btn-primary" href="{% url 'ietf.cookies.views.preferences' %}">Change browser preferences</a>
|
||||
</div>
|
||||
{% endblock %}
|
|
@ -5,7 +5,7 @@
|
|||
{% block content %}
|
||||
{% origin %}
|
||||
<h1>You have been signed out</h1>
|
||||
<a class="btn btn-primary my-3" href="/accounts/login/" rel="nofollow">Sign in</a>
|
||||
<a class="btn btn-primary my-3" href="{% url 'ietf.ietfauth.views.login' %}" rel="nofollow">Sign in</a>
|
||||
{% endblock %}
|
||||
{% block js %}
|
||||
{% if request.META.HTTP_REFERER %}
|
||||
|
|
|
@ -106,4 +106,4 @@
|
|||
of it and its capabilities was made 2002-11-20
|
||||
in Atlanta by Thomas Narten.
|
||||
</p>
|
||||
{% endblock %}
|
||||
{% endblock %}
|
|
@ -7,7 +7,7 @@ A new version (-{{ submission.rev }}) has been submitted for {{ submission.name
|
|||
{% endif %}
|
||||
|
||||
The IETF datatracker page for this Internet-Draft is:
|
||||
https://datatracker.ietf.org/doc/{{ submission.name }}/
|
||||
{{ settings.IDTRACKER_BASE_URL }}{% url 'ietf.doc.views_doc.document_main' name=submission.name %}
|
||||
|
||||
Diff from previous version:
|
||||
{{rfcdiff_base_url}}?url2={{ submission.name }}-{{ submission.rev }}
|
||||
|
|
|
@ -10,9 +10,9 @@ Document date: {{ submission.document_date|date:"Y-m-d" }}
|
|||
Group: {{ group }}
|
||||
Pages: {{ submission.pages }}
|
||||
URL: {{ settings.IETF_ID_ARCHIVE_URL }}{{ submission.name }}-{{ submission.rev }}.txt
|
||||
Status: https://datatracker.ietf.org/doc/{{ submission.name }}/{% if submission.xml_version == "3" %}
|
||||
Status: {{ settings.IDTRACKER_BASE_URL }}{% url 'ietf.doc.views_doc.document_main' name=submission.name %}{% if submission.xml_version == "3" %}
|
||||
Html: {{ settings.IETF_ID_ARCHIVE_URL }}{{ submission.name }}-{{ submission.rev }}.html{% endif %}
|
||||
Htmlized: https://datatracker.ietf.org/doc/html/{{ submission.name }}
|
||||
Htmlized: {{ settings.IDTRACKER_BASE_URL }}{% url 'ietf.doc.views_doc.document_html' name=submission.name %}
|
||||
{% if submission.rev != "00" %}Diff: {{rfcdiff_base_url}}?url2={{ submission.name }}-{{ submission.rev }}{% endif %}
|
||||
|
||||
Abstract:
|
||||
|
|
|
@ -5,20 +5,20 @@ A New Internet-Draft is available from the on-line Internet-Drafts directories.
|
|||
Title : {{ submission.title }}
|
||||
Author{{ submission.authors|pluralize:" ,s" }} : {% for author in submission.authors %}{{ author.name }}{% if not forloop.last %}
|
||||
{% endif %}{% endfor %}
|
||||
Filename : {{ submission.name }}-{{ submission.rev }}.txt
|
||||
Pages : {{ submission.pages }}
|
||||
Date : {{ submission.submission_date|date:"Y-m-d" }}
|
||||
Filename : {{ submission.name }}-{{ submission.rev }}.txt
|
||||
Pages : {{ submission.pages }}
|
||||
Date : {{ submission.submission_date|date:"Y-m-d" }}
|
||||
|
||||
Abstract:
|
||||
{{ submission.abstract }}
|
||||
|
||||
The IETF datatracker status page for this draft is:
|
||||
https://datatracker.ietf.org/doc/{{ submission.name }}/
|
||||
{{ settings.IDTRACKER_BASE_URL }}{% url 'ietf.doc.views_doc.document_main' name=submission.name %}
|
||||
{% if submission.xml_version == "3" %}
|
||||
There is also an HTML version available at:
|
||||
{{ settings.IETF_ID_ARCHIVE_URL }}{{ submission.name }}-{{ submission.rev }}.html{% else %}
|
||||
There is also an htmlized version available at:
|
||||
https://datatracker.ietf.org/doc/html/{{ submission.name }}-{{ submission.rev }}{% endif %}
|
||||
{{ settings.IDTRACKER_BASE_URL }}{% url 'ietf.doc.views_doc.document_html' name=submission.name rev=submission.rev %}{% endif %}
|
||||
{% if submission.rev != "00" %}
|
||||
A diff from the previous version is available at:
|
||||
{{settings.RFCDIFF_BASE_URL}}?url2={{ submission.name }}-{{ submission.rev }}
|
||||
|
|
|
@ -44,7 +44,7 @@
|
|||
Here is an example:
|
||||
</p>
|
||||
<pre class="border p-3">
|
||||
$ curl -S -F "user=user.name@example.com" -F "xml=@~/draft-user-example.xml" https://datatracker.ietf.org/api/submit
|
||||
$ curl -S -F "user=user.name@example.com" -F "xml=@~/draft-user-example.xml" {{ settings.IDTRACKER_BASE_URL }}{% url 'ietf.submit.views.api_submit' %}
|
||||
Upload of draft-user-example OK, confirmation requests sent to:
|
||||
User Name <user.name@example.com></pre>
|
||||
{% endblock %}
|
|
@ -8,7 +8,7 @@
|
|||
<p class="alert alert-info my-3">
|
||||
<b>Tool URL:</b>
|
||||
<a href="{% url "ietf.submit.views.upload_submission" %}">
|
||||
https://datatracker.ietf.org{% url "ietf.submit.views.upload_submission" %}
|
||||
{{ settings.IDTRACKER_BASE_URL }}{% url "ietf.submit.views.upload_submission" %}
|
||||
</a>
|
||||
</p>
|
||||
<p>
|
||||
|
@ -30,7 +30,7 @@
|
|||
</p>
|
||||
<p>
|
||||
An API for automated draft submission is available as an alternative to this webpage at
|
||||
<a href="https://datatracker.ietf.org/api/submit/">https://datatracker.ietf.org/api/submit/</a>.
|
||||
<a href="{{ settings.IDTRACKER_BASE_URL }}{% url 'ietf.submit.views.api_submit' %}">{{ settings.IDTRACKER_BASE_URL }}{% url 'ietf.submit.views.api_submit' %}</a>.
|
||||
</p>
|
||||
<p>
|
||||
The specification for this tool can be found in
|
||||
|
|
|
@ -16,7 +16,7 @@ Emails:
|
|||
{% if changes %}Changes of special note:
|
||||
{{ changes }}{% endif %}
|
||||
|
||||
You can make changes to your profile here: https://datatracker.ietf.org/accounts/profile/
|
||||
You can make changes to your profile here: {{ settings.IDTRACKER_BASE_URL }}{% url 'ietf.ietfauth.views.profile' %}
|
||||
|
||||
Reply to this message if this merge should not have happened, or if it produced an incorrect result that you cannot correct by editing your profile.
|
||||
|
||||
|
|
|
@ -19,7 +19,7 @@ continued maintenance and use of your information by checking the 'Consent'
|
|||
checkbox found at the bottom of the page, and then submit the form.
|
||||
|
||||
For information on how personal information is handled in the datatracker, please see
|
||||
{{ settings.IDTRACKER_BASE_URL }}/help/personal-information.
|
||||
{{ settings.IDTRACKER_BASE_URL }}{% url 'personal-information' %}.
|
||||
|
||||
In case you prefer to not follow any email links, due to phishing
|
||||
considerations, please just go to the datatracker and use the menu
|
||||
|
|
Loading…
Reference in a new issue