Skip to content

Commit faee5f6

Browse files
committed
Merged in [15120] from rjsparks@nostrum.com:
Missed adding the migrations. Related to ietf-tools#1963. Merged in [15119] from rjsparks@nostrum.com: Change stream state to replaced when an ISE, IAB, or IRTF document is replaced. Fixes ietf-tools#1963. - Legacy-Id: 15122 Note: SVN reference [15119] has been migrated to Git commit 1295f1f Note: SVN reference [15120] has been migrated to Git commit 1c16926
2 parents b768c59 + 1c16926 commit faee5f6

5 files changed

Lines changed: 223 additions & 10 deletions

File tree

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
# -*- coding: utf-8 -*-
2+
# Generated by Django 1.11.13 on 2018-05-03 11:50
3+
from __future__ import unicode_literals
4+
5+
from django.db import migrations
6+
7+
def forward(apps, schema_editor):
8+
State = apps.get_model('doc','State')
9+
for type_id in ('draft-stream-iab','draft-stream-ise','draft-stream-irtf'):
10+
State.objects.create(type_id=type_id,
11+
slug='repl',
12+
name='Replaced',
13+
desc='Replaced',
14+
)
15+
16+
17+
def reverse(apps, schema_editor):
18+
State = apps.get_model('doc','State')
19+
State.objects.filter(type_id__in=('draft-stream-iab','draft-stream-ise','draft-stream-irtf'), slug='repl').delete()
20+
21+
class Migration(migrations.Migration):
22+
23+
dependencies = [
24+
('doc', '0003_auto_20180401_1231'),
25+
]
26+
27+
operations = [
28+
migrations.RunPython(forward,reverse)
29+
]
Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,111 @@
1+
# -*- coding: utf-8 -*-
2+
# Generated by Django 1.11.13 on 2018-05-03 12:16
3+
from __future__ import unicode_literals
4+
5+
from django.db import migrations
6+
7+
def forward(apps, schema_editor):
8+
Document = apps.get_model('doc','Document')
9+
State = apps.get_model('doc','State')
10+
11+
iab_active = State.objects.get(type_id='draft-stream-iab',slug='active')
12+
iab_replaced = State.objects.get(type_id='draft-stream-iab',slug='repl')
13+
14+
irtf_active = State.objects.get(type_id='draft-stream-irtf',slug='active')
15+
irtf_candidate = State.objects.get(type_id='draft-stream-irtf',slug='candidat')
16+
irtf_replaced = State.objects.get(type_id='draft-stream-irtf',slug='repl')
17+
irtf_dead = State.objects.get(type_id='draft-stream-irtf',slug='dead')
18+
19+
doc = Document.objects.get(name='draft-flanagan-rfc-preservation')
20+
doc.states.remove(iab_active)
21+
doc.states.add(iab_replaced)
22+
23+
doc = Document.objects.get(name='draft-trammell-semi-report')
24+
doc.states.remove(iab_active)
25+
doc.states.add(iab_replaced)
26+
27+
doc = Document.objects.get(name='draft-nir-cfrg-chacha20-poly1305')
28+
doc.states.remove(irtf_candidate)
29+
doc.states.add(irtf_replaced)
30+
31+
doc = Document.objects.get(name='draft-ladd-spake2')
32+
doc.states.remove(irtf_candidate)
33+
doc.states.add(irtf_replaced)
34+
35+
doc = Document.objects.get(name='draft-lee-nfvrg-resource-management-service-chain')
36+
doc.states.remove(irtf_candidate)
37+
doc.states.add(irtf_replaced)
38+
39+
doc = Document.objects.get(name='draft-keranen-t2trg-rest-iot')
40+
doc.states.remove(irtf_candidate)
41+
doc.states.add(irtf_replaced)
42+
43+
doc = Document.objects.get(name='draft-josefsson-argon2')
44+
doc.states.remove(irtf_active)
45+
doc.states.add(irtf_replaced)
46+
47+
doc = Document.objects.get(name='draft-tenoever-hrpc-research')
48+
doc.states.remove(irtf_active)
49+
doc.states.add(irtf_replaced)
50+
51+
doc = Document.objects.get(name='draft-kutscher-icnrg-challenges')
52+
doc.states.remove(irtf_dead)
53+
doc.states.add(irtf_replaced)
54+
55+
def reverse(apps, schema_editor):
56+
Document = apps.get_model('doc','Document')
57+
State = apps.get_model('doc','State')
58+
59+
iab_active = State.objects.get(type_id='draft-stream-iab',slug='active')
60+
iab_replaced = State.objects.get(type_id='draft-stream-iab',slug='repl')
61+
62+
irtf_active = State.objects.get(type_id='draft-stream-irtf',slug='active')
63+
irtf_candidate = State.objects.get(type_id='draft-stream-irtf',slug='candidat')
64+
irtf_replaced = State.objects.get(type_id='draft-stream-irtf',slug='repl')
65+
irtf_dead = State.objects.get(type_id='draft-stream-irtf',slug='dead')
66+
67+
doc = Document.objects.get(name='draft-flanagan-rfc-preservation')
68+
doc.states.add(iab_active)
69+
doc.states.remove(iab_replaced)
70+
71+
doc = Document.objects.get(name='draft-trammell-semi-report')
72+
doc.states.add(iab_active)
73+
doc.states.remove(iab_replaced)
74+
75+
doc = Document.objects.get(name='draft-nir-cfrg-chacha20-poly1305')
76+
doc.states.add(irtf_candidate)
77+
doc.states.remove(irtf_replaced)
78+
79+
doc = Document.objects.get(name='draft-ladd-spake2')
80+
doc.states.add(irtf_candidate)
81+
doc.states.remove(irtf_replaced)
82+
83+
doc = Document.objects.get(name='draft-lee-nfvrg-resource-management-service-chain')
84+
doc.states.add(irtf_candidate)
85+
doc.states.remove(irtf_replaced)
86+
87+
doc = Document.objects.get(name='draft-keranen-t2trg-rest-iot')
88+
doc.states.add(irtf_candidate)
89+
doc.states.remove(irtf_replaced)
90+
91+
doc = Document.objects.get(name='draft-josefsson-argon2')
92+
doc.states.add(irtf_active)
93+
doc.states.remove(irtf_replaced)
94+
95+
doc = Document.objects.get(name='draft-tenoever-hrpc-research')
96+
doc.states.add(irtf_active)
97+
doc.states.remove(irtf_replaced)
98+
99+
doc = Document.objects.get(name='draft-kutscher-icnrg-challenges')
100+
doc.states.add(irtf_dead)
101+
doc.states.remove(irtf_replaced)
102+
103+
class Migration(migrations.Migration):
104+
105+
dependencies = [
106+
('doc', '0004_add_draft_stream_replaced_states'),
107+
]
108+
109+
operations = [
110+
migrations.RunPython(forward, reverse)
111+
]

ietf/doc/tests_draft.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1566,3 +1566,21 @@ def test_review_possibly_replaces(self):
15661566
self.assertTrue(not self.replacea.related_that_doc("possibly-replaces"))
15671567
self.assertEqual(len(self.replacea.related_that_doc("replaces")), 1)
15681568
self.assertEquals(Document.objects.get(pk=self.basea.pk).get_state().slug, 'repl')
1569+
1570+
class MoreReplacesTests(TestCase):
1571+
1572+
def test_stream_state_changes_when_replaced(self):
1573+
self.client.login(username='secretary',password='secretary+password')
1574+
for stream in ('iab','irtf','ise'):
1575+
old_doc = DocumentFactory(stream_id=stream)
1576+
old_doc.set_state(State.objects.get(type_id='draft-stream-%s'%stream, slug='ise-rev' if stream=='ise' else 'active'))
1577+
new_doc = DocumentFactory(stream_id=stream)
1578+
1579+
url = urlreverse('ietf.doc.views_draft.replaces', kwargs=dict(name=new_doc.name))
1580+
r = self.client.post(url, dict(replaces=old_doc.name))
1581+
self.assertEqual(r.status_code,302)
1582+
old_doc = Document.objects.get(name=old_doc.name)
1583+
self.assertEqual(old_doc.get_state_slug('draft'),'repl')
1584+
self.assertEqual(old_doc.get_state_slug('draft-stream-%s'%stream),'repl')
1585+
1586+

ietf/doc/utils.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -592,6 +592,11 @@ def set_replaces_for_document(request, doc, new_replaces, by, email_subject, com
592592
cc.update(other_addrs.cc)
593593
RelatedDocument.objects.create(source=doc, target=d, relationship=relationship)
594594
d.document.set_state(State.objects.get(type='draft', slug='repl'))
595+
596+
if d.document.stream_id in ('irtf','ise','iab'):
597+
repl_state = State.objects.get(type_id='draft-stream-%s'%d.document.stream_id, slug='repl')
598+
d.document.set_state(repl_state)
599+
events.append(StateDocEvent.objects.create(doc=d.document, rev=d.document.rev, by=by, type='changed_state', desc="Set stream state to Replaced",state_type=repl_state.type, state=repl_state))
595600

596601
# make sure there are no lingering suggestions duplicating new replacements
597602
RelatedDocument.objects.filter(source=doc, target__in=new_replaces, relationship="possibly-replaces").delete()

ietf/name/fixtures/names.json

Lines changed: 60 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1277,7 +1277,7 @@
12771277
},
12781278
{
12791279
"fields": {
1280-
"desc": "The IESG and IAB are reviewing the early draft of the charter; this is the initial IESG and IAB review. The usual next state is External review if the idea is adopted, or Informal IESG review if the IESG decides the idea needs more work, or Not currently under review is the idea is abandoned",
1280+
"desc": "The IESG and IAB are reviewing the early draft of the charter; this is the initial IESG and IAB review. The usual next state is External review if the idea is adopted, or Informal IESG review if the IESG decides the idea needs more work, or Not currently under review if the idea is abandoned",
12811281
"name": "Internal review",
12821282
"next_states": [],
12831283
"order": 0,
@@ -1290,7 +1290,7 @@
12901290
},
12911291
{
12921292
"fields": {
1293-
"desc": "The IETF community and possibly other standards development organizations (SDOs) are reviewing the proposed charter. The usual next state is IESG review, although it might move to Not currently under review is the idea is abandoned during the external review.",
1293+
"desc": "The IETF community and possibly other standards development organizations (SDOs) are reviewing the proposed charter. The usual next state is IESG review, although it might move to Not currently under review if the idea is abandoned during the external review.",
12941294
"name": "External review",
12951295
"next_states": [],
12961296
"order": 0,
@@ -2128,6 +2128,45 @@
21282128
"model": "doc.state",
21292129
"pk": 146
21302130
},
2131+
{
2132+
"fields": {
2133+
"desc": "Replaced",
2134+
"name": "Replaced",
2135+
"next_states": [],
2136+
"order": 0,
2137+
"slug": "repl",
2138+
"type": "draft-stream-iab",
2139+
"used": true
2140+
},
2141+
"model": "doc.state",
2142+
"pk": 147
2143+
},
2144+
{
2145+
"fields": {
2146+
"desc": "Replaced",
2147+
"name": "Replaced",
2148+
"next_states": [],
2149+
"order": 0,
2150+
"slug": "repl",
2151+
"type": "draft-stream-ise",
2152+
"used": true
2153+
},
2154+
"model": "doc.state",
2155+
"pk": 148
2156+
},
2157+
{
2158+
"fields": {
2159+
"desc": "Replaced",
2160+
"name": "Replaced",
2161+
"next_states": [],
2162+
"order": 0,
2163+
"slug": "repl",
2164+
"type": "draft-stream-irtf",
2165+
"used": true
2166+
},
2167+
"model": "doc.state",
2168+
"pk": 149
2169+
},
21312170
{
21322171
"fields": {
21332172
"label": "State"
@@ -8451,7 +8490,7 @@
84518490
},
84528491
{
84538492
"fields": {
8454-
"default_offset_days": -8,
8493+
"default_offset_days": -47,
84558494
"desc": "Early Bird registration and payment cut-off at UTC 23:59",
84568495
"name": "Earlybird cutoff",
84578496
"order": 0,
@@ -8484,7 +8523,7 @@
84848523
},
84858524
{
84868525
"fields": {
8487-
"default_offset_days": -68,
8526+
"default_offset_days": -82,
84888527
"desc": "IETF Online Registration Opens",
84898528
"name": "Registration Opens",
84908529
"order": 0,
@@ -8548,6 +8587,17 @@
85488587
"model": "name.importantdatename",
85498588
"pk": "revwgagenda"
85508589
},
8590+
{
8591+
"fields": {
8592+
"default_offset_days": -12,
8593+
"desc": "Standard rate registration and payment cut-off at UTC 23:59.",
8594+
"name": "Standard rate registration ends",
8595+
"order": 18,
8596+
"used": true
8597+
},
8598+
"model": "name.importantdatename",
8599+
"pk": "stdratecutoff"
8600+
},
85518601
{
85528602
"fields": {
85538603
"desc": "",
@@ -10022,7 +10072,7 @@
1002210072
"fields": {
1002310073
"command": "xym",
1002410074
"switch": "--version",
10025-
"time": "2018-03-23T00:08:43.130",
10075+
"time": "2018-05-03T00:07:54.849",
1002610076
"used": true,
1002710077
"version": "xym 0.4"
1002810078
},
@@ -10033,9 +10083,9 @@
1003310083
"fields": {
1003410084
"command": "pyang",
1003510085
"switch": "--version",
10036-
"time": "2018-03-23T00:08:44.177",
10086+
"time": "2018-05-03T00:07:55.605",
1003710087
"used": true,
10038-
"version": "pyang 1.7.4"
10088+
"version": "pyang 1.7.5"
1003910089
},
1004010090
"model": "utils.versioninfo",
1004110091
"pk": 2
@@ -10044,9 +10094,9 @@
1004410094
"fields": {
1004510095
"command": "yanglint",
1004610096
"switch": "--version",
10047-
"time": "2018-03-23T00:08:44.295",
10097+
"time": "2018-05-03T00:07:55.737",
1004810098
"used": true,
10049-
"version": "yanglint 0.14.73"
10099+
"version": "yanglint 0.14.78"
1005010100
},
1005110101
"model": "utils.versioninfo",
1005210102
"pk": 3
@@ -10055,7 +10105,7 @@
1005510105
"fields": {
1005610106
"command": "xml2rfc",
1005710107
"switch": "--version",
10058-
"time": "2018-03-23T00:08:45.862",
10108+
"time": "2018-05-03T00:07:56.594",
1005910109
"used": true,
1006010110
"version": "xml2rfc 2.9.6"
1006110111
},

0 commit comments

Comments
 (0)