diff --git a/opentech/apply/activity/messaging.py b/opentech/apply/activity/messaging.py index 4b70452923bb21f9b23d318908de04a9fa65c7c2..0561bfeb82e84f91032ed7641e502f9ef4416746 100644 --- a/opentech/apply/activity/messaging.py +++ b/opentech/apply/activity/messaging.py @@ -15,6 +15,7 @@ def link_to(target, request): class MESSAGES(Enum): UPDATE_LEAD = 'Update Lead' + EDIT = 'Edit' NEW_SUBMISSION = 'New Submission' TRANSITION = 'Transition' DETERMINATION_OUTCOME = 'Determination Outcome' @@ -107,6 +108,7 @@ class ActivityAdapter(AdapterBase): messages = { MESSAGES.TRANSITION: 'Progressed from {old_phase.display_name} to {submission.phase}', MESSAGES.NEW_SUBMISSION: 'Submitted {submission.title} for {submission.page.title}', + MESSAGES.EDIT: '{user} edited', MESSAGES.UPDATE_LEAD: 'Lead changed from {old.lead} to {submission.lead}', MESSAGES.DETERMINATION_OUTCOME: 'Sent a determination. Outcome: {submission.determination.clean_outcome}', MESSAGES.INVITED_TO_PROPOSAL: 'Invited to submit a proposal', @@ -154,6 +156,7 @@ class SlackAdapter(AdapterBase): MESSAGES.NEW_SUBMISSION: 'A new submission has been submitted for {submission.page.title}: <{link}|{submission.title}>', MESSAGES.UPDATE_LEAD: 'The lead of <{link}|{submission.title}> has been updated from {old.lead} to {submission.lead} by {user}', MESSAGES.COMMENT: 'A new comment has been posted on <{link}|{submission.title}>', + MESSAGES.EDIT: '{user} has edited <{link}|{submission.title}>', MESSAGES.REVIEWERS_UPDATED: '{user} has updated the reviewers on <{link}|{submission.title}>', MESSAGES.TRANSITION: '{user} has updated the status of <{link}|{submission.title}>: {old_phase.display_name} → {submission.phase}', MESSAGES.DETERMINATION_OUTCOME: 'A determination for <{link}|{submission.title}> was sent by email. Outcome: {submission.determination.clean_outcome}', @@ -226,6 +229,7 @@ class EmailAdapter(AdapterBase): messages = { MESSAGES.NEW_SUBMISSION: 'funds/email/confirmation.html', MESSAGES.COMMENT: 'notify_comment', + MESSAGES.EDIT: 'messages/email/edit.html', MESSAGES.TRANSITION: 'messages/email/transition.html', MESSAGES.DETERMINATION_OUTCOME: 'messages/email/determination.html', MESSAGES.INVITED_TO_PROPOSAL: 'messages/email/invited_to_proposal.html', diff --git a/opentech/apply/activity/templates/messages/email/edit.html b/opentech/apply/activity/templates/messages/email/edit.html new file mode 100644 index 0000000000000000000000000000000000000000..c93d54cbb0b7a119a8cc78296bb8e6ef0e059ec3 --- /dev/null +++ b/opentech/apply/activity/templates/messages/email/edit.html @@ -0,0 +1,5 @@ +{% extends "messages/email/applicant_base.html" %} + +{% block content %} +Your submission has been edited by a member of staff. +{% endblock %} diff --git a/opentech/apply/funds/templates/funds/applicationsubmission_form.html b/opentech/apply/funds/templates/funds/applicationsubmission_form.html index bd994fa916fd4bd2b56c267541babcffa7aa3c8f..066afaeba8b8826abc513d8fbfcc937b1749d214 100644 --- a/opentech/apply/funds/templates/funds/applicationsubmission_form.html +++ b/opentech/apply/funds/templates/funds/applicationsubmission_form.html @@ -34,8 +34,8 @@ {{ field }} {% endif %} {% endfor %} - {% for button_name, button_value in buttons %} - <input class="button button--primary" type="submit" name="{{ button_name }}" value="{{ button_value }}" /> + {% for button_name, button_type, button_value in buttons %} + <input class="button button--{{ button_type }}" type="submit" name="{{ button_name }}" value="{{ button_value }}" /> {% endfor %} </form> </div> diff --git a/opentech/apply/funds/views.py b/opentech/apply/funds/views.py index 8c0e2f5fc91767a46f2a34a847b4fe47a953f283..22016dd49b89abd4958f9a8ea481cafb3bdd0311 100644 --- a/opentech/apply/funds/views.py +++ b/opentech/apply/funds/views.py @@ -271,8 +271,8 @@ class SubmissionEditView(UpdateView): } def buttons(self): - yield ('save', 'Save') - yield from ((transition, transition.title) for transition in self.transitions) + yield ('save', 'white', 'Save') + yield ('submit', 'primary', 'Submit') def get_form_kwargs(self): kwargs = super().get_form_kwargs() @@ -293,13 +293,24 @@ class SubmissionEditView(UpdateView): self.object.create_revision(draft=True, by=self.request.user) return self.form_invalid(form) - action = set(self.request.POST.keys()) & set(self.transitions.keys()) + if 'submit' in self.request.POST and self.request.user.is_staff: + self.object.create_revision(by=self.request.user) + messenger( + MESSAGES.EDIT, + request=self.request, + user=self.request.user, + submission=self.object, + ) + else: + action = set(self.request.POST.keys()) & set(self.transitions.keys()) - transition = self.transitions[action.pop()] - self.object.perform_transition(transition.target, self.request.user, request=self.request) + transition = self.transitions[action.pop()] + self.object.perform_transition(transition.target, self.request.user, request=self.request) return HttpResponseRedirect(self.get_success_url()) + # def get_success_url(self): + @method_decorator(staff_required, name='dispatch') class RevisionListView(ListView):