From 0ed604fc605a64a4d541ef5d8fb57522c945b036 Mon Sep 17 00:00:00 2001
From: Todd Dembrey <todd.dembrey@torchbox.com>
Date: Thu, 6 Sep 2018 11:53:13 +0100
Subject: [PATCH] Add revision link

---
 opentech/apply/activity/messaging.py       |  2 ++
 opentech/apply/determinations/views.py     |  1 +
 opentech/apply/funds/models/submissions.py | 13 +++++++++++--
 opentech/apply/funds/views.py              | 12 +++++++-----
 4 files changed, 21 insertions(+), 7 deletions(-)

diff --git a/opentech/apply/activity/messaging.py b/opentech/apply/activity/messaging.py
index e96326e4b..5191e8cf1 100644
--- a/opentech/apply/activity/messaging.py
+++ b/opentech/apply/activity/messaging.py
@@ -18,6 +18,8 @@ neat_related = {
     MESSAGES.UPDATE_LEAD: 'old',
     MESSAGES.NEW_REVIEW: 'review',
     MESSAGES.TRANSITION: 'old_phase',
+    MESSAGES.APPLICANT_EDIT: 'revision',
+    MESSAGES.EDIT: 'revision',
 }
 
 
diff --git a/opentech/apply/determinations/views.py b/opentech/apply/determinations/views.py
index 8a12b46cc..7be2e9a41 100644
--- a/opentech/apply/determinations/views.py
+++ b/opentech/apply/determinations/views.py
@@ -102,6 +102,7 @@ class DeterminationCreateOrUpdateView(CreateOrUpdateView):
                     message=self.object.stripped_message,
                     user=self.request.user,
                     submission=self.submission,
+                    related_object=self.object,
                 )
 
             self.submission.perform_transition(transition, self.request.user, request=self.request, notify=False)
diff --git a/opentech/apply/funds/models/submissions.py b/opentech/apply/funds/models/submissions.py
index 65dff5f21..93092d921 100644
--- a/opentech/apply/funds/models/submissions.py
+++ b/opentech/apply/funds/models/submissions.py
@@ -440,8 +440,8 @@ class ApplicationSubmission(
 
             self.draft_revision = revision
             self.save()
-            return True
-        return False
+            return revision
+        return None
 
     def clean_submission(self):
         self.process_form_data()
@@ -635,3 +635,12 @@ class ApplicationRevision(AccessFormData, models.Model):
             'to': self.submission.live_revision.id,
             'from': self.id,
         })
+
+    def get_absolute_url(self):
+        # Compares against the previous revision
+        previous_revision = self.submission.revisions.filter(id__lt=self.id).first()
+        return reverse("funds:submissions:revisions:compare", kwargs={
+            'submission_pk': self.submission.id,
+            'to': self.id,
+            'from': previous_revision.id,
+        })
diff --git a/opentech/apply/funds/views.py b/opentech/apply/funds/views.py
index 5e612143e..1e469d9ec 100644
--- a/opentech/apply/funds/views.py
+++ b/opentech/apply/funds/views.py
@@ -280,13 +280,14 @@ class AdminSubmissionEditView(BaseSubmissionEditView):
             return self.form_invalid(form)
 
         if 'submit' in self.request.POST:
-            created = self.object.create_revision(by=self.request.user)
-            if created:
+            revision = self.object.create_revision(by=self.request.user)
+            if revision:
                 messenger(
                     MESSAGES.EDIT,
                     request=self.request,
                     user=self.request.user,
                     submission=self.object,
+                    related=revision,
                 )
 
         return HttpResponseRedirect(self.get_success_url())
@@ -315,7 +316,7 @@ class ApplicantSubmissionEditView(BaseSubmissionEditView):
             messages.success(self.request, _('Submission saved successfully'))
             return self.form_invalid(form)
 
-        created = self.object.create_revision(by=self.request.user)
+        revision = self.object.create_revision(by=self.request.user)
         submitting_proposal = self.object.phase.name in STAGE_CHANGE_ACTIONS
 
         if submitting_proposal:
@@ -325,12 +326,13 @@ class ApplicantSubmissionEditView(BaseSubmissionEditView):
                 user=self.request.user,
                 submission=self.object,
             )
-        elif created:
+        elif revision:
             messenger(
                 MESSAGES.APPLICANT_EDIT,
                 request=self.request,
                 user=self.request.user,
                 submission=self.object,
+                related=revision,
             )
 
         action = set(self.request.POST.keys()) & set(self.transitions.keys())
@@ -340,7 +342,7 @@ class ApplicantSubmissionEditView(BaseSubmissionEditView):
             transition.target,
             self.request.user,
             request=self.request,
-            notify=not (created or submitting_proposal),  # Use the other notification
+            notify=not (revision or submitting_proposal),  # Use the other notification
         )
 
         return HttpResponseRedirect(self.get_success_url())
-- 
GitLab