diff --git a/opentech/apply/determinations/templates/determinations/determination_detail.html b/opentech/apply/determinations/templates/determinations/determination_detail.html index d54513f6c55a3797448b3b206144fd55e5c7a4e3..cc968e9c94f2dcc80cb0366def45a54a27beb22d 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 7c4d6428bbeb4a504b17a82800d4678012f936c6..7b687ab0320079144fb987e7a25681aba1816d62 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 8da50290d1d0a428b2ec239de2d83c92517e2c90..c63bb39634f14cb61aacbdd563e4dd592f984028 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 f1c25ac2249b698991e1520fa91d53de63e1a15f..654243b06b9348d525d962dfd9b94f2c8457a216 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)