fix: use Internet-Draft more consistently across the UI (#5104)

* s/Internet Draft/Internet-Draft/i

* s/draft/Internet-Draft/i or s/draft/I-D/i

* s/ID/I-D/

* Fix tests

* a -> an

* Undo case-change to ASCII

* Address code review comments

* Add migrations

* Add merged migration

* fix: straighten out migrations

* fix: finish straightening out migrations

---------

Co-authored-by: Robert Sparks <rjsparks@nostrum.com>
This commit is contained in:
Lars Eggert 2023-02-11 18:09:28 +02:00 committed by GitHub
parent 45e8f6816e
commit f8b48f4c43
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
90 changed files with 327 additions and 268 deletions

View file

@ -42,7 +42,7 @@ $DTDIR/ietf/manage.py populate_yang_model_dirs -v0
# Re-run yang checks on active documents
$DTDIR/ietf/manage.py run_yang_model_checks -v0
# Expire internet drafts
# Expire Internet-Drafts
# Enable when removed from /a/www/ietf-datatracker/scripts/Cron-runner:
$DTDIR/ietf/bin/expire-ids

View file

@ -114,7 +114,7 @@ def check_id_submission_directories(app_configs, **kwargs):
p = getattr(settings, s)
if not os.path.exists(p):
errors.append(checks.Critical(
"A directory used by the ID submission tool does not\n"
"A directory used by the I-D submission tool does not\n"
"exist at the path given in the settings file. The setting is:\n"
" %s = %s" % (s, p),
hint = ("Please either update the local settings to point at the correct\n"
@ -134,7 +134,7 @@ def check_id_submission_files(app_configs, **kwargs):
p = getattr(settings, s)
if not os.path.exists(p):
errors.append(checks.Critical(
"A file used by the ID submission tool does not exist\n"
"A file used by the I-D submission tool does not exist\n"
"at the path given in the settings file. The setting is:\n"
" %s = %s" % (s, p),
hint = ("Please either update the local settings to point at the correct\n"
@ -179,7 +179,7 @@ def check_id_submission_checkers(app_configs, **kwargs):
except Exception as e:
errors.append(checks.Critical(
"An exception was raised when trying to import the\n"
"draft submission checker class '%s':\n %s" % (checker_path, e),
"Internet-Draft submission checker class '%s':\n %s" % (checker_path, e),
hint = "Please check that the class exists and can be imported.\n",
id = "datatracker.E0008",
))
@ -188,7 +188,7 @@ def check_id_submission_checkers(app_configs, **kwargs):
except Exception as e:
errors.append(checks.Critical(
"An exception was raised when trying to instantiate\n"
"the draft submission checker class '%s':\n %s" % (checker_path, e),
"the Internet-Draft submission checker class '%s':\n %s" % (checker_path, e),
hint = "Please check that the class can be instantiated.\n",
id = "datatracker.E0009",
))
@ -196,7 +196,7 @@ def check_id_submission_checkers(app_configs, **kwargs):
for attr in ('name',):
if not hasattr(checker, attr):
errors.append(checks.Critical(
"The draft submission checker\n '%s'\n"
"The Internet-Draft submission checker\n '%s'\n"
"has no attribute '%s', which is required" % (checker_path, attr),
hint = "Please update the class.\n",
id = "datatracker.E0010",
@ -207,7 +207,7 @@ def check_id_submission_checkers(app_configs, **kwargs):
break
else:
errors.append(checks.Critical(
"The draft submission checker\n '%s'\n"
"The Internet-Draft submission checker\n '%s'\n"
" has no recognised checker method; "
"should be one or more of %s." % (checker_path, checker_methods),
hint = "Please update the class.\n",

View file

@ -13,7 +13,7 @@ from ietf.person.models import Person
from ietf.person.fields import SearchablePersonField
class AddDocumentsForm(forms.Form):
documents = SearchableDocumentsField(label="Add documents to track", doc_type="draft")
documents = SearchableDocumentsField(label="Add Internet-Drafts to track", doc_type="draft")
class SearchRuleTypeForm(forms.Form):
rule_type = forms.ChoiceField(choices=[('', '--------------')] + SearchRule.RULE_TYPES)

View file

@ -19,11 +19,11 @@ class CommunityList(models.Model):
def long_name(self):
if self.user:
return 'Personal ID list of %s' % self.user.username
return 'Personal I-D list of %s' % self.user.username
elif self.group:
return 'ID list for %s' % self.group.name
return 'I-D list for %s' % self.group.name
else:
return 'ID list'
return 'I-D list'
def __str__(self):
return self.long_name()

View file

@ -1,6 +1,6 @@
# Copyright The IETF Trust 2010-2020, All Rights Reserved
# -*- coding: utf-8 -*-
# expiry of Internet Drafts
# expiry of Internet-Drafts
from django.conf import settings
@ -179,7 +179,7 @@ def expire_draft(doc):
doc.save_with_history(events)
def clean_up_draft_files():
"""Move unidentified and old files out of the Internet Draft directory."""
"""Move unidentified and old files out of the Internet-Draft directory."""
cut_off = date_today(DEADLINE_TZINFO)
pattern = os.path.join(settings.INTERNET_DRAFT_PATH, "draft-*.*")

View file

@ -140,7 +140,7 @@ class AddDownrefForm(forms.Form):
required=True)
drafts = SearchableDocAliasesField(
label="Internet-Drafts that makes the reference",
help_text="The drafts that approve the downref in their Last Call",
help_text="The Internet-Drafts that approve the downref in their Last Call",
required=True)
def clean_rfc(self):
@ -163,7 +163,7 @@ class AddDownrefForm(forms.Form):
if not state or state.slug not in IESG_APPROVED_STATE_LIST:
v_err_names.append(da.name)
if v_err_names:
raise forms.ValidationError("Draft is not yet approved: " + ", ".join(v_err_names))
raise forms.ValidationError("Internet-Draft is not yet approved: " + ", ".join(v_err_names))
return drafts
def clean(self):

View file

@ -1,4 +1,4 @@
# helpers for handling last calls on Internet Drafts
# helpers for handling last calls on Internet-Drafts
from django.db.models import Q
@ -73,4 +73,4 @@ def expire_last_call(doc):
if doc.type_id == 'draft':
lc_text = doc.latest_event(LastCallDocEvent, type="sent_last_call").desc
if "document makes the following downward references" in lc_text:
email_last_call_expired_with_downref(doc, lc_text)
email_last_call_expired_with_downref(doc, lc_text)

View file

@ -98,7 +98,7 @@ def email_stream_changed(request, doc, old_stream, new_stream, text=""):
text = strip_tags(text)
send_mail(request, to, None,
"ID Tracker Stream Change Notice: %s" % doc.file_tag(),
"I-D Tracker Stream Change Notice: %s" % doc.file_tag(),
"doc/mail/stream_changed_email.txt",
dict(text=text,
url=settings.IDTRACKER_BASE_URL + doc.get_absolute_url()),
@ -288,7 +288,7 @@ def generate_approval_mail_approved(request, doc):
else:
contacts = "The IESG contact person is %s." % responsible_directors[0]
doc_type = "RFC" if doc.get_state_slug() == "rfc" else "Internet Draft"
doc_type = "RFC" if doc.get_state_slug() == "rfc" else "Internet-Draft"
addrs = gather_address_lists('ballot_approved_ietf_stream',doc=doc).as_strings()
return render_to_string("doc/mail/approval_mail.txt",
@ -308,7 +308,7 @@ def generate_approval_mail_rfc_editor(request, doc):
# This is essentially dead code - it is only exercised if the IESG ballots on some other stream's document,
# which does not happen now that we have conflict reviews.
disapproved = doc.get_state_slug("draft-iesg") in DO_NOT_PUBLISH_IESG_STATES
doc_type = "RFC" if doc.get_state_slug() == "rfc" else "Internet Draft"
doc_type = "RFC" if doc.get_state_slug() == "rfc" else "Internet-Draft"
addrs = gather_address_lists('ballot_approved_conflrev', doc=doc).as_strings()
return render_to_string("doc/mail/approval_mail_rfc_editor.txt",

View file

@ -22,7 +22,7 @@ DEFAULT_DAYS = 7
class Command(BaseCommand):
help = ('Generate draft bibxml files for xml2rfc references, placing them in the '
'directory configured in settings.BIBXML_BASE_PATH: %s. '
'By default, generate files as needed for new draft revisions from the '
'By default, generate files as needed for new Internet-Draft revisions from the '
'last %s days.' % (settings.BIBXML_BASE_PATH, DEFAULT_DAYS))
def add_arguments(self, parser):

View file

@ -9,7 +9,7 @@ def std_level_prompt(doc):
to the object's intended_std_level (with the word RFC appended in some
cases), or a prompt requesting that the intended_std_level be set."""
prompt = "*** YOU MUST SELECT AN INTENDED STATUS FOR THIS DRAFT AND REGENERATE THIS TEXT ***"
prompt = "*** YOU MUST SELECT AN INTENDED STATUS FOR THIS INTERNET-DRAFT AND REGENERATE THIS TEXT ***"
if doc.intended_std_level:
prompt = doc.intended_std_level.name

View file

@ -2522,7 +2522,7 @@ class ChartTests(ResourceTestCaseMixin, TestCase):
self.assertValidJSONResponse(r)
d = r.json()
self.assertEqual(d['chart']['type'], settings.CHART_TYPE_COLUMN_OPTIONS['chart']['type'])
self.assertEqual("New draft revisions over time for %s" % person.name, d['title']['text'])
self.assertEqual("New Internet-Draft revisions over time for %s" % person.name, d['title']['text'])
data_url = urlreverse('ietf.doc.views_stats.chart_data_person_drafts', kwargs=dict(id=person.id))

View file

@ -355,13 +355,13 @@ class RebuildReferenceRelationsTests(TestCase):
result = rebuild_reference_relations(self.doc, {})
self.assertCountEqual(result.keys(), ['errors'])
self.assertEqual(len(result['errors']), 1)
self.assertIn('No draft text available', result['errors'][0],
'Error should be reported if no draft file is given')
self.assertIn('No Internet-Draft text available', result['errors'][0],
'Error should be reported if no Internet-Draft file is given')
result = rebuild_reference_relations(self.doc, {'md': 'cant-do-this.md'})
self.assertCountEqual(result.keys(), ['errors'])
self.assertEqual(len(result['errors']), 1)
self.assertIn('No draft text available', result['errors'][0],
self.assertIn('No Internet-Draft text available', result['errors'][0],
'Error should be reported if no XML or plaintext file is given')
@patch.object(XMLDraft, 'get_refs')

View file

@ -792,7 +792,7 @@ def rebuild_reference_relations(doc, filenames):
except IOError as e:
return { 'errors': ["%s :%s" % (e.strerror, filename)] }
else:
return {'errors': ['No draft text available for rebuilding reference relations. Need XML or plaintext.']}
return {'errors': ['No Internet-Draft text available for rebuilding reference relations. Need XML or plaintext.']}
doc.relateddocument_set.filter(relationship__slug__in=['refnorm','refinfo','refold','refunk']).delete()

View file

@ -994,7 +994,7 @@ class MakeLastCallForm(forms.Form):
@role_required('Secretariat')
def make_last_call(request, name):
"""Make last call for Internet Draft, sending out announcement."""
"""Make last call for Internet-Draft, sending out announcement."""
doc = get_object_or_404(Document, docalias__name=name)
if not (doc.get_state("draft-iesg") or doc.get_state("statchg")):
raise Http404

View file

@ -2,7 +2,7 @@
# -*- coding: utf-8 -*-
# changing state and metadata on Internet Drafts
# changing state and metadata on Internet-Drafts
import datetime
import os
@ -84,7 +84,7 @@ class ChangeStateForm(forms.Form):
@role_required('Area Director','Secretariat')
def change_state(request, name):
"""Change IESG state of Internet Draft, notifying parties as necessary
"""Change IESG state of Internet-Draft, notifying parties as necessary
and logging the change as a comment."""
doc = get_object_or_404(Document, docalias__name=name)
@ -229,7 +229,7 @@ class ChangeIanaStateForm(forms.Form):
@role_required('Secretariat', 'IANA')
def change_iana_state(request, name, state_type):
"""Change IANA review state of Internet Draft. Normally, this is done via
"""Change IANA review state of Internet-Draft. Normally, this is done via
automatic sync, but this form allows one to set it manually."""
doc = get_object_or_404(Document, docalias__name=name)
@ -344,9 +344,9 @@ class ReplacesForm(forms.Form):
def clean_replaces(self):
for d in self.cleaned_data['replaces']:
if d.document == self.doc:
raise forms.ValidationError("A draft can't replace itself")
raise forms.ValidationError("An Internet-Draft can't replace itself")
if d.document.type_id == "draft" and d.document.get_state_slug() == "rfc":
raise forms.ValidationError("A draft can't replace an RFC")
raise forms.ValidationError("An Internet-Draft can't replace an RFC")
return self.cleaned_data['replaces']
def replaces(request, name):
@ -631,7 +631,7 @@ def to_iesg(request,name):
@role_required('Area Director','Secretariat')
def edit_info(request, name):
"""Edit various Internet Draft attributes, notifying parties as
"""Edit various Internet-Draft attributes, notifying parties as
necessary and logging changes as document events."""
doc = get_object_or_404(Document, docalias__name=name)
if doc.get_state_slug() == "expired":
@ -790,7 +790,7 @@ def edit_info(request, name):
@role_required('Area Director','Secretariat')
def request_resurrect(request, name):
"""Request resurrect of expired Internet Draft."""
"""Request resurrect of expired Internet-Draft."""
doc = get_object_or_404(Document, docalias__name=name)
if doc.get_state_slug() != "expired":
raise Http404
@ -813,7 +813,7 @@ def request_resurrect(request, name):
@role_required('Secretariat')
def resurrect(request, name):
"""Resurrect expired Internet Draft."""
"""Resurrect expired Internet-Draft."""
doc = get_object_or_404(Document, docalias__name=name)
if doc.get_state_slug() != "expired":
raise Http404
@ -858,7 +858,7 @@ def restore_draft_file(request, draft):
shutil.move(file, settings.INTERNET_DRAFT_PATH)
log.log(" Moved file %s to %s" % (file, settings.INTERNET_DRAFT_PATH))
except shutil.Error as ex:
messages.warning(request, 'There was an error restoring the draft file: {} ({})'.format(file, ex))
messages.warning(request, 'There was an error restoring the Internet-Draft file: {} ({})'.format(file, ex))
log.log(" Exception %s when attempting to move %s" % (ex, file))
@ -1152,7 +1152,7 @@ class AdForm(forms.Form):
state = self.doc.get_state('draft-iesg')
if not ad:
if state.slug not in ['idexists','dead']:
raise forms.ValidationError("Drafts in state %s must have an assigned AD." % state)
raise forms.ValidationError("Internet-Drafts in state %s must have an assigned AD." % state)
return ad
@role_required("Area Director", "Secretariat")

View file

@ -66,9 +66,9 @@ def get_doctypes(queryargs, pluralize=False):
or queryargs.get('activedrafts') == 'on'
or queryargs.get('olddrafts') == 'on'):
if pluralize:
doctypes.append('Drafts')
doctypes.append('Internet-Drafts')
else:
doctypes.append('Draft')
doctypes.append('Internet-Draft')
alltypes = DocTypeName.objects.exclude(slug__in='draft').order_by('name');
for doctype in alltypes:
if 'include-' + doctype.slug in queryargs:
@ -166,8 +166,8 @@ def chart_conf_person_drafts(request, id):
conf = {}
else:
conf = copy.deepcopy(settings.CHART_TYPE_COLUMN_OPTIONS)
conf['title']['text'] = "New draft revisions over time for %s" % person.name
conf['series'][0]['name'] = "Submitted drafts"
conf['title']['text'] = "New Internet-Draft revisions over time for %s" % person.name
conf['series'][0]['name'] = "Submitted Internet-Drafts"
return JsonResponse(conf)
@cache_page(60*15)

View file

@ -29,7 +29,7 @@ class MilestoneForm(forms.Form):
desc = forms.CharField(max_length=500, label="Milestone", required=True)
due = DatepickerDateField(date_format="MM yyyy", picker_settings={"min-view-mode": "months", "autoclose": "1", "view-mode": "years" }, required=True)
order = forms.IntegerField(required=True, widget=forms.HiddenInput)
docs = SearchableDocumentsField(label="Drafts", required=False, help_text="Any drafts that the milestone concerns.")
docs = SearchableDocumentsField(label="Internet-Drafts", required=False, help_text="Any Internet-Drafts that the milestone concerns.")
resolved_checkbox = forms.BooleanField(required=False, label="Resolved")
resolved = forms.CharField(label="Resolved as", max_length=50, required=False)

View file

@ -62,7 +62,7 @@ def all_id_txt():
state += "::" + "::".join(tags)
add_line(d.name + "-" + d.rev,
formatted_rev_date(d.name),
"In IESG processing - ID Tracker state <" + state + ">",
"In IESG processing - I-D Tracker state <" + state + ">",
"",
)

View file

@ -413,7 +413,7 @@ class ThirdPartyIprDisclosureForm(IprDisclosureFormBase):
class SearchForm(forms.Form):
state = forms.MultipleChoiceField(choices=[], widget=forms.CheckboxSelectMultiple,required=False)
draft = forms.CharField(label="Draft name", max_length=128, required=False)
draft = forms.CharField(label="Internet-Draft name", max_length=128, required=False)
rfc = forms.IntegerField(label="RFC number", required=False)
holder = forms.CharField(label="Name of patent owner/applicant", max_length=128,required=False)
patent = forms.CharField(label="Text in patent information", max_length=128,required=False)
@ -428,4 +428,4 @@ class SearchForm(forms.Form):
class StateForm(forms.Form):
state = forms.ModelChoiceField(queryset=IprDisclosureStateName.objects,label="New State",empty_label=None)
comment = forms.CharField(required=False, widget=forms.Textarea, help_text="You may add a comment to be included in the disclosure history.", strip=False)
private = forms.BooleanField(label="Private comment", required=False, help_text="If this box is checked the comment will not appear in the disclosure's public history view.")
private = forms.BooleanField(label="Private comment", required=False, help_text="If this box is checked the comment will not appear in the disclosure's public history view.")

View file

@ -8,7 +8,7 @@ from ietf.ipr.utils import generate_draft_recursive_txt
class Command(BaseCommand):
help = ("Generate machine-readable list of IPR disclosures by draft name (recursive)")
help = ("Generate machine-readable list of IPR disclosures by Internet-Draft name (recursive)")
def handle(self, *args, **options):
try:

View file

@ -79,7 +79,7 @@ def generate_draft_recursive_txt():
docipr[name] = []
docipr[name].append(o.disclosure_id)
lines = [ "# Machine-readable list of IPR disclosures by draft name" ]
lines = [ "# Machine-readable list of IPR disclosures by Internet-Draft name" ]
for name, iprs in docipr.items():
lines.append(name + "\t" + "\t".join(str(ipr_id) for ipr_id in sorted(iprs)))

View file

@ -6025,7 +6025,7 @@
},
{
"fields": {
"desc": "The internet drafts ticketing system",
"desc": "The Internet-Drafts ticketing system",
"template": "<internet-drafts@ietf.org>"
},
"model": "mailtrigger.recipient",
@ -11545,7 +11545,7 @@
{
"fields": {
"default_offset_days": -19,
"desc": "Internet Draft submission cut-off for -00 drafts by UTC 23:59",
"desc": "Internet-Draft submission cut-off for -00 drafts by UTC 23:59",
"name": "00 ID Cutoff",
"order": 0,
"used": false
@ -11556,7 +11556,7 @@
{
"fields": {
"default_offset_days": -12,
"desc": "Internet Draft submission cut-off for revised (-01 and above) drafts by UTC 23:59",
"desc": "Internet-Draft submission cut-off for revised (-01 and above) drafts by UTC 23:59",
"name": "01 ID Cutoff",
"order": 0,
"used": false
@ -11699,7 +11699,7 @@
{
"fields": {
"default_offset_days": -12,
"desc": "Internet Draft submission cut-off (for all drafts, including -00) by UTC 23:59",
"desc": "Internet-Draft submission cut-off (for all drafts, including -00) by UTC 23:59",
"name": "ID Cutoff",
"order": 0,
"used": true

View file

@ -0,0 +1,33 @@
# Generated by Django 2.2.28 on 2023-02-10 19:58
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('person', '0029_use_timezone_now_for_person_models'),
]
operations = [
migrations.AlterField(
model_name='email',
name='origin',
field=models.CharField(help_text="The origin of the address: the user's email address, or 'author: DRAFTNAME' if an Internet-Draft, or 'role: GROUP/ROLE' if a role.", max_length=150),
),
migrations.AlterField(
model_name='historicalemail',
name='origin',
field=models.CharField(help_text="The origin of the address: the user's email address, or 'author: DRAFTNAME' if an Internet-Draft, or 'role: GROUP/ROLE' if a role.", max_length=150),
),
migrations.AlterField(
model_name='historicalperson',
name='name_from_draft',
field=models.CharField(editable=False, help_text='Name as found in an Internet-Draft submission.', max_length=255, null=True, verbose_name='Full Name (from submission)'),
),
migrations.AlterField(
model_name='person',
name='name_from_draft',
field=models.CharField(editable=False, help_text='Name as found in an Internet-Draft submission.', max_length=255, null=True, verbose_name='Full Name (from submission)'),
),
]

View file

@ -57,7 +57,7 @@ class Person(models.Model):
biography = models.TextField(blank=True, help_text="Short biography for use on leadership pages. Use plain text or reStructuredText markup.")
photo = models.ImageField(storage=NoLocationMigrationFileSystemStorage(), upload_to=settings.PHOTOS_DIRNAME, blank=True, default=None)
photo_thumb = models.ImageField(storage=NoLocationMigrationFileSystemStorage(), upload_to=settings.PHOTOS_DIRNAME, blank=True, default=None)
name_from_draft = models.CharField("Full Name (from submission)", null=True, max_length=255, editable=False, help_text="Name as found in a draft submission.")
name_from_draft = models.CharField("Full Name (from submission)", null=True, max_length=255, editable=False, help_text="Name as found in an Internet-Draft submission.")
def __str__(self):
return self.plain_name()
@ -281,7 +281,7 @@ class Email(models.Model):
person = ForeignKey(Person, null=True)
time = models.DateTimeField(auto_now_add=True)
primary = models.BooleanField(default=False)
origin = models.CharField(max_length=150, blank=False, help_text="The origin of the address: the user's email address, or 'author: DRAFTNAME' if a draft, or 'role: GROUP/ROLE' if a role.") # User.username or Document.name
origin = models.CharField(max_length=150, blank=False, help_text="The origin of the address: the user's email address, or 'author: DRAFTNAME' if an Internet-Draft, or 'role: GROUP/ROLE' if a role.") # User.username or Document.name
active = models.BooleanField(default=True) # Old email addresses are *not* purged, as history
# information points to persons through these

View file

@ -0,0 +1,24 @@
# Generated by Django 2.2.28 on 2023-02-10 19:58
from django.db import migrations, models
import ietf.utils.validators
class Migration(migrations.Migration):
dependencies = [
('review', '0030_use_date_today_helper'),
]
operations = [
migrations.AlterField(
model_name='historicalreviewersettings',
name='filter_re',
field=models.CharField(blank=True, help_text='Internet-Draft names matching this regular expression should not be assigned', max_length=255, validators=[ietf.utils.validators.RegexStringValidator()], verbose_name='Filter regexp'),
),
migrations.AlterField(
model_name='reviewersettings',
name='filter_re',
field=models.CharField(blank=True, help_text='Internet-Draft names matching this regular expression should not be assigned', max_length=255, validators=[ietf.utils.validators.RegexStringValidator()], verbose_name='Filter regexp'),
),
]

View file

@ -34,7 +34,7 @@ class ReviewerSettings(models.Model):
min_interval = models.IntegerField(verbose_name="Can review at most", choices=INTERVALS, blank=True, null=True)
filter_re = models.CharField(max_length=255, verbose_name="Filter regexp", blank=True,
validators=[validate_regular_expression_string, ],
help_text="Draft names matching this regular expression should not be assigned")
help_text="Internet-Draft names matching this regular expression should not be assigned")
skip_next = models.IntegerField(default=0, verbose_name="Skip next assignments")
remind_days_before_deadline = models.IntegerField(null=True, blank=True, help_text="To get an email reminder in case you forget to do an assigned review, enter the number of days before review deadline you want to receive it. Clear the field if you don't want this reminder.")
remind_days_open_reviews = models.PositiveIntegerField(null=True, blank=True, verbose_name="Periodic reminder of open reviews every X days", help_text="To get a periodic email reminder of all your open reviews, enter the number of days between these reminders. Clear the field if you don't want these reminders.")

View file

@ -1009,7 +1009,7 @@ HTPASSWD_FILE = "/www/htpasswd"
# Generation of pdf files
GHOSTSCRIPT_COMMAND = "/usr/bin/gs"
# Generation of bibxml files (currently only for internet drafts)
# Generation of bibxml files (currently only for Internet-Drafts)
BIBXML_BASE_PATH = '/a/ietfdata/derived/bibxml'
# Timezone files for iCalendar

View file

@ -182,7 +182,7 @@ def document_stats(request, stats_type=None):
possible_document_types = add_url_to_choices([
("", "All"),
("rfc", "RFCs"),
("draft", "Drafts"),
("draft", "Internet-Drafts"),
], lambda slug: build_document_stats_url(get_overrides={ "type": slug }))
document_type = get_choice(request, "type", possible_document_types) or ""

View file

@ -103,7 +103,7 @@ class SubmissionBaseUploadForm(forms.Form):
elif now <= cutoff_00:
self.cutoff_warning = (
'The last submission time for new Internet-Drafts before the meeting is %s.<br>'
'After that, you will not be able to submit drafts until after %s (IETF-meeting local time)' % (cutoff_00_str, reopen_str, ))
'After that, you will not be able to submit Internet-Drafts until after %s (IETF-meeting local time)' % (cutoff_00_str, reopen_str, ))
else:
if now.date() >= (cutoff_00.date() - meeting.idsubmit_cutoff_warning_days) and now.date() < cutoff_00.date():
self.cutoff_warning = ( 'The last submission time for new documents (i.e., version -00 Internet-Drafts) before %s is %s.<br><br>' % (meeting, cutoff_00_str) +
@ -207,7 +207,7 @@ class SubmissionBaseUploadForm(forms.Form):
self.add_error('xml', msgs)
return
except Exception as e:
self.add_error('xml', f'Error parsing XML draft: {e}')
self.add_error('xml', f'Error parsing XML Internet-Draft: {e}')
return
self.filename = xml_draft.filename
@ -236,19 +236,19 @@ class SubmissionBaseUploadForm(forms.Form):
raise forms.ValidationError('')
if not self.filename:
raise forms.ValidationError("Could not extract a valid draft name from the upload. "
"To fix this in a text upload, please make sure that the full draft name including "
raise forms.ValidationError("Could not extract a valid Internet-Draft name from the upload. "
"To fix this in a text upload, please make sure that the full Internet-Draft name including "
"revision number appears centered on its own line below the document title on the "
"first page. In an xml upload, please make sure that the top-level <rfc/> "
"element has a docName attribute which provides the full draft name including "
"element has a docName attribute which provides the full Internet-Draft name including "
"revision number.")
if not self.revision:
raise forms.ValidationError("Could not extract a valid draft revision from the upload. "
"To fix this in a text upload, please make sure that the full draft name including "
raise forms.ValidationError("Could not extract a valid Internet-Draft revision from the upload. "
"To fix this in a text upload, please make sure that the full Internet-Draft name including "
"revision number appears centered on its own line below the document title on the "
"first page. In an xml upload, please make sure that the top-level <rfc/> "
"element has a docName attribute which provides the full draft name including "
"element has a docName attribute which provides the full Internet-Draft name including "
"revision number.")
if self.cleaned_data.get('txt') or self.cleaned_data.get('xml'):
@ -272,7 +272,7 @@ class SubmissionBaseUploadForm(forms.Form):
raise forms.ValidationError(mark_safe(self.cutoff_warning))
# check thresholds that depend on the draft / group
self.check_submissions_thresholds(
"for the draft %s" % self.filename,
"for the Internet-Draft %s" % self.filename,
dict(name=self.filename, rev=self.revision, submission_date=today),
settings.IDSUBMIT_MAX_DAILY_SAME_DRAFT_NAME, settings.IDSUBMIT_MAX_DAILY_SAME_DRAFT_NAME_SIZE,
)
@ -306,7 +306,7 @@ class SubmissionBaseUploadForm(forms.Form):
else:
name_parts = name.split("-")
if len(name_parts) < 3:
raise forms.ValidationError("The draft name \"%s\" is missing a third part, please rename it" % name)
raise forms.ValidationError("The Internet-Draft name \"%s\" is missing a third part, please rename it" % name)
if name.startswith('draft-ietf-') or name.startswith("draft-irtf-"):
if name_parts[1] == "ietf":
@ -324,7 +324,7 @@ class SubmissionBaseUploadForm(forms.Form):
try:
return Group.objects.get(acronym=name_parts[2], type=group_type)
except Group.DoesNotExist:
raise forms.ValidationError('There is no active group with acronym \'%s\', please rename your draft' % name_parts[2])
raise forms.ValidationError('There is no active group with acronym \'%s\', please rename your Internet-Draft' % name_parts[2])
elif name.startswith("draft-rfc-"):
return Group.objects.get(acronym="iesg")
@ -338,7 +338,7 @@ class SubmissionBaseUploadForm(forms.Form):
if group:
return group
else:
raise forms.ValidationError('Draft names starting with draft-%s- are restricted, please pick a different name' % ntype)
raise forms.ValidationError('Internet-Draft names starting with draft-%s- are restricted, please pick a different name' % ntype)
return None
@ -541,19 +541,19 @@ class DeprecatedSubmissionBaseUploadForm(SubmissionBaseUploadForm):
raise forms.ValidationError('')
if not self.filename:
raise forms.ValidationError("Could not extract a valid draft name from the upload. "
"To fix this in a text upload, please make sure that the full draft name including "
raise forms.ValidationError("Could not extract a valid Internet-Draft name from the upload. "
"To fix this in a text upload, please make sure that the full Internet-Draft name including "
"revision number appears centered on its own line below the document title on the "
"first page. In an xml upload, please make sure that the top-level <rfc/> "
"element has a docName attribute which provides the full draft name including "
"element has a docName attribute which provides the full Internet-Draft name including "
"revision number.")
if not self.revision:
raise forms.ValidationError("Could not extract a valid draft revision from the upload. "
"To fix this in a text upload, please make sure that the full draft name including "
raise forms.ValidationError("Could not extract a valid Internet-Draft revision from the upload. "
"To fix this in a text upload, please make sure that the full Internet-Draft name including "
"revision number appears centered on its own line below the document title on the "
"first page. In an xml upload, please make sure that the top-level <rfc/> "
"element has a docName attribute which provides the full draft name including "
"element has a docName attribute which provides the full Internet-Draft name including "
"revision number.")
if not self.title:
@ -576,7 +576,7 @@ class DeprecatedSubmissionBaseUploadForm(SubmissionBaseUploadForm):
today = date_today()
self.check_submissions_thresholds(
"for the draft %s" % self.filename,
"for the Internet-Draft %s" % self.filename,
dict(name=self.filename, rev=self.revision, submission_date=today),
settings.IDSUBMIT_MAX_DAILY_SAME_DRAFT_NAME, settings.IDSUBMIT_MAX_DAILY_SAME_DRAFT_NAME_SIZE,
)
@ -653,24 +653,24 @@ class SubmissionAutoUploadForm(SubmissionBaseUploadForm):
self.add_error(
'replaces',
forms.ValidationError(
'Unknown draft name(s): ' + ', '.join(unknown_names)
'Unknown Internet-Draft name(s): ' + ', '.join(unknown_names)
),
)
for alias in aliases_replaced:
if alias.document.name == self.filename:
self.add_error(
'replaces',
forms.ValidationError("A draft cannot replace itself"),
forms.ValidationError("An Internet-Draft cannot replace itself"),
)
elif alias.document.type_id != "draft":
self.add_error(
'replaces',
forms.ValidationError("A draft can only replace another draft"),
forms.ValidationError("An Internet-Draft can only replace another Internet-Draft"),
)
elif alias.document.get_state_slug() == "rfc":
self.add_error(
'replaces',
forms.ValidationError("A draft cannot replace an RFC"),
forms.ValidationError("An Internet-Draft cannot replace an RFC"),
)
elif alias.document.get_state_slug('draft-iesg') in ('approved', 'ann', 'rfcqueue'):
self.add_error(
@ -716,7 +716,7 @@ class SubmitterForm(NameEmailForm):
return line
class ReplacesForm(forms.Form):
replaces = SearchableDocAliasesField(required=False, help_text="Any drafts that this document replaces (approval required for replacing a draft you are not the author of)")
replaces = SearchableDocAliasesField(required=False, help_text="Any Internet-Drafts that this document replaces (approval required for replacing an Internet-Draft you are not the author of)")
def __init__(self, *args, **kwargs):
self.name = kwargs.pop("name")
@ -725,11 +725,11 @@ class ReplacesForm(forms.Form):
def clean_replaces(self):
for alias in self.cleaned_data['replaces']:
if alias.document.name == self.name:
raise forms.ValidationError("A draft cannot replace itself.")
raise forms.ValidationError("An Internet-Draft cannot replace itself.")
if alias.document.type_id != "draft":
raise forms.ValidationError("A draft can only replace another draft")
raise forms.ValidationError("An Internet-Draft can only replace another Internet-Draft")
if alias.document.get_state_slug() == "rfc":
raise forms.ValidationError("A draft cannot replace an RFC")
raise forms.ValidationError("An Internet-Draft cannot replace an RFC")
if alias.document.get_state_slug('draft-iesg') in ('approved','ann','rfcqueue'):
raise forms.ValidationError(alias.name+" is approved by the IESG and cannot be replaced")
return self.cleaned_data['replaces']
@ -781,15 +781,15 @@ class PreapprovalForm(forms.Form):
if components[-1] == "00":
raise forms.ValidationError("Name appears to end with a revision number -00 - do not include the revision.")
if len(components) < 4:
raise forms.ValidationError("Name has less than four dash-delimited components - can't form a valid group draft name.")
raise forms.ValidationError("Name has less than four dash-delimited components - can't form a valid group Internet-Draft name.")
acronym = components[2]
if acronym not in [ g.acronym for g in self.groups ]:
raise forms.ValidationError("Group acronym not recognized as one you can approve drafts for.")
raise forms.ValidationError("Group acronym not recognized as one you can approve Internet-Drafts for.")
if Preapproval.objects.filter(name=n):
raise forms.ValidationError("Pre-approval for this name already exists.")
if Submission.objects.filter(state="posted", name=n):
raise forms.ValidationError("A draft with this name has already been submitted and accepted. A pre-approval would not make any difference.")
raise forms.ValidationError("An Internet-Draft with this name has already been submitted and accepted. A pre-approval would not make any difference.")
return n
@ -802,7 +802,7 @@ class SubmissionEmailForm(forms.Form):
if submission_pk is None we are starting a new submission and name
must be unique. Otherwise the name must match the submission.name.
'''
name = forms.CharField(required=True, max_length=255, label="Draft name")
name = forms.CharField(required=True, max_length=255, label="Internet-Draft name")
submission_pk = forms.IntegerField(required=False, widget=forms.HiddenInput())
direction = forms.ChoiceField(choices=(("incoming", "Incoming"), ("outgoing", "Outgoing")),
widget=forms.RadioSelect)

View file

@ -52,7 +52,7 @@ def send_submission_confirmation(request, submission, chair_notice=False):
return all_addrs
def send_full_url(request, submission):
subject = 'Full URL for managing submission of draft %s' % submission.name
subject = 'Full URL for managing submission of Internet-Draft %s' % submission.name
from_email = settings.IDSUBMIT_FROM_EMAIL
(to_email, cc) = gather_address_lists('sub_management_url_requested',submission=submission)
url = settings.IDTRACKER_BASE_URL + urlreverse('ietf.submit.views.submission_status', kwargs=dict(submission_id=submission.pk, access_token=submission.access_token()))
@ -75,7 +75,7 @@ def send_approval_request(request, submission, replaced_doc=None):
If replaced_doc is not None, requests will be sent to the wg chairs or ADs
responsible for that doc's group instead of the submission.
"""
subject = 'New draft waiting for approval: %s' % submission.name
subject = 'New Internet-Draft waiting for approval: %s' % submission.name
from_email = settings.IDSUBMIT_FROM_EMAIL
# Sort out which MailTrigger to use

View file

@ -327,7 +327,7 @@ class SubmitTests(BaseSubmitTestCase):
self.assertEqual(r.status_code, 302)
status_url = r["Location"]
self.assertEqual(len(outbox), mailbox_before + 1)
self.assertTrue("New draft waiting for approval" in outbox[-1]["Subject"])
self.assertTrue("New Internet-Draft waiting for approval" in outbox[-1]["Subject"])
self.assertTrue(name in outbox[-1]["Subject"])
# as chair of WG, we should see approval button
@ -438,7 +438,7 @@ class SubmitTests(BaseSubmitTestCase):
# Approval request notification should be sent to the WG chair
self.assertEqual(len(outbox), mailbox_before + 1)
self.assertTrue("New draft waiting for approval" in outbox[-1]["Subject"])
self.assertTrue("New Internet-Draft waiting for approval" in outbox[-1]["Subject"])
self.assertTrue(name in outbox[-1]["Subject"])
self.assertTrue('mars-chairs@ietf.org' in outbox[-1]['To'])
@ -791,7 +791,7 @@ class SubmitTests(BaseSubmitTestCase):
# Approval request notification should be sent to the AD for the group
self.assertEqual(len(outbox), mailbox_before + 1)
self.assertTrue("New draft waiting for approval" in outbox[-1]["Subject"])
self.assertTrue("New Internet-Draft waiting for approval" in outbox[-1]["Subject"])
self.assertTrue(name in outbox[-1]["Subject"])
self.assertTrue(ad.user.email in outbox[-1]['To'])
@ -1224,7 +1224,7 @@ class SubmitTests(BaseSubmitTestCase):
ad.user.email if notify_ad else '%s-chairs@ietf.org' % replaced_draft.group.acronym,
notice['To']
)
self.assertIn('New draft waiting for approval', notice['Subject'])
self.assertIn('New Internet-Draft waiting for approval', notice['Subject'])
def test_submit_new_individual_replacing_wg(self):
self.submit_new_individual_replacing_wg()
@ -3061,7 +3061,7 @@ class SubmissionUploadFormTests(BaseSubmitTestCase):
files=files_dict,
)
self.assertFalse(form.is_valid())
self.assertIn('A draft cannot replace itself', form.errors['replaces'])
self.assertIn('An Internet-Draft cannot replace itself', form.errors['replaces'])
# can't replace non-draft
review = ReviewFactory()
@ -3071,7 +3071,7 @@ class SubmissionUploadFormTests(BaseSubmitTestCase):
files=files_dict,
)
self.assertFalse(form.is_valid())
self.assertIn('A draft can only replace another draft', form.errors['replaces'])
self.assertIn('An Internet-Draft can only replace another Internet-Draft', form.errors['replaces'])
# can't replace RFC
rfc = WgRfcFactory()
@ -3081,7 +3081,7 @@ class SubmissionUploadFormTests(BaseSubmitTestCase):
files=files_dict,
)
self.assertFalse(form.is_valid())
self.assertIn('A draft cannot replace an RFC', form.errors['replaces'])
self.assertIn('An Internet-Draft cannot replace an RFC', form.errors['replaces'])
# can't replace draft approved by iesg
existing_drafts[0].set_state(State.objects.get(type='draft-iesg', slug='approved'))
@ -3217,7 +3217,7 @@ class AsyncSubmissionTests(BaseSubmitTestCase):
process_uploaded_submission(submission)
submission = Submission.objects.get(pk=submission.pk) # refresh
self.assertEqual(submission.state_id, 'cancel')
self.assertIn('draft filename disagrees', submission.submissionevent_set.last().desc)
self.assertIn('Internet-Draft filename disagrees', submission.submissionevent_set.last().desc)
# rev mismatch
submission = SubmissionFactory(
@ -3249,7 +3249,7 @@ class AsyncSubmissionTests(BaseSubmitTestCase):
process_uploaded_submission(submission)
submission = Submission.objects.get(pk=submission.pk) # refresh
self.assertEqual(submission.state_id, 'cancel')
self.assertIn('Only XML draft submissions', submission.submissionevent_set.last().desc)
self.assertIn('Only XML Internet-Draft submissions', submission.submissionevent_set.last().desc)
# wrong state
submission = SubmissionFactory(
@ -3416,7 +3416,7 @@ class ApiSubmitTests(BaseSubmitTestCase):
def test_api_submit_info(self):
url = urlreverse('ietf.submit.views.api_submit')
r = self.client.get(url)
expected = "A simplified draft submission interface, intended for automation"
expected = "A simplified Internet-Draft submission interface, intended for automation"
self.assertContains(r, expected, status_code=200)
def test_api_submit_bad_method(self):

View file

@ -126,7 +126,7 @@ def validate_submission_name(name):
if re.search(r'-\d\d$', name):
name = name[:-3]
if len(name) > 50:
return "Expected the draft name to be at most 50 ascii characters long; found %d." % len(name)
return "Expected the Internet-Draft name to be at most 50 ascii characters long; found %d." % len(name)
else:
msg = "Expected name 'draft-...' using lowercase ascii letters, digits, and hyphen; found '%s'." % name
if '.' in name:
@ -309,10 +309,10 @@ def post_submission(request, submission, approved_doc_desc, approved_subm_desc):
# update draft attributes
try:
draft = Document.objects.get(name=submission.name)
log.log(f"{submission.name}: retrieved draft: {draft}")
log.log(f"{submission.name}: retrieved Internet-Draft: {draft}")
except Document.DoesNotExist:
draft = Document.objects.create(name=submission.name, type_id="draft")
log.log(f"{submission.name}: created draft: {draft}")
log.log(f"{submission.name}: created Internet-Draft: {draft}")
prev_rev = draft.rev
@ -341,7 +341,7 @@ def post_submission(request, submission, approved_doc_desc, approved_subm_desc):
draft.stream = StreamName.objects.get(slug=stream_slug)
draft.expires = timezone.now() + datetime.timedelta(settings.INTERNET_DRAFT_DAYS_TO_EXPIRE)
log.log(f"{submission.name}: got draft details")
log.log(f"{submission.name}: got Internet-Draft details")
events = []
@ -417,9 +417,9 @@ def post_submission(request, submission, approved_doc_desc, approved_subm_desc):
e = DocEvent(type="changed_document", doc=draft, rev=draft.rev)
if draft.stream_id == 'ietf':
e.desc = "Sub state has been changed to <b>AD Followup</b> from <b>Revised ID Needed</b>"
e.desc = "Sub state has been changed to <b>AD Followup</b> from <b>Revised I-D Needed</b>"
else:
e.desc = "<b>Revised ID Needed</b> tag cleared"
e.desc = "<b>Revised I-D Needed</b> tag cleared"
e.by = system
e.save()
events.append(e)
@ -1134,9 +1134,9 @@ def process_submission_xml(submission):
xml_draft = XMLDraft(xml_path)
if submission.name != xml_draft.filename:
raise SubmissionError('XML draft filename disagrees with submission filename')
raise SubmissionError('XML Internet-Draft filename disagrees with submission filename')
if submission.rev != xml_draft.revision:
raise SubmissionError('XML draft revision disagrees with submission revision')
raise SubmissionError('XML Internet-Draft revision disagrees with submission revision')
authors = xml_draft.get_author_list()
for a in authors:
@ -1176,17 +1176,17 @@ def process_submission_text(submission):
if submission.name != text_draft.filename:
raise SubmissionError(
f'Text draft filename ({text_draft.filename}) disagrees with submission filename ({submission.name})'
f'Text Internet-Draft filename ({text_draft.filename}) disagrees with submission filename ({submission.name})'
)
if submission.rev != text_draft.revision:
raise SubmissionError(
f'Text draft revision ({text_draft.revision}) disagrees with submission revision ({submission.rev})')
f'Text Internet-Draft revision ({text_draft.revision}) disagrees with submission revision ({submission.rev})')
text_title = _normalize_title(text_draft.get_title())
if not text_title:
raise SubmissionError('Could not extract a valid title from the text')
if text_title != submission.title:
raise SubmissionError(
f'Text draft title ({text_title}) disagrees with submission title ({submission.title})')
f'Text Internet-Draft title ({text_title}) disagrees with submission title ({submission.title})')
submission.abstract = text_draft.get_abstract()
submission.document_date = text_draft.get_creation_date()
@ -1213,7 +1213,7 @@ def process_uploaded_submission(submission):
return # do nothing
if submission.file_types != '.xml':
abort_submission('Only XML draft submissions can be processed.')
abort_submission('Only XML Internet-Draft submissions can be processed.')
try:
process_submission_xml(submission)

View file

@ -101,7 +101,7 @@ def upload_submission(request):
except DataError as e:
form = SubmissionManualUploadForm(request=request)
form._errors = {}
form._errors["__all__"] = form.error_class(["There was a failure processing your upload -- please verify that your draft passes idnits. (%s)" % e.message])
form._errors["__all__"] = form.error_class(["There was a failure processing your upload -- please verify that your Internet-Draft passes idnits. (%s)" % e.message])
if debug.debug:
raise
else:
@ -472,7 +472,7 @@ def submission_status(request, submission_id, access_token=None):
approvals_received = submitter_form.cleaned_data['approvals_received']
if submission.rev == '00' and submission.group and not submission.group.is_active:
permission_denied(request, 'Posting a new draft for an inactive group is not permitted.')
permission_denied(request, 'Posting a new Internet-Draft for an inactive group is not permitted.')
if approvals_received:
if not is_secretariat:

View file

@ -4,25 +4,25 @@ from ietf.doc.models import Document, State
def find_discrepancies():
res = []
title = "Drafts that have been sent to the RFC Editor but do not have an RFC Editor state"
title = "Internet-Drafts that have been sent to the RFC Editor but do not have an RFC Editor state"
docs = Document.objects.filter(states__in=list(State.objects.filter(used=True, type="draft-iesg", slug__in=("ann", "rfcqueue")))).exclude(states__in=list(State.objects.filter(used=True, type="draft-rfceditor")))
res.append((title, docs))
title = "Drafts that have the IANA Action state \"In Progress\" but do not have a \"IANA\" RFC-Editor state/tag"
title = "Internet-Drafts that have the IANA Action state \"In Progress\" but do not have a \"IANA\" RFC-Editor state/tag"
docs = Document.objects.filter(states__in=list(State.objects.filter(used=True, type="draft-iana-action", slug__in=("inprog",)))).exclude(tags="iana").exclude(states__in=list(State.objects.filter(used=True, type="draft-rfceditor", slug="iana")))
res.append((title, docs))
title = "Drafts that have the IANA Action state \"Waiting on RFC Editor\" or \"RFC-Ed-Ack\" but are in the RFC Editor state \"IANA\"/tagged with \"IANA\""
title = "Internet-Drafts that have the IANA Action state \"Waiting on RFC Editor\" or \"RFC-Ed-Ack\" but are in the RFC Editor state \"IANA\"/tagged with \"IANA\""
docs = Document.objects.filter(states__in=list(State.objects.filter(used=True, type="draft-iana-action", slug__in=("waitrfc", "rfcedack")))).filter(models.Q(tags="iana") | models.Q(states__in=list(State.objects.filter(used=True, type="draft-rfceditor", slug="iana"))))
res.append((title, docs))
title = "Drafts that have a state other than \"RFC Ed Queue\", \"RFC Published\" or \"Sent to the RFC Editor\" and have an RFC Editor or IANA Action state"
title = "Internet-Drafts that have a state other than \"RFC Ed Queue\", \"RFC Published\" or \"Sent to the RFC Editor\" and have an RFC Editor or IANA Action state"
docs = Document.objects.exclude(states__in=list(State.objects.filter(used=True, type="draft-iesg", slug__in=("rfcqueue", "pub"))) + list(State.objects.filter(used=True, type__in=("draft-stream-iab", "draft-stream-ise", "draft-stream-irtf"), slug="rfc-edit"))).filter(states__in=list(State.objects.filter(used=True, type__in=("draft-iana-action", "draft-rfceditor"))))

View file

@ -567,7 +567,7 @@ def post_approved_draft(url, name):
"Authorization": "Basic %s" % force_str(base64.encodebytes(smart_bytes("%s:%s" % (username, password)))).replace("\n", ""),
}
log("Posting RFC-Editor notification of approved draft '%s' to '%s'" % (name, url))
log("Posting RFC-Editor notification of approved Internet-Draft '%s' to '%s'" % (name, url))
text = error = ""
try:
@ -578,7 +578,7 @@ def post_approved_draft(url, name):
timeout=settings.DEFAULT_REQUESTS_TIMEOUT,
)
log("RFC-Editor notification result for draft '%s': %s:'%s'" % (name, r.status_code, r.text))
log("RFC-Editor notification result for Internet-Draft '%s': %s:'%s'" % (name, r.status_code, r.text))
if r.status_code != 200:
raise RuntimeError("Status code is not 200 OK (it's %s)." % r.status_code)
@ -589,7 +589,7 @@ def post_approved_draft(url, name):
except Exception as e:
# catch everything so we don't leak exceptions, convert them
# into string instead
msg = "Exception on RFC-Editor notification for draft '%s': %s: %s" % (name, type(e), str(e))
msg = "Exception on RFC-Editor notification for Internet-Draft '%s': %s: %s" % (name, type(e), str(e))
log(msg)
if settings.SERVER_MODE == 'test':
debug.say(msg)

View file

@ -9,7 +9,7 @@
<p>
This section describes the autogenerated read-only API towards the database tables. See also
the
<a href="{% url 'ietf.submit.views.api_submit' %}">draft submission API description</a>
<a href="{% url 'ietf.submit.views.api_submit' %}">Internet-Draft submission API description</a>
and the
<a href="#iesg-position-api">IESG ballot position API description</a>
</p>
@ -99,7 +99,7 @@
</li>
<li>
States which match <code>states__type__slug__in=draft</code> describe the basic
Active/Expired/Dead whatever state of the draft.
Active/Expired/Dead whatever state of the Internet-Draft.
</li>
</ul>
<p>

View file

@ -90,13 +90,13 @@
<li>
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
href="{% url "ietf.doc.views_search.recent_drafts" %}">
Recent drafts
Recent I-Ds
</a>
</li>
<li>
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
href="{% url "ietf.submit.views.upload_submission" %}">
Draft submission
I-D submission
</a>
</li>
<li>
@ -134,7 +134,7 @@
<li>
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
href="{% url "ietf.submit.views.approvals" %}">
Approve a draft
Approve an I-D
</a>
</li>
{% for g in user|docman_groups %}
@ -377,7 +377,7 @@
<li>
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
href="{% url 'ietf.stats.views.document_stats' %}">
Drafts/RFCs
I-Ds/RFCs
</a>
</li>
<li>

View file

@ -12,6 +12,6 @@ Change by {{ event.by }} on {{ event.time }}:
Best regards,
The Datatracker draft tracking service
The Datatracker Internet-Draft tracking service
(for the IETF Secretariat)
{% endautoescape %}

View file

@ -25,13 +25,13 @@ To allow evaluation of your proposal, please include the following items:
- Open source projects (if any) implementing this work:
## Agenda
- Items, drafts, speakers, timing
- Items, Internet-Drafts, speakers, timing
- Or a URL
## Links to the mailing list, draft charter if any, relevant Internet-Drafts, etc.
- Mailing List: https://www.ietf.org/mailman/listinfo/example
- Draft charter: {{ settings.IDTRACKER_BASE_URL }}{% url 'ietf.doc.views_doc.document_main' name='charter-ietf-EXAMPLE' %}
- Relevant drafts:
- Relevant Internet-Drafts:
- Use Cases:
- {{ settings.IDTRACKER_BASE_URL }}{% url 'ietf.doc.views_doc.document_main' name='draft-blah-uses' %}
- Solutions

View file

@ -18,7 +18,7 @@ The IESG would also like the {{receiver}} to review the comments in the datatrac
The IESG review is documented at:
{{review_url}}
A URL of the reviewed Internet Draft is:
A URL of the reviewed Internet-Draft is:
{{conflictdoc_url}}
The process for such documents is described {% if conflictdoc.stream_id == 'ise' %}at https://www.rfc-editor.org/indsubs.html {% else %}{% if conflictdoc.stream_id == 'irtf' %}in RFC 5743 {% endif %} {% endif %}

View file

@ -713,14 +713,14 @@
{% if user.is_authenticated %}
<a class="btn btn-primary btn-sm track-untrack-doc {% if not doc.tracked_in_personal_community_list %}hide{% endif %}"
href="{% url "ietf.community.views.untrack_document" username=user.username name=doc.name %}"
title="Remove from your personal ID list">
title="Remove from your personal I-D list">
<i class="bi bi-bookmark-check-fill">
</i>
Untrack
</a>
<a class="btn btn-primary btn-sm track-untrack-doc {% if doc.tracked_in_personal_community_list %}hide{% endif %}"
href="{% url "ietf.community.views.track_document" username=user.username name=doc.name %}"
title="Add to your personal ID list">
title="Add to your personal I-D list">
<i class="bi bi-bookmark">
</i>
Track

View file

@ -11,7 +11,7 @@
<small class="text-muted">{{ doc }}</small>
</h1>
<p class="my-3 alert alert-info">
You can begin managing the group state of this draft.
You can begin managing the group state of this Internet-Draft.
The document will be moved into the stream of the adopting group.
</p>
<form method="post">

View file

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

View file

@ -1,4 +1,4 @@
{% load ietf_filters %}{% autoescape off %}The following draft will expire soon:
{% load ietf_filters %}{% autoescape off %}The following Internet-Draft will expire soon:
Name: {{ doc.name|clean_whitespace }}
Title: {{ doc.title}}

View file

@ -1,5 +1,5 @@
{% autoescape off %}{{ doc.file_tag|safe }} was just expired.
This draft is in the state "{{ state }}" in the Datatracker.
This Internet-Draft is in the state "{{ state }}" in the Datatracker.
Thanks,

View file

@ -1,10 +1,10 @@
{% extends "base.html" %}
{% load origin %}
{% load django_bootstrap5 %}
{% block title %}Release draft {{ doc.name }}-{{ doc.rev }}{% endblock %}
{% block title %}Release I-D {{ doc.name }}-{{ doc.rev }}{% endblock %}
{% block content %}
<h1>
Release draft
Release Internet-Draft
<br>
<small class="text-muted">{{ doc.name }}-{{ doc.rev }}</small>
</h1>
@ -27,4 +27,4 @@
<a class="btn btn-secondary float-end"
href="{% url "ietf.doc.views_doc.document_main" name=doc.name %}">Back</a>
</form>
{% endblock %}
{% endblock %}

View file

@ -10,7 +10,7 @@
error.
</p>
<p>
We have not changed the draft state or sent the announcement
We have not changed the Internet-Draft state or sent the announcement
yet so if this is an intermittent error, you can go back and try
again.
</p>

View file

@ -1,4 +1,4 @@
{% autoescape off %}As you requested, the Internet Draft {{ doc.file_tag }}
{% autoescape off %}As you requested, the Internet-Draft {{ doc.file_tag }}
has been resurrected.
Datatracker URL: {{ url }}

View file

@ -101,7 +101,7 @@
<th scope="row">
</th>
<th scope="row">
Draft last updated
I-D last updated
</th>
<td>
{{ doc.time|date:"Y-m-d" }}

View file

@ -11,14 +11,14 @@
{% if user.is_authenticated %}
<a href="{% url "ietf.community.views.untrack_document" username=request.user.username name=doc.name %}"
class="track-untrack-doc {% if not doc.tracked_in_personal_community_list %}d-none{% endif %}"
aria-label="Remove from your personal ID list"
title="Remove from your personal ID list">
aria-label="Remove from your personal I-D list"
title="Remove from your personal I-D list">
<i class="bi bi-bookmark-check-fill"></i>
</a>
<a href="{% url "ietf.community.views.track_document" username=request.user.username name=doc.name %}"
class="track-untrack-doc {% if doc.tracked_in_personal_community_list %}d-none{% endif %}"
aria-label="Add to your personal ID list"
title="Add to your personal ID list">
aria-label="Add to your personal I-D list"
title="Add to your personal I-D list">
<i class="bi bi-bookmark"></i>
</a>
<br>
@ -151,4 +151,4 @@
{% endif %}
</td>
{% endif %}
</tr>
</tr>

View file

@ -8,7 +8,7 @@
<h1>Request closing of {{ group.acronym }} {{ group.type.name }}</h1>
<p class="alert alert-info my-3">
Please provide instructions regarding the disposition of each
active Internet-Draft (such as to withdraw the draft, move it to
active Internet-Draft (such as to withdraw it, move it to
another group, convert it to an individual submission, and so on),
wording for the closure announcement, and the status of the group
mailing list (will it remain open or should it be closed).

View file

@ -15,7 +15,7 @@
<small class="text-muted">{{ group.acronym }} {{ group.type.name }}</small>
</h1>
<p class="my-3">
Below you can customize the draft states and tags used in the
Below you can customize the Internet-Draft states and tags used in the
<a href="{{ group.about_url }}">{{ group.acronym }} {{ group.type.name }}</a>.
Note that some states are
mandatory for group operation and cannot be deactivated.

View file

@ -3,29 +3,29 @@
# generated: {% now "Y-m-d H:i:s T" %}
#
# Description of fields:
# 0 draft name and latest revision
# 0 Internet-Draft name and latest revision
# 1 always -1 (was internal numeric database id in earlier schema)
# 2 one of "Active", "Expired", "RFC", "Withdrawn by Submitter",
# "Replaced", or "Withdrawn by IETF"
# 3 if #2 is "Active", the IESG state for the document (such as
# "In Last Call", "AD Evaluation::Revised ID Needed", or "I-D Exists");
# "In Last Call", "AD Evaluation::Revised I-D Needed", or "I-D Exists");
# otherwise empty
# 4 if #2 is "RFC", the RFC number (otherwise empty)
# 5 if #2 is "Replaced", the replacing draft name (otherwise empty)
# 5 if #2 is "Replaced", the replacing Internet-Draft name (otherwise empty)
# 6 revision date (YYYY-MM-DD)
# 7 group acronym (or empty if no group/not known)
# 8 area acronym (or empty if not known; not necessarily accurate
# for older drafts)
# for older Internet-Drafts)
# 9 responsible AD name (or empty if not known)
# 10 intended maturity level (or empty if not known)
# 11 if #3 is "In Last Call" (with any substate), the last call
# end date (YYYY-MM-DD); otherwise empty
# 12 if #2 is "Active", list of file types; otherwise empty
# 13 draft title
# 14 draft authors (often quite inaccurate, especially the email
# 13 Internet-Draft title
# 14 Internet-Draft authors (often quite inaccurate, especially the email
# addresses...)
# 15 draft shepherd (Shep Erd <shep@erd.example>)
# 16 draft areadirector (Aread Irector <aread.irector@example.org>)
# 15 Internet-Draft shepherd (Shep Erd <shep@erd.example>)
# 16 Internet-Draft areadirector (Aread Irector <aread.irector@example.org>)
#
# new fields can be added to the end in the future, so remember to
# ignore those in your code

View file

@ -2,10 +2,10 @@
{% if with_abstracts %}
This summary sheet provides a short synopsis of each Internet-Draft
available within the "internet-drafts" directory at the shadow
sites directory. These drafts are listed alphabetically by working
sites directory. These Internet-Drafts are listed alphabetically by working
group acronym and start date.{% else %}
This summary sheet provides an index of each Internet-Draft. These
drafts are listed alphabetically by Working Group acronym and initial
Internet-Drafts are listed alphabetically by Working Group acronym and initial
post date.{% endif %} Generated {{ time }}.
{% for group in groups %}

View file

@ -34,7 +34,7 @@
</li>
<li>
Google for the person's name within the ietf.org site: "Jane Doe site:ietf.org". If
found, and the email address matches an address used in drafts or discussions,
found, and the email address matches an address used in Internet-Drafts or discussions,
things are fine, and it's OK to add the address to the allowlist using this form,
and ask the person to please try the
<a href="{% url 'ietf.ietfauth.views.create_account' %}">account creation form</a>

View file

@ -169,13 +169,13 @@
{% endif %}
{% if teams %}
<p>
Add a draft that you would like to review when it becomes available for review:
Add an Internet-Draft that you would like to review when it becomes available for review:
</p>
<form method="post" class="form-inline">
{% csrf_token %}
{% bootstrap_form review_wish_form %}
<button class="btn btn-primary" type="submit" name="action" value="add_wish">
Add draft
Add I-D
</button>
</form>
{% endif %}

View file

@ -1,12 +1,12 @@
{% extends "base.html" %}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin static django_bootstrap5 %}
{% block title %}Add drafts to {{ session.meeting }} : {{ session.group.acronym }}{% endblock %}
{% block title %}Add I-Ds to {{ session.meeting }} : {{ session.group.acronym }}{% endblock %}
{% block pagehead %}{{ form.media.css }}{% endblock %}
{% block content %}
{% origin %}
<h1>
Add drafts to {{ session.meeting }}
Add Internet-Drafts to {{ session.meeting }}
{% if session_number %}: Session {{ session_number }}{% endif %}
<br>
<small class="text-muted">{{ session.group.acronym }}
@ -20,9 +20,9 @@
</div>
{% endif %}
<div class="alert alert-info my-3">
This form will link additional drafts to this session with a revision of "Current at time of presentation". For more fine grained control of versions, or to remove a draft from a session, adjust the sessions associated with a draft from the draft's main page.
This form will link additional Internet-Drafts to this session with a revision of "Current at time of presentation". For more fine grained control of versions, or to remove an Internet-Draft from a session, adjust the sessions associated with an Internet-Draft from the Internet-Draft's main page.
</div>
<h2 class="mt-5">Drafts already linked to this session</h2>
<h2 class="mt-5">Internet-Drafts already linked to this session</h2>
<table class="table table-sm table-striped tablesorter">
<thead>
<tr>
@ -47,7 +47,7 @@
</tbody>
{% endif %}
</table>
<h2 class="mt-5">Additional drafts to link to this session</h2>
<h2 class="mt-5">Additional Internet-Drafts to link to this session</h2>
<form method="post">
{% csrf_token %}
{% bootstrap_form form %}

View file

@ -14,7 +14,7 @@
This will make the proceedings for IETF {{ meeting.number }} final.
</p>
<p>
All drafts associated with sessions that are marked "current version" will have their version set to whatever the version was at the end of the meeting.
All Internet-Drafts associated with sessions that are marked "current version" will have their version set to whatever the version was at the end of the meeting.
</p>
{# This would be a good place to put any warnings about important things missing from the proceedings #}
<form method="post" class="my-3">

View file

@ -102,7 +102,7 @@
<a href="{{ draft.get_href }}">{{ draft.name }}</a>
<br>
{% empty %}
<span class="badge rounded-pill bg-warning">No drafts</span>
<span class="badge rounded-pill bg-warning">No Internet-Drafts</span>
{% endfor %}
{% endwith %}
</td>
@ -121,4 +121,4 @@
</td>
{% endif %}
{% endif %}
</tr>
</tr>

View file

@ -82,8 +82,8 @@
</a>
<br>
{% empty %}
{% if not meeting.proceedings_final %}<span class="badge rounded-pill bg-warning">No drafts</span>{% endif %}
{% if not meeting.proceedings_final %}<span class="badge rounded-pill bg-warning">No Internet-Drafts</span>{% endif %}
{% endfor %}
</td>
{% endif %}
</tr>
</tr>

View file

@ -67,7 +67,7 @@
{% endif %}
{% if d.name.slug == 'idcutoff' %}
Upload using the
<a href="{% url 'ietf.submit.views.upload_submission' %}">ID Submission Tool</a>.
<a href="{% url 'ietf.submit.views.upload_submission' %}">I-D Submission Tool</a>.
{% endif %}
{% if d.name.slug == 'draftwgagenda' or d.name.slug == 'revwgagenda' or d.name.slug == 'procsub' or d.name.slug == 'revslug' %}
Upload using the

View file

@ -15,9 +15,9 @@ DESCRIPTION:{{ d.name.desc }}{% if first and d.name.slug == 'openreg' or first a
{{ request.scheme }}://{{ request.get_host }}{% url 'ietf.secr.sreq.views.main' %}{% endif %}{% if d.name.slug == 'cutoffbofreq' %}\n
To request a BOF, please see instructions on Requesting a BOF:\n
https://www.ietf.org/how/bofs/bof-procedures/{% endif %}{% if d.name.slug == 'idcutoff' %}\n
Upload using the ID Submission Tool:\n
Upload using the I-D Submission Tool:\n
{{ request.scheme }}://{{ request.get_host }}{% url 'ietf.submit.views.upload_submission' %}{% endif %}{% if d.name.slug == 'draftwgagenda' or d.name.slug == 'revwgagenda' or d.name.slug == 'procsub' or d.name.slug == 'revslug' %}\n
Upload using the Meeting Materials Management Tool:\n
{{ request.scheme }}://{{ request.get_host }}{% url 'ietf.meeting.views.materials' num=meeting.number %}{% endif %}
END:VEVENT
{% endfor %}
{% endfor %}

View file

@ -46,7 +46,7 @@
<th scope="col" data-sort="agenda">Agenda</th>
<th scope="col" data-sort="minutes">Minutes</th>
<th scope="col" data-sort="slides">Slides</th>
<th scope="col" data-sort="drafts">Drafts</th>
<th scope="col" data-sort="drafts">Internet-Drafts</th>
<th scope="col" data-sort="updated">Updated</th>
{% if user|has_role:"Secretariat" or user_groups %}
<th scope="col"></th>
@ -73,7 +73,7 @@
<th scope="col" data-sort="agenda">Agenda</th>
<th scope="col" data-sort="minutes">Minutes</th>
<th scope="col" data-sort="slides">Slides</th>
<th scope="col" data-sort="drafts">Drafts</th>
<th scope="col" data-sort="drafts">Internet-Drafts</th>
<th scope="col" data-sort="updated">Updated</th>
{% if user|has_role:"Secretariat" or user_groups %}
<th scope="col"></th>
@ -101,7 +101,7 @@
<th scope="col" data-sort="minutes">Minutes</th>
<th scope="col" data-sort="slides">Slides</th>
<th scope="col" data-sort="drafts">
Drafts
Internet-Drafts
</th>
<th scope="col" data-sort="updated">
Updated
@ -143,7 +143,7 @@
Slides
</th>
<th scope="col" data-sort="drafts">
Drafts
Internet-Drafts
</th>
<th scope="col" data-sort="updated">
Updated
@ -183,7 +183,7 @@
Slides
</th>
<th scope="col" data-sort="drafts">
Drafts
Internet-Drafts
</th>
<th scope="col" data-sort="updated">
Updated
@ -222,7 +222,7 @@
Slides
</th>
<th scope="col" data-sort="drafts">
Drafts
Internet-Drafts
</th>
<th scope="col" data-sort="updated">
Updated

View file

@ -33,7 +33,7 @@
<th scope="col" data-sort="artifacts">Artifacts</th>
<th scope="col" data-sort="recordings">Recordings</th>
<th scope="col" data-sort="slides">Slides</th>
<th scope="col" data-sort="drafts">Drafts</th>
<th scope="col" data-sort="drafts">Internet-Drafts</th>
</tr>
</thead>
<tbody>
@ -56,7 +56,7 @@
<th scope="col" data-sort="artifacts">Artifacts</th>
<th scope="col" data-sort="recordings">Recordings</th>
<th scope="col" data-sort="slides">Slides</th>
<th scope="col" data-sort="drafts">Drafts</th>
<th scope="col" data-sort="drafts">Internet-Drafts</th>
</tr>
</thead>
<tbody>
@ -105,7 +105,7 @@
<th scope="col" data-sort="artifacts">Artifacts</th>
<th scope="col" data-sort="recordings">Recordings</th>
<th scope="col" data-sort="slides">Slides</th>
<th scope="col" data-sort="drafts">Drafts</th>
<th scope="col" data-sort="drafts">Internet-Drafts</th>
</tr>
</thead>
<tbody>
@ -136,7 +136,7 @@
Slides
</th>
<th scope="col" data-sort="drafts">
Drafts
Internet-Drafts
</th>
</tr>
</thead>
@ -168,7 +168,7 @@
Slides
</th>
<th scope="col" data-sort="drafts">
Drafts
Internet-Drafts
</th>
</tr>
</thead>

View file

@ -181,7 +181,7 @@
{% endif %}
{% if can_manage_materials %}<div class="form-text">Drag-and-drop to reorder slides</div>{% endif %}
<h3 class="mt-4">Drafts</h3>
<h3 class="mt-4">Internet-Drafts</h3>
<table class="table table-sm table-striped">
{% if session.filtered_drafts %}
<tbody>
@ -210,7 +210,7 @@
{% if can_manage_materials %}
<a class="btn btn-primary"
href="{% url 'ietf.meeting.views.add_session_drafts' session_id=session.pk num=session.meeting.number %}">
Link additional drafts to session
Link additional I-Ds to session
</a>
{% endif %}
{% if timezone_now < timeslot.end_time %}{# show meeting tools until the session ends #}

View file

@ -1,7 +1,7 @@
{% load ietf_filters %}{% autoescape off %}The following draft will expire soon:
{% load ietf_filters %}{% autoescape off %}The following Internet-Draft will expire soon:
Filename: {{draft.filename}}
Title: {{draft.title|clean_whitespace}}
State: {{draft.idstate}}
Expires: {{expiration}} (in {{expiration|timeuntil}})
{% endautoescape %}
{% endautoescape %}

View file

@ -126,7 +126,7 @@
{{ person.first_name }} has no RFCs as of {{ today|date:"Y-m-d" }}.
{% endif %}
<h2 class="mt-5" id="drafts-{{ forloop.counter }}">
Active Drafts <small class="text-muted">({{ person.active_drafts|length }})</small>
Active Internet-Drafts <small class="text-muted">({{ person.active_drafts|length }})</small>
</h2>
{% if person.active_drafts.exists %}
<ul>
@ -137,10 +137,10 @@
{% endfor %}
</ul>
{% else %}
{{ person.first_name }} has no active drafts as of {{ today|date:"Y-m-d" }}.
{{ person.first_name }} has no active Internet-Drafts as of {{ today|date:"Y-m-d" }}.
{% endif %}
<h2 class="mt-5">
Expired Drafts <small class="text-muted">({{ person.expired_drafts|length }})</small>
Expired Internet-Drafts <small class="text-muted">({{ person.expired_drafts|length }})</small>
</h2>
{% if person.expired_drafts.exists %}
<ul>
@ -154,13 +154,13 @@
{% endif %}
{% endfor %}
</ul>
(Excluding replaced drafts.)
(Excluding replaced Internet-Drafts.)
{% else %}
{{ person.first_name }} has no expired drafts as of {{ today|date:"Y-m-d" }}.
{{ person.first_name }} has no expired Internet-Drafts as of {{ today|date:"Y-m-d" }}.
{% endif %}
{% if person.has_drafts %}
<h2 class="mt-5">
Draft Activity
Internet-Draft Activity
</h2>
<div id="chart-{{ forloop.counter }}">
</div>

View file

@ -104,7 +104,7 @@
The first version of the idtracker was commissioned by the IESG under <i>Harald
Alvestrand</i> in 2001, and the IESG started using it at the beginning of 2002. It was
written by <i>Michael Lee</i> in Perl, with direct SQL statements. It provided a
major improvement in visibility of the progress of drafts by the IESG.
major improvement in visibility of the progress of Internet-Drafts by the IESG.
The first
<a href="https://www.ietf.org/proceedings/55/slides/plenary-6/plenary-6.ppt">
public presentation

View file

@ -7,7 +7,7 @@
{% endblock %}
{% block content %}
{% origin %}
<h1>Draft/RFC statistics</h1>
<h1>Internet-Draft and RFC statistics</h1>
<div class="row my-3">
<label class="fw-bold col-sm-2 col-form-label">Documents:</label>
<div class="btn-group col-sm-10">
@ -71,7 +71,7 @@
</div>
<div class="alert alert-info my-3">
<b>Please Note:</b> The author information in the datatracker about RFCs
with numbers lower than about 1300 and drafts from before 2001 is
with numbers lower than about 1300 and Internet-Drafts from before 2001 is
unreliable and in many cases absent. For this reason, statistics on these
pages does not show correct author stats for corpus selections that involve such
documents.

View file

@ -63,7 +63,7 @@
</table>
<p>
The statistics are based entirely on the author affiliation
provided with each draft. Since this may vary across documents, an
provided with each Internet-Draft. Since this may vary across documents, an
author may be counted with more than one affiliation, making the
total sum more than 100%.
</p>
@ -110,4 +110,4 @@
<p>
<a href="{{ show_aliases_url }}" class="btn btn-primary">Show generated aliases</a>
</p>
{% endif %}
{% endif %}

View file

@ -63,7 +63,7 @@
</table>
<p>
The statistics are based entirely on the author addresses provided
with each draft. Since this varies across documents, a traveling
with each Internet-Draft. Since this varies across documents, a traveling
author may be counted in more than country, making the total sum
more than 100%.
</p>
</p>

View file

@ -63,7 +63,7 @@
</table>
<p>
The statistics are based entirely on the author addresses provided
with each draft. Since this varies across documents, a traveling
with each Internet-Draft. Since this varies across documents, a traveling
author may be counted in more than country, making the total sum
more than 100%.
</p>
@ -133,4 +133,4 @@
<p>
<a href="{{ show_aliases_url }}" class="btn btn-primary">Show generated aliases</a>
</p>
{% endif %}
{% endif %}

View file

@ -11,13 +11,13 @@
</p>
<ul>
<li>
<a href="{% url "ietf.stats.views.document_stats" %}">Drafts/RFCs (authors, countries, formats, ...)</a>
<a href="{% url "ietf.stats.views.document_stats" %}">Internet-Drafts and RFCs (authors, countries, formats, ...)</a>
</li>
<li>
<a href="{% url "ietf.stats.views.meeting_stats" %}">Meeting attendance</a>
</li>
<li>
<a rel="nofollow" href="{% url "ietf.stats.views.review_stats" %}">Reviews of drafts in review teams</a>
<a rel="nofollow" href="{% url "ietf.stats.views.review_stats" %}">Reviews of Internet-Drafts in review teams</a>
(requires login)
</li>
</ul>

View file

@ -9,14 +9,14 @@
{% origin %}
<h2 class="mt-3">Add pre-approval</h2>
<p>
You can register a pre-approved draft name. Then the chair
approval step of group <code>-00</code> submissions is suspended for that draft name
You can register a pre-approved Internet-Draft name. Then the chair
approval step of group <code>-00</code> submissions is suspended for that Internet-Draft name
so a future submission is posted to the data tracker immediately.
</p>
<p>
When the revision <code>-00</code> draft is submitted, the pre-approval will not
When the revision <code>-00</code> Internet-Draft is submitted, the pre-approval will not
be shown anymore as it has fulfilled its purpose (only revision <code>-00</code> submissions are
subject to approval). If the draft never shows up, you can instead
subject to approval). If the Internet-Draft never shows up, you can instead
later cancel the pre-approval to get rid of it.
</p>
<h2 class="mt-3">Instructions</h2>
@ -32,7 +32,7 @@
<p>
As chair
{% if groups|length > 1 %}of {{ groups|length|apnumber }} groups{% endif %}
you can pre-approve draft names on the form:
you can pre-approve Internet-Draft names on the form:
</p>
<p class="buttonlist">
{% for g in groups %}

View file

@ -1,6 +1,6 @@
{% autoescape off %}
A New Internet-Draft is available from the on-line Internet-Drafts directories.
{% if submission.group %}This draft is a work item of the {{ submission.group.name }}{% if submission.group.type.name %} {{ submission.group.type.name }}{% endif %} of the {% if submission.group.type_id == "rg" %}IRTF{% else %}IETF{% endif %}.{% endif %}
{% if submission.group %}This Internet-Draft is a work item of the {{ submission.group.name }}{% if submission.group.type.name %} {{ submission.group.type.name }}{% endif %} of the {% if submission.group.type_id == "rg" %}IRTF{% else %}IETF{% endif %}.{% endif %}
Title : {{ submission.title }}
Author{{ submission.authors|pluralize:" ,s" }} : {% for author in submission.authors %}{{ author.name }}{% if not forloop.last %}
@ -12,7 +12,7 @@ A New Internet-Draft is available from the on-line Internet-Drafts directories.
Abstract:
{{ submission.abstract }}
The IETF datatracker status page for this draft is:
The IETF datatracker status page for this Internet-Draft is:
{{ 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:

View file

@ -1,12 +1,12 @@
{% extends "base.html" %}
{# Copyright The IETF Trust 2015-2022, All Rights Reserved #}
{% load origin ietf_filters %}
{% block title %}Draft submission API instructions{% endblock %}
{% block title %}I-D submission API instructions{% endblock %}
{% block content %}
{% origin %}
<h1 class="mb-3">Draft submission API instructions</h1>
<h1 class="mb-3">Internet-Draft submission API instructions</h1>
<p>
A simplified draft submission interface, intended for automation,
A simplified Internet-Draft submission interface, intended for automation,
is available at <code>{% url 'ietf.submit.views.api_submission' %}</code>.
</p>
<p>
@ -37,11 +37,11 @@
<code>xml</code>, which is the submitted file (required)
</li>
<li>
<code>replaces</code>, a comma-separated list of draft names replaced by this submission (optional)
<code>replaces</code>, a comma-separated list of Internet-Draft names replaced by this submission (optional)
</li>
</ul>
<p>
When a draft is submitted, basic checks are performed immediately and an HTTP response
When an Internet-Draft is submitted, basic checks are performed immediately and an HTTP response
is sent including an appropriate http result code and JSON data describing the outcome.
</p>
<p>
@ -62,7 +62,7 @@
"error": "Description of the error"
}</pre>
<p>
If the basic checks passed and a successful response is sent, the draft is queued for further
If the basic checks passed and a successful response is sent, the Internet-Draft is queued for further
processing. Its status can be monitored by issuing GET requests to the <code>status_url</code>
indicated in the JSON response. This URL will respond with JSON data in the format
</p>
@ -72,17 +72,17 @@
"state": "validating"
}</pre>
<p>
The state <code>validating</code> indicates that the draft is being or waiting to be processed.
Any other state indicates that the draft completed validation. If the validation failed or if the
draft was canceled after validation, the state will be <code>cancel</code>.
The state <code>validating</code> indicates that the Internet-Draft is being or waiting to be processed.
Any other state indicates that the Internet-Draft completed validation. If the validation failed or if the
Internet-Draft was canceled after validation, the state will be <code>cancel</code>.
</p>
<p>
Human-readable details of the draft's status and history can be found at
Human-readable details of the Internet-Draft's status and history can be found at
{% absurl 'ietf.submit.views.submission_status' submission_id='123' %}
(replacing <code>123</code> with the <code>id</code> for the submission).)
</p>
<p>
Here is an example of submitting a draft and polling its status through the API:
Here is an example of submitting an Internet-Draft and polling its status through the API:
</p>
<pre class="border p-3">
$ curl -s -F "user=user.name@example.com" -F "xml=@~/draft-user-example.xml" -F "replaces=draft-user-replaced-draft" {% absurl 'ietf.submit.views.api_submission' %} | jq

View file

@ -1,18 +1,18 @@
{% extends "base.html" %}
{# Copyright The IETF Trust 2015-2022, All Rights Reserved #}
{% load origin ietf_filters %}
{% block title %}Draft submission API instructions{% endblock %}
{% block title %}I-D submission API instructions{% endblock %}
{% block content %}
{% origin %}
<h1 class="mb-3">Draft submission API instructions</h1>
<h1 class="mb-3">Internet-Draft submission API instructions</h1>
<p>
Note: API endpoint described here is known to have a slow response time or to fail
due to timeout for some draft submissions, particularly those with large file sizes.
due to timeout for some Internet-Draft submissions, particularly those with large file sizes.
It is recommended to use the <a href="{% url 'ietf.submit.views.api_submission' %}">new API endpoint</a>
instead for increased reliability.
</p>
<p>
A simplified draft submission interface, intended for automation,
A simplified Internet-Draft submission interface, intended for automation,
is available at <code>{% absurl 'ietf.submit.views.api_submit' %}</code>.
</p>
<p>

View file

@ -5,7 +5,7 @@ Hi,
{% if not submission.group.is_active %}
Note: This submission belongs to an inactive working group.
{% endif %}
To approve the draft, go to this URL (note: you need to login to be able to approve):
To approve the Internet-Draft, go to this URL (note: you need to login to be able to approve):
https://{{ domain }}{% url "ietf.submit.views.submission_status" submission_id=submission.pk access_token=submission.access_token %}
File name : {{ submission.name }}
@ -32,4 +32,4 @@ To approve the draft, go to this URL (note: you need to login to be able to appr
Best regards,
The IETF Secretariat
through the draft submission service
through the Internet-Draft submission service

View file

@ -4,7 +4,7 @@
{% block pagehead %}
<link rel="stylesheet" href="{% static "ietf/css/list.css" %}">
{% endblock %}
{% block title %}Draft submission approvals{% endblock %}
{% block title %}I-D submission approvals{% endblock %}
{% load ietf_filters %}
{% block submit_content %}
{% origin %}
@ -18,7 +18,7 @@
<table class="approvals table table-sm table-striped tablesorter">
<thead>
<tr>
<th scope="col" data-sort="draft">Draft</th>
<th scope="col" data-sort="draft">Internet-Draft</th>
<th scope="col" data-sort="date">Submitted</th>
</tr>
</thead>
@ -36,7 +36,7 @@
</tbody>
</table>
{% endif %}
<h2 class="mt-5" id="preapprovals">Pre-approved drafts not yet submitted</h2>
<h2 class="mt-5" id="preapprovals">Pre-approved Internet-Drafts not yet submitted</h2>
{% if user|has_role:"Secretariat,WG Chair,RG Chair" %}
<p>
<a class="btn btn-primary"
@ -51,7 +51,7 @@
<table class="preapprovals table table-sm table-striped tablesorter">
<thead>
<tr>
<th scope="col" data-sort="draft">Draft name</th>
<th scope="col" data-sort="draft">Internet-Draft name</th>
<th scope="col" data-sort="date">Pre-approved</th>
<th scope="col" data-sort="by">By</th>
<th scope="col"></th>
@ -74,16 +74,16 @@
</tbody>
</table>
{% endif %}
<h2 class="mt-5" id="recently-approved">Approved drafts within the past {{ days }} days</h2>
<h2 class="mt-5" id="recently-approved">Approved Internet-Drafts within the past {{ days }} days</h2>
{% if not recently_approved %}
<p class="alert alert-info my-3">
No drafts approved.
No Internet-Drafts approved.
</p>
{% else %}
<table class="recently-approved table table-sm table-striped tablesorter">
<thead>
<tr>
<th scope="col" data-sort="draft">Draft</th>
<th scope="col" data-sort="draft">Internet-Draft</th>
<th scope="col" data-sort="date">Submitted</th>
</tr>
</thead>
@ -103,7 +103,7 @@
<h2>Submission of approvals</h2>
<p>
This is where chairs and the secretariat can approve and pre-approve document
submissions which require approval, such as WG <code>-00</code> drafts.
submissions which require approval, such as WG <code>-00</code> Internet-Drafts.
</p>
<p>
You need to

View file

@ -9,7 +9,7 @@
{% if submission.state_id == "posted" %}
<p class="alert alert-warning my-3">
The submission has already been posted. See the
<a href="{% url "ietf.doc.views_doc.document_main" name=submission.name %}">draft here</a>.
<a href="{% url "ietf.doc.views_doc.document_main" name=submission.name %}">Internet-Draft here</a>.
</p>
{% else %}
<div class="alert alert-info my-3">
@ -54,7 +54,7 @@
<form id="confirm-submission" method="post">
{% csrf_token %}
<button class="btn btn-primary" type="submit" name="action" value="confirm">
Confirm submission &amp; post draft
Confirm submission &amp; post I-D
</button>
<button class="btn btn-danger" type="submit" name="action" value="cancel">Cancel submission</button>
</form>

View file

@ -1,10 +1,10 @@
{% autoescape off %}
Hi,
The IETF datatracker draft submission service has received your draft
The IETF datatracker Internet-Draft submission service has received your Internet-Draft
{{ submission.name }}-{{ submission.rev }}, and requires a
confirmation step in order to be able to complete the posting of
the draft.{% if chair_notice %}
the Internet-Draft.{% if chair_notice %}
The chairs have been copied since this is a group document whose author list has changed.
{%endif%}
@ -16,6 +16,6 @@ Please follow this link to the page where you can confirm the posting:
Best regards,
The IETF Secretariat
through the draft submission service
through the Internet-Draft submission service
{% endautoescape %}

View file

@ -2,7 +2,7 @@
Hi,
The datatracker has received a request to send out the link to the URL where you
can confirm the submission of your draft {{ submission.name }}-{{ submission.rev }}.
can confirm the submission of your Internet-Draft {{ submission.name }}-{{ submission.rev }}.
Please follow this link to get full access to the submission page:
{{ url|safe }}
@ -11,6 +11,6 @@ Please follow this link to get full access to the submission page:
Best regards,
The IETF Secretariat
through the draft submission service
through the Internet-Draft submission service
{% endautoescape %}

View file

@ -4,7 +4,7 @@
{% block pagehead %}
<link rel="stylesheet" href="{% static "ietf/css/list.css" %}">
{% endblock %}
{% block title %}Draft submissions awaiting manual posting{% endblock %}
{% block title %}I-D submissions awaiting manual posting{% endblock %}
{% load ietf_filters %}
{% block submit_content %}
{% origin %}
@ -18,7 +18,7 @@
class="submissions table table-sm table-striped tablesorter">
<thead>
<tr>
<th scope="col" data-sort="draft">Draft</th>
<th scope="col" data-sort="draft">Internet-Draft</th>
<th scope="col" data-sort="date">Submitted</th>
<th scope="col" data-sort="passes">Passes Checks</th>
<th scope="col" data-sort="metadata">Metadata</th>
@ -58,10 +58,10 @@
</tbody>
</table>
{% endif %}
<h2 class="mt-3" id="id_upload">Submissions awaiting draft upload</h2>
<h2 class="mt-3" id="id_upload">Submissions awaiting Internet-Draft upload</h2>
{% if not waiting_for_draft %}
<p class="alert alert-info my-3" id="no-waiting-for-draft">
There are no submissions awaiting draft upload.
There are no submissions awaiting Internet-Draft upload.
</p>
{% else %}
<table id="waiting-for-draft"

View file

@ -7,7 +7,7 @@ Manual posting has been requested for the following Internet-Draft.
- {{ err }}{% endfor %}
If the authors claim that this is incorrect, then please look at the actual
draft and verify that it does not have the problems indicated.
Internet-Draft and verify that it does not have the problems indicated.
{% endif %}
Full idnits results are available at the end of this message.

View file

@ -6,7 +6,7 @@
of the Bug Report links at the bottom of the page.
<hr>
If you run into problems submitting an Internet-Draft and need to request manual posting of an Internet-Draft, please send the
draft and the reason for manual posting to
Internet-Draft and the reason for manual posting to
<a href="mailto:{{ settings.SECRETARIAT_SUPPORT_EMAIL }}">{{ settings.SECRETARIAT_SUPPORT_EMAIL }}</a>.
Be advised that manual processing always takes additional time.
</div>

View file

@ -39,9 +39,9 @@
<h2 class="mt-5">Submission checks</h2>
<p class="alert {% if passes_checks %}alert-success{% else %}alert-warning{% endif %} my-3">
{% if passes_checks %}
Your draft has been verified to pass the submission checks.
Your Internet-Draft has been verified to pass the submission checks.
{% else %}
Your draft has <b>NOT</b> been verified to pass the submission checks.
Your Internet-Draft has <b>NOT</b> been verified to pass the submission checks.
{% endif %}
</p>
{% if submission.authors|length > 5 %}
@ -130,7 +130,7 @@
</div>
{% if submission.state_id == "waiting-for-draft" %}
<p class="alert alert-warning my-3">
This submission is awaiting the first draft upload.
This submission is awaiting the first Internet-Draft upload.
</p>
{% elif submission.state_id == 'validating' %}
<p class="alert alert-warning my-3">
@ -427,7 +427,7 @@
{% if requires_group_approval %}
Notifies group chairs to get approval.
{% elif requires_prev_authors_approval %}
Notifies authors of previous revision of draft to get approval.
Notifies authors of previous revision of Internet-Draft to get approval.
{% else %}
Notifies submitter and authors for confirmation.
{% endif %}

View file

@ -29,7 +29,7 @@
<a href="https://www.ietf.org/ietf/1id-abstracts.txt">https://www.ietf.org/ietf/1id-abstracts.txt</a>.
</p>
<p>
An API for automated draft submission is available as an alternative to this webpage at
An API for automated Internet-Draft submission is available as an alternative to this webpage at
<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>
@ -92,7 +92,7 @@
If the submission does not have any validation errors, then the user will be allowed to proceed with the automated posting process. This process will begin with submitter authentication, which will be done by e-mail.
</p>
<p>
A user must carefully examine the meta-data that are displayed on this screen, and make sure that these data were extracted correctly. If the data were not extracted correctly, then the user can correct the errors via the Adjust page. In such a case, the user will pass the draft to the Secretariat for manual posting.
A user must carefully examine the meta-data that are displayed on this screen, and make sure that these data were extracted correctly. If the data were not extracted correctly, then the user can correct the errors via the Adjust page. In such a case, the user will pass the Internet-Draft to the Secretariat for manual posting.
</p>
<table class="table table-sm table-striped">
<tbody>
@ -136,7 +136,7 @@
</th>
<td>
<p>
Button to start the automated posting process with submitter authentication. Once clicked, an email message will be sent to the parties who can verify the submission. For a new draft (<code>-00</code>), that will be the authors listed in the document. For -01 and subsequent drafts, the confirmation message is sent to the authors of the <b>previous</b> version. One of the recipients of the confirmation message will need to open the email message via his or her email application, and click the link provided in the message body.
Button to start the automated posting process with submitter authentication. Once clicked, an email message will be sent to the parties who can verify the submission. For a new Internet-Draft (<code>-00</code>), that will be the authors listed in the document. For -01 and subsequent Internet-Drafts, the confirmation message is sent to the authors of the <b>previous</b> version. One of the recipients of the confirmation message will need to open the email message via his or her email application, and click the link provided in the message body.
</p>
<p>
Once a link in the email body is clicked, the document gets pushed to the IETF Web and FTP sites, a notification is sent to the authors of the document, and an I-D Action announcement will be sent out within the next 15 minutes.
@ -216,4 +216,4 @@
</tbody>
</table>
{% include "submit/problem-reports-footer.html" %}
{% endblock %}
{% endblock %}

View file

@ -14,7 +14,7 @@
<table class="table table-sm table-striped tablesorter">
<thead>
<tr>
<th scope="col" data-sort="draft">Draft name</th>
<th scope="col" data-sort="draft">Internet-Draft name</th>
<th scope="col" data-sort="iesg">IESG state</th>
<th scope="col" data-sort="rfc">RFC Editor state</th>
<th scope="col" data-sort="iana">IANA Action state</th>

View file

@ -13,7 +13,7 @@ SYNOPSIS
DESCRIPTION
Extract information about authors' names and email addresses,
intended status and number of pages from Internet Drafts.
intended status and number of pages from Internet-Drafts.
The information is emitted in the form of a line containing
xml-style attributes, prefixed with the name of the draft.
@ -629,6 +629,8 @@ class PlaintextDraft(Draft):
address_section = r"^ *([0-9]+\.)? *(Author|Editor)('s|s'|s|\(s\)) (Address|Addresses|Information)"
# "Internet Draft" (without the dash) is correct here, because the usage is to
# suppress incorrect author name extraction
ignore = [
"Standards Track", "Current Practice", "Internet Draft", "Working Group",
"Expiration Date",
@ -936,7 +938,7 @@ class PlaintextDraft(Draft):
companies[i] = None
break
else:
_warn("Author tuple doesn't match text in draft: %s, %s" % (authors[i], fullname))
_warn("Author tuple doesn't match text in Internet-Draft: %s, %s" % (authors[i], fullname))
authors[i] = None
break
except AssertionError:
@ -1266,7 +1268,7 @@ def getmeta(fn):
fields["eventsource"] = "draft"
if " " in fn or not fn.endswith(".txt"):
_warn("Skipping unexpected draft name: '%s'" % (fn))
_warn("Skipping unexpected Internet-Draft name: '%s'" % (fn))
return {}
if os.path.exists(fn):
@ -1409,7 +1411,7 @@ def _main(outfile=sys.stdout):
files = [ "-" ]
for file in files:
_debug( "Reading drafts from '%s'" % file)
_debug( "Reading Internet-Drafts from '%s'" % file)
if file == "-":
file = sys.stdin
elif file.endswith(".gz"):

View file

@ -40,11 +40,11 @@ class Command(BaseCommand):
* All yang modules from published RFCs should be extracted and be
available in an rfc-yang repository.
* All valid yang modules from active, not replaced, internet drafts
* All valid yang modules from active, not replaced, Internet-Drafts
should be extracted and be available in a draft-valid-yang repository.
* All, valid and invalid, yang modules from active, not replaced,
internet drafts should be available in a draft-all-yang repository.
Internet-Drafts should be available in a draft-all-yang repository.
(Actually, given precedence ordering, it would be enough to place
non-validating modules in a draft-invalid-yang repository instead).