diff --git a/ietf/doc/migrations/0026_add_draft_rfceditor_state.py b/ietf/doc/migrations/0026_add_draft_rfceditor_state.py
new file mode 100644
index 000000000..9f51f1529
--- /dev/null
+++ b/ietf/doc/migrations/0026_add_draft_rfceditor_state.py
@@ -0,0 +1,25 @@
+# Copyright The IETF Trust 2019, All Rights Reserved
+# -*- coding: utf-8 -*-
+
+from __future__ import absolute_import, print_function, unicode_literals
+
+from django.db import migrations
+
+def forward(apps, schema_editor):
+ State = apps.get_model('doc','State')
+ State.objects.get_or_create(type_id='draft-rfceditor', slug='tooling-issue', name='TI',
+ desc='Tooling Issue; an update is needed to one or more of the tools in the publication pipeline before this document can be published')
+
+def reverse(apps, schema_editor):
+ State = apps.get_model('doc','State')
+ State.objects.filter(type_id='draft-rfceditor', slug='tooling-issue').delete()
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('doc', '0025_ianaexpertdocevent'),
+ ]
+
+ operations = [
+ migrations.RunPython(forward,reverse)
+ ]
diff --git a/ietf/name/fixtures/names.json b/ietf/name/fixtures/names.json
index d0ebca2b5..93f889299 100644
--- a/ietf/name/fixtures/names.json
+++ b/ietf/name/fixtures/names.json
@@ -2183,6 +2183,71 @@
"model": "doc.state",
"pk": 150
},
+ {
+ "fields": {
+ "desc": "One or more registries need experts assigned",
+ "name": "Need IANA Expert(s)",
+ "next_states": [],
+ "order": 0,
+ "slug": "need-experts",
+ "type": "draft-iana-experts",
+ "used": true
+ },
+ "model": "doc.state",
+ "pk": 151
+ },
+ {
+ "fields": {
+ "desc": "One or more expert reviews have been assigned",
+ "name": "Reviews assigned",
+ "next_states": [],
+ "order": 1,
+ "slug": "reviews-assigned",
+ "type": "draft-iana-experts",
+ "used": true
+ },
+ "model": "doc.state",
+ "pk": 152
+ },
+ {
+ "fields": {
+ "desc": "Some expert reviewers have identified issues",
+ "name": "Issues identified",
+ "next_states": [],
+ "order": 2,
+ "slug": "expert-issues",
+ "type": "draft-iana-experts",
+ "used": true
+ },
+ "model": "doc.state",
+ "pk": 153
+ },
+ {
+ "fields": {
+ "desc": "All expert reviews have been completed with no blocking issues",
+ "name": "Expert Reviews OK",
+ "next_states": [],
+ "order": 2,
+ "slug": "reviewers-ok",
+ "type": "draft-iana-experts",
+ "used": true
+ },
+ "model": "doc.state",
+ "pk": 154
+ },
+ {
+ "fields": {
+ "desc": "Tooling Issue; an update is needed to one or more of the tools in the publication pipeline before this document can be published",
+ "name": "TI",
+ "next_states": [],
+ "order": 0,
+ "slug": "tooling-issue",
+ "type": "draft-rfceditor",
+ "used": true
+ },
+ "model": "doc.state",
+ "pk": 155
+ },
{
"fields": {
"label": "State"
@@ -2232,6 +2297,13 @@
"model": "doc.statetype",
"pk": "draft-iana-action"
},
+ {
+ "fields": {
+ "label": "IANA Experts State"
+ },
+ "model": "doc.statetype",
+ "pk": "draft-iana-experts"
+ },
{
"fields": {
"label": "IANA Review state"
@@ -2688,7 +2760,7 @@
"groupman_roles": "[\"chair\",\"delegate\"]",
"has_chartering_process": false,
"has_default_jabber": false,
- "has_documents": false,
+ "has_documents": true,
"has_meetings": false,
"has_milestones": false,
"has_nonsession_materials": false,
@@ -13463,7 +13535,7 @@
"fields": {
"command": "xym",
"switch": "--version",
- "time": "2019-06-28T00:12:25.320",
+ "time": "2019-08-28T00:12:18.148",
"used": true,
"version": "xym 0.4"
},
@@ -13474,7 +13546,7 @@
"fields": {
"command": "pyang",
"switch": "--version",
- "time": "2019-06-28T00:12:26.510",
+ "time": "2019-08-28T00:12:19.512",
"used": true,
"version": "pyang 1.7.8"
},
@@ -13485,7 +13557,7 @@
"fields": {
"command": "yanglint",
"switch": "--version",
- "time": "2019-06-28T00:12:26.755",
+ "time": "2019-08-28T00:12:19.751",
"used": true,
"version": "yanglint 0.14.80"
},
@@ -13496,9 +13568,9 @@
"fields": {
"command": "xml2rfc",
"switch": "--version",
- "time": "2019-06-28T00:12:28.742",
+ "time": "2019-08-28T00:12:20.931",
"used": true,
- "version": "xml2rfc 2.22.3"
+ "version": "xml2rfc 2.23.1"
},
"model": "utils.versioninfo",
"pk": 4
diff --git a/ietf/sync/rfceditor.py b/ietf/sync/rfceditor.py
index 8a5f41610..9fb094c2f 100644
--- a/ietf/sync/rfceditor.py
+++ b/ietf/sync/rfceditor.py
@@ -147,6 +147,7 @@ def update_drafts_from_queue(drafts):
'ISR-AUTH': slookup['isr-auth'],
'REF': slookup['ref'],
'RFC-EDITOR': slookup['rfc-edit'],
+ 'TI': slookup['tooling-issue'],
'TO': slookup['timeout'],
'MISSREF': slookup['missref'],
}
@@ -300,7 +301,6 @@ def parse_index(response):
wg = None
l = []
- pages = ""
for fmt in node.getElementsByTagName("format"):
l.append(get_child_text(fmt, "file-format"))
file_formats = (",".join(l)).lower()
diff --git a/ietf/sync/tests.py b/ietf/sync/tests.py
index df2d33a53..fa7e70386 100644
--- a/ietf/sync/tests.py
+++ b/ietf/sync/tests.py
@@ -288,9 +288,8 @@ class RFCSyncTests(TestCase):
ASCII
- 12345
- 42
+ 42
test
@@ -401,6 +400,11 @@ class RFCSyncTests(TestCase):
self.assertEqual(len(drafts), 1)
self.assertEqual(len(warnings), 0)
+ # Test with TI state introduced 11 Sep 2019
+ t = t.replace("EDIT*R*A(1G)", "TI")
+ __, warnings = rfceditor.parse_queue(io.StringIO(t))
+ self.assertEqual(len(warnings), 0)
+
draft_name, date_received, state, tags, missref_generation, stream, auth48, cluster, refs = drafts[0]
# currently, we only check what we actually use