Skip to content
Snippets Groups Projects
Commit 56df24a9 authored by Todd Dembrey's avatar Todd Dembrey
Browse files

Improve the logic so you can edit a submitted more_info

parent a8a7b272
No related branches found
No related tags found
No related merge requests found
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
{% block content %} {% block content %}
<div class="admin-bar"> <div class="admin-bar">
<div class="admin-bar__inner"> <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> <h5>For <a href="{% url "funds:submissions:detail" determination.submission.id %}">{{ determination.submission.title }}</a></h5>
</div> </div>
</div> </div>
......
...@@ -28,10 +28,9 @@ class DeterminationFactory(factory.DjangoModelFactory): ...@@ -28,10 +28,9 @@ class DeterminationFactory(factory.DjangoModelFactory):
model = Determination model = Determination
class Params: class Params:
submitted = factory.Trait(outcome=ACCEPTED, is_draft=False)
accepted = factory.Trait(outcome=ACCEPTED) accepted = factory.Trait(outcome=ACCEPTED)
rejected = factory.Trait(outcome=REJECTED) rejected = factory.Trait(outcome=REJECTED)
not_draft = factory.Trait(is_draft=False) submitted = factory.Trait(is_draft=False)
submission = factory.SubFactory(ApplicationSubmissionFactory) submission = factory.SubFactory(ApplicationSubmissionFactory)
author = factory.SelfAttribute('submission.lead') author = factory.SelfAttribute('submission.lead')
......
...@@ -19,7 +19,7 @@ class StaffDeterminationsTestCase(BaseViewTestCase): ...@@ -19,7 +19,7 @@ class StaffDeterminationsTestCase(BaseViewTestCase):
def test_can_access_determination(self): def test_can_access_determination(self):
submission = ApplicationSubmissionFactory(status='in_discussion') 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) response = self.get_page(determination)
self.assertContains(response, determination.submission.title) self.assertContains(response, determination.submission.title)
self.assertContains(response, self.user.full_name) self.assertContains(response, self.user.full_name)
...@@ -27,7 +27,7 @@ class StaffDeterminationsTestCase(BaseViewTestCase): ...@@ -27,7 +27,7 @@ class StaffDeterminationsTestCase(BaseViewTestCase):
def test_lead_can_access_determination(self): def test_lead_can_access_determination(self):
submission = ApplicationSubmissionFactory(status='in_discussion', lead=self.user) 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) response = self.get_page(determination)
self.assertContains(response, determination.submission.title) self.assertContains(response, determination.submission.title)
self.assertContains(response, self.user.full_name) self.assertContains(response, self.user.full_name)
...@@ -55,7 +55,7 @@ class DeterminationFormTestCase(BaseViewTestCase): ...@@ -55,7 +55,7 @@ class DeterminationFormTestCase(BaseViewTestCase):
def test_cant_resubmit_determination(self): def test_cant_resubmit_determination(self):
submission = ApplicationSubmissionFactory(status='in_discussion', lead=self.user) 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') response = self.post_page(submission, {'data': 'value', 'outcome': determination.outcome}, 'form')
self.assertRedirects(response, self.url(submission)) self.assertRedirects(response, self.url(submission))
...@@ -72,6 +72,12 @@ class DeterminationFormTestCase(BaseViewTestCase): ...@@ -72,6 +72,12 @@ class DeterminationFormTestCase(BaseViewTestCase):
self.assertContains(response, reverse(self.url_name.format('form'), kwargs=self.get_kwargs(submission))) self.assertContains(response, reverse(self.url_name.format('form'), kwargs=self.get_kwargs(submission)))
self.assertNotContains(response, 'Accepted determination draft message') 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): def test_cannot_edit_draft_determination_if_not_lead(self):
submission = ApplicationSubmissionFactory(status='in_discussion') submission = ApplicationSubmissionFactory(status='in_discussion')
determination = DeterminationFactory(submission=submission, author=self.user, accepted=True) determination = DeterminationFactory(submission=submission, author=self.user, accepted=True)
......
...@@ -43,7 +43,7 @@ def transition_from_outcome(outcome, submission): ...@@ -43,7 +43,7 @@ def transition_from_outcome(outcome, submission):
def can_edit_determination(user, determination, submission): def can_edit_determination(user, determination, submission):
outcome = transition_from_outcome(determination.outcome, submission) outcome = transition_from_outcome(determination.outcome, submission)
valid_outcomes = determination_actions(user, 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): def can_create_determination(user, submission):
...@@ -62,6 +62,7 @@ class DeterminationCreateOrUpdateView(CreateOrUpdateView): ...@@ -62,6 +62,7 @@ class DeterminationCreateOrUpdateView(CreateOrUpdateView):
def dispatch(self, request, *args, **kwargs): def dispatch(self, request, *args, **kwargs):
self.submission = get_object_or_404(ApplicationSubmission, id=self.kwargs['submission_pk']) 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): if not can_create_determination(request.user, self.submission):
raise PermissionDenied() raise PermissionDenied()
...@@ -152,7 +153,7 @@ class AdminDeterminationDetailView(DetailView): ...@@ -152,7 +153,7 @@ class AdminDeterminationDetailView(DetailView):
self.submission = get_object_or_404(ApplicationSubmission, id=self.kwargs['submission_pk']) self.submission = get_object_or_404(ApplicationSubmission, id=self.kwargs['submission_pk'])
determination = self.get_object() 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 HttpResponseRedirect(reverse_lazy('apply:submissions:determinations:form', args=(self.submission.id,)))
return super().dispatch(request, *args, **kwargs) return super().dispatch(request, *args, **kwargs)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment