Skip to content

Commit 48e24c0

Browse files
committed
Merged in [9548] from rjsparks@nostrum.com:
Allow IANA to switch to (BEGIN IANA COMMENTS) at their leisure. Make sure the captured events are obviously from IANA. - Legacy-Id: 9568 Note: SVN reference [9548] has been migrated to Git commit 6ded341
2 parents ba6caba + 6ded341 commit 48e24c0

2 files changed

Lines changed: 48 additions & 32 deletions

File tree

ietf/sync/iana.py

Lines changed: 23 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -252,10 +252,16 @@ def parse_review_email(text):
252252

253253
# comment
254254
body = msg.get_payload().decode('quoted-printable').replace("\r", "")
255-
b = body.find("(BEGIN IANA LAST CALL COMMENTS)")
256-
e = body.find("(END IANA LAST CALL COMMENTS)")
257-
258-
comment = body[b + len("(BEGIN IANA LAST CALL COMMENTS)"):e].strip()
255+
if "BEGIN IANA LAST CALL COMMENTS" in body:
256+
b = body.find("(BEGIN IANA LAST CALL COMMENTS)")
257+
e = body.find("(END IANA LAST CALL COMMENTS)")
258+
comment = body[b + len("(BEGIN IANA LAST CALL COMMENTS)"):e].strip()
259+
elif "BEGIN IANA COMMENTS" in body:
260+
b = body.find("(BEGIN IANA COMMENTS)")
261+
e = body.find("(END IANA COMMENTS)")
262+
comment = body[b + len("(BEGIN IANA COMMENTS)"):e].strip()
263+
else:
264+
comment = ""
259265

260266
# strip leading IESG:
261267
if comment.startswith("IESG:"):
@@ -266,16 +272,21 @@ def parse_review_email(text):
266272
if m:
267273
comment = comment[:m.start()].rstrip()
268274

275+
m = re.search(r"<(.*)>", msg["From"])
276+
if m:
277+
comment = '(Via %s): %s' % ( m.group(1).strip() , comment )
278+
269279
return doc_name, review_time, by, comment
270280

271281
def add_review_comment(doc_name, review_time, by, comment):
272-
try:
273-
e = DocEvent.objects.get(doc__name=doc_name, time=review_time, type="iana_review")
274-
except DocEvent.DoesNotExist:
275-
doc = Document.objects.get(name=doc_name)
276-
e = DocEvent(doc=doc, time=review_time, type="iana_review")
282+
if comment:
283+
try:
284+
e = DocEvent.objects.get(doc__name=doc_name, time=review_time, type="iana_review")
285+
except DocEvent.DoesNotExist:
286+
doc = Document.objects.get(name=doc_name)
287+
e = DocEvent(doc=doc, time=review_time, type="iana_review")
277288

278-
e.desc = comment
279-
e.by = by
289+
e.desc = comment
290+
e.by = by
280291

281-
e.save()
292+
e.save()

ietf/sync/tests.py

Lines changed: 25 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -131,11 +131,11 @@ def test_changes_sync_errors(self):
131131
def test_iana_review_mail(self):
132132
draft = make_test_data()
133133

134-
msg = u"""From: "%(person)s via RT" <drafts-lastcall@iana.org>
135-
Date: Thu, 10 May 2012 12:00:00 +0000
134+
msg_template = u"""From: "%(person)s via RT" <drafts-lastcall@iana.org>
135+
Date: Thu, 10 May 2012 12:00:0%(rtime)d +0000
136136
Subject: [IANA #12345] Last Call: <%(draft)s-%(rev)s.txt> (Long text) to Informational RFC
137137
138-
(BEGIN IANA LAST CALL COMMENTS)
138+
(BEGIN IANA %(tag)s)
139139
140140
IESG:
141141
@@ -151,30 +151,35 @@ def test_iana_review_mail(self):
151151
IANA “Fake Test” Person
152152
ICANN
153153
154-
(END IANA LAST CALL COMMENTS)
154+
(END IANA %(tag)s)
155155
"""
156156

157-
msg = msg % dict(person=Person.objects.get(user__username="iana").name,
158-
draft=draft.name,
159-
rev=draft.rev)
157+
tags = ("LAST CALL COMMENTS","COMMENTS")
158+
for tag in tags:
159+
msg = msg_template % dict(person=Person.objects.get(user__username="iana").name,
160+
draft=draft.name,
161+
rev=draft.rev,
162+
tag=tag,
163+
rtime=tags.index(tag))
160164

161-
doc_name, review_time, by, comment = iana.parse_review_email(msg.encode('utf-8'))
165+
doc_name, review_time, by, comment = iana.parse_review_email(msg.encode('utf-8'))
162166

163-
self.assertEqual(doc_name, draft.name)
164-
# self.assertEqual(review_time, datetime.datetime(2012, 5, 10, 5, 0, 0))
165-
self.assertEqual(by, Person.objects.get(user__username="iana"))
166-
self.assertTrue("there are no IANA Actions" in comment.replace("\n", ""))
167+
self.assertEqual(doc_name, draft.name)
168+
# self.assertEqual(review_time, datetime.datetime(2012, 5, 10, 5, 0, 0))
169+
self.assertEqual(by, Person.objects.get(user__username="iana"))
170+
self.assertTrue("there are no IANA Actions" in comment.replace("\n", ""))
167171

168-
iana.add_review_comment(doc_name, review_time, by, comment)
172+
events_before = DocEvent.objects.filter(doc=draft, type="iana_review").count()
173+
iana.add_review_comment(doc_name, review_time, by, comment)
169174

170-
e = draft.latest_event(type="iana_review")
171-
self.assertTrue(e)
172-
self.assertEqual(e.desc, comment)
173-
self.assertEqual(e.by, by)
175+
e = draft.latest_event(type="iana_review")
176+
self.assertTrue(e)
177+
self.assertEqual(e.desc, comment)
178+
self.assertEqual(e.by, by)
174179

175-
# make sure it doesn't create duplicates
176-
iana.add_review_comment(doc_name, review_time, by, comment)
177-
self.assertEqual(DocEvent.objects.filter(doc=draft, type="iana_review").count(), 1)
180+
# make sure it doesn't create duplicates
181+
iana.add_review_comment(doc_name, review_time, by, comment)
182+
self.assertEqual(DocEvent.objects.filter(doc=draft, type="iana_review").count(), events_before+1)
178183

179184
def test_notify_page(self):
180185
# check that we can get the notify page

0 commit comments

Comments
 (0)