From 0ff97470923254c2c03e3f988d12237f91872401 Mon Sep 17 00:00:00 2001
From: Robert Sparks <rjsparks@nostrum.com>
Date: Wed, 8 Apr 2015 20:55:04 +0000
Subject: [PATCH] Properly mark (and test) older ballot comment and discuss
 text after a new revision is submitted . Fixes bug #1656. Commit ready for
 merge.  - Legacy-Id: 9428

---
 ietf/doc/models.py |  2 +-
 ietf/doc/tests.py  | 14 +++++++++++++-
 2 files changed, 14 insertions(+), 2 deletions(-)

diff --git a/ietf/doc/models.py b/ietf/doc/models.py
index 4fe126108..5df88692c 100644
--- a/ietf/doc/models.py
+++ b/ietf/doc/models.py
@@ -701,7 +701,7 @@ class DocEvent(models.Model):
     desc = models.TextField()
 
     def for_current_revision(self):
-        return self.time >= self.doc.time
+        return self.time >= self.doc.latest_event(NewRevisionDocEvent,type='new_revision').time
 
     def get_dochistory(self):
         return DocHistory.objects.filter(time__lte=self.time,doc__name=self.doc.name).order_by('-time').first()
diff --git a/ietf/doc/tests.py b/ietf/doc/tests.py
index 32c26647a..b576c718d 100644
--- a/ietf/doc/tests.py
+++ b/ietf/doc/tests.py
@@ -14,7 +14,8 @@ from django.core.urlresolvers import reverse as urlreverse
 from django.conf import settings
 
 from ietf.doc.models import ( Document, DocAlias, DocRelationshipName, RelatedDocument, State,
-    DocEvent, BallotPositionDocEvent, LastCallDocEvent, WriteupDocEvent, save_document_in_history )
+    DocEvent, BallotPositionDocEvent, LastCallDocEvent, WriteupDocEvent, NewRevisionDocEvent,
+    save_document_in_history )
 from ietf.group.models import Group
 from ietf.meeting.models import Meeting, Session, SessionPresentation
 from ietf.name.models import SessionStatusName
@@ -520,6 +521,7 @@ class DocTestCase(TestCase):
         r = self.client.get(urlreverse("ietf.doc.views_doc.document_ballot", kwargs=dict(name=doc.name)))
         self.assertEqual(r.status_code, 200)
         self.assertTrue(pos.comment in r.content)
+        self.assertTrue(pos.comment_time.strftime('(%Y-%m-%d)') in r.content)
 
         # test with ballot_id
         r = self.client.get(urlreverse("ietf.doc.views_doc.document_ballot", kwargs=dict(name=doc.name, ballot_id=ballot.pk)))
@@ -529,6 +531,16 @@ class DocTestCase(TestCase):
         # test popup too while we're at it
         r = self.client.get(urlreverse("ietf.doc.views_doc.ballot_popup", kwargs=dict(name=doc.name, ballot_id=ballot.pk)))
         self.assertEqual(r.status_code, 200)
+
+        # Now simulate a new revision and make sure positions on older revisions are marked as such
+        oldrev = doc.rev
+        e = NewRevisionDocEvent.objects.create(doc=doc,rev='%02d'%(int(doc.rev)+1),type='new_revision',by=Person.objects.get(name="(System)"))
+        save_document_in_history(doc)
+        doc.rev = e.rev
+        doc.save()
+        r = self.client.get(urlreverse("ietf.doc.views_doc.document_ballot", kwargs=dict(name=doc.name)))
+        self.assertEqual(r.status_code, 200)
+        self.assertTrue( '(%s for -%s)' % (pos.comment_time.strftime('%Y-%m-%d'),oldrev) in r.content)
         
     def test_document_ballot_needed_positions(self):
         make_test_data()