From 56df24a956d63b118c8246b2ed6b8b2208109db8 Mon Sep 17 00:00:00 2001
From: Todd Dembrey <todd.dembrey@torchbox.com>
Date: Fri, 17 Aug 2018 09:50:22 +0100
Subject: [PATCH] Improve the logic so you can edit a submitted more_info

---
 .../determinations/determination_detail.html         |  2 +-
 opentech/apply/determinations/tests/factories.py     |  3 +--
 opentech/apply/determinations/tests/test_views.py    | 12 +++++++++---
 opentech/apply/determinations/views.py               |  5 +++--
 4 files changed, 14 insertions(+), 8 deletions(-)

diff --git a/opentech/apply/determinations/templates/determinations/determination_detail.html b/opentech/apply/determinations/templates/determinations/determination_detail.html
index d54513f6c..cc968e9c9 100644
--- a/opentech/apply/determinations/templates/determinations/determination_detail.html
+++ b/opentech/apply/determinations/templates/determinations/determination_detail.html
@@ -4,7 +4,7 @@
 {% block content %}
 <div class="admin-bar">
     <div class="admin-bar__inner">
-        <h2 class="heading heading--no-margin">Determination</h2>
+        <h2 class="heading heading--no-margin">Determination {% if determination.is_draft %}[DRAFT]{% endif %}</h2>
         <h5>For <a href="{% url "funds:submissions:detail" determination.submission.id %}">{{ determination.submission.title }}</a></h5>
     </div>
 </div>
diff --git a/opentech/apply/determinations/tests/factories.py b/opentech/apply/determinations/tests/factories.py
index 7c4d6428b..7b687ab03 100644
--- a/opentech/apply/determinations/tests/factories.py
+++ b/opentech/apply/determinations/tests/factories.py
@@ -28,10 +28,9 @@ class DeterminationFactory(factory.DjangoModelFactory):
         model = Determination
 
     class Params:
-        submitted = factory.Trait(outcome=ACCEPTED, is_draft=False)
         accepted = factory.Trait(outcome=ACCEPTED)
         rejected = factory.Trait(outcome=REJECTED)
-        not_draft = factory.Trait(is_draft=False)
+        submitted = factory.Trait(is_draft=False)
 
     submission = factory.SubFactory(ApplicationSubmissionFactory)
     author = factory.SelfAttribute('submission.lead')
diff --git a/opentech/apply/determinations/tests/test_views.py b/opentech/apply/determinations/tests/test_views.py
index 8da50290d..c63bb3963 100644
--- a/opentech/apply/determinations/tests/test_views.py
+++ b/opentech/apply/determinations/tests/test_views.py
@@ -19,7 +19,7 @@ class StaffDeterminationsTestCase(BaseViewTestCase):
 
     def test_can_access_determination(self):
         submission = ApplicationSubmissionFactory(status='in_discussion')
-        determination = DeterminationFactory(submission=submission, author=self.user, not_draft=True)
+        determination = DeterminationFactory(submission=submission, author=self.user, submitted=True)
         response = self.get_page(determination)
         self.assertContains(response, determination.submission.title)
         self.assertContains(response, self.user.full_name)
@@ -27,7 +27,7 @@ class StaffDeterminationsTestCase(BaseViewTestCase):
 
     def test_lead_can_access_determination(self):
         submission = ApplicationSubmissionFactory(status='in_discussion', lead=self.user)
-        determination = DeterminationFactory(submission=submission, author=self.user, not_draft=True)
+        determination = DeterminationFactory(submission=submission, author=self.user, submitted=True)
         response = self.get_page(determination)
         self.assertContains(response, determination.submission.title)
         self.assertContains(response, self.user.full_name)
@@ -55,7 +55,7 @@ class DeterminationFormTestCase(BaseViewTestCase):
 
     def test_cant_resubmit_determination(self):
         submission = ApplicationSubmissionFactory(status='in_discussion', lead=self.user)
-        determination = DeterminationFactory(submission=submission, author=self.user, submitted=True)
+        determination = DeterminationFactory(submission=submission, author=self.user, accepted=True, submitted=True)
         response = self.post_page(submission, {'data': 'value', 'outcome': determination.outcome}, 'form')
         self.assertRedirects(response, self.url(submission))
 
@@ -72,6 +72,12 @@ class DeterminationFormTestCase(BaseViewTestCase):
         self.assertContains(response, reverse(self.url_name.format('form'), kwargs=self.get_kwargs(submission)))
         self.assertNotContains(response, 'Accepted determination draft message')
 
+    def test_can_edit_submitted_more_info(self):
+        submission = ApplicationSubmissionFactory(status='in_discussion', lead=self.user)
+        DeterminationFactory(submission=submission, author=self.user, submitted=True)
+        response = self.get_page(submission, 'form')
+        self.assertContains(response, 'Update ')
+
     def test_cannot_edit_draft_determination_if_not_lead(self):
         submission = ApplicationSubmissionFactory(status='in_discussion')
         determination = DeterminationFactory(submission=submission, author=self.user, accepted=True)
diff --git a/opentech/apply/determinations/views.py b/opentech/apply/determinations/views.py
index f1c25ac22..654243b06 100644
--- a/opentech/apply/determinations/views.py
+++ b/opentech/apply/determinations/views.py
@@ -43,7 +43,7 @@ def transition_from_outcome(outcome, submission):
 def can_edit_determination(user, determination, submission):
     outcome = transition_from_outcome(determination.outcome, submission)
     valid_outcomes = determination_actions(user, submission)
-    return outcome in valid_outcomes and determination.is_draft
+    return outcome in valid_outcomes
 
 
 def can_create_determination(user, submission):
@@ -62,6 +62,7 @@ class DeterminationCreateOrUpdateView(CreateOrUpdateView):
     def dispatch(self, request, *args, **kwargs):
         self.submission = get_object_or_404(ApplicationSubmission, id=self.kwargs['submission_pk'])
 
+        import pudb; pudb.set_trace()
         if not can_create_determination(request.user, self.submission):
             raise PermissionDenied()
 
@@ -152,7 +153,7 @@ class AdminDeterminationDetailView(DetailView):
         self.submission = get_object_or_404(ApplicationSubmission, id=self.kwargs['submission_pk'])
         determination = self.get_object()
 
-        if can_edit_determination(request.user, determination, self.submission):
+        if can_edit_determination(request.user, determination, self.submission) and determination.is_draft:
             return HttpResponseRedirect(reverse_lazy('apply:submissions:determinations:form', args=(self.submission.id,)))
 
         return super().dispatch(request, *args, **kwargs)
-- 
GitLab