From 8e7eb6cfc1609e2396b826bdc45d46fb32c3fbf4 Mon Sep 17 00:00:00 2001 From: Todd Dembrey <todd.dembrey@torchbox.com> Date: Tue, 19 Feb 2019 15:11:16 +0000 Subject: [PATCH] GH-858: Make sure the correct phase is passed to the messaging --- opentech/apply/activity/messaging.py | 6 +++--- opentech/apply/funds/views.py | 11 ++++++----- opentech/apply/funds/workflow.py | 4 ++-- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/opentech/apply/activity/messaging.py b/opentech/apply/activity/messaging.py index dc5e30041..2af8aa9ef 100644 --- a/opentech/apply/activity/messaging.py +++ b/opentech/apply/activity/messaging.py @@ -257,7 +257,7 @@ class ActivityAdapter(AdapterBase): def handle_batch_transition(self, transitions, submissions, **kwargs): kwargs.pop('submission') for submission in submissions: - old_phase = transitions[submission.phase] + old_phase = transitions[submission] return self.handle_transition(old_phase=old_phase, submission=submission, **kwargs) def send_message(self, message, user, submission, submissions, **kwargs): @@ -373,7 +373,7 @@ class SlackAdapter(AdapterBase): submissions_text = [ ': '.join([ self.slack_links(links, [submission]), - f'{transitions[submission.phase].display_name} → {submission.phase}', + f'{transitions[submission].display_name} → {submission.phase}', ]) for submission in submissions ] @@ -482,7 +482,7 @@ class EmailAdapter(AdapterBase): def handle_batch_transition(self, transitions, submissions, **kwargs): kwargs.pop('submission') for submission in submissions: - old_phase = transitions[submission.phase] + old_phase = transitions[submission] return self.render_message( 'messages/email/transition.html', submission=submission, diff --git a/opentech/apply/funds/views.py b/opentech/apply/funds/views.py index b14fbdc52..9e877069e 100644 --- a/opentech/apply/funds/views.py +++ b/opentech/apply/funds/views.py @@ -139,6 +139,7 @@ class BatchProgressSubmissionView(DelegatedViewMixin, FormView): phase_changes = {} for submission in submissions: valid_actions = {action for action, _ in submission.get_actions_for_user(self.request.user)} + old_phase = submission.phase try: transition = (valid_actions & set(transitions)).pop() submission.perform_transition( @@ -150,7 +151,7 @@ class BatchProgressSubmissionView(DelegatedViewMixin, FormView): except (PermissionDenied, KeyError): failed.append(submission) else: - phase_changes[submission.phase] = transitions[transition] + phase_changes[submission] = old_phase if failed: messages.warning( @@ -159,11 +160,12 @@ class BatchProgressSubmissionView(DelegatedViewMixin, FormView): ', '.join(str(submission) for submission in failed) ) + succeeded_submissions = submissions.exclude(id__in=[submission.id for submission in failed]) messenger( MESSAGES.BATCH_TRANSITION, user=self.request.user, request=self.request, - submissions=submissions.exclude(id__in=[submission.id for submission in failed]), + submissions=succeeded_submissions, related=phase_changes, ) @@ -278,15 +280,14 @@ class SubmissionsByStatus(BaseAdminSubmissionsTable, DelegateableListView): BatchProgressSubmissionView, ] - def get(self, request, *args, **kwargs): + def dispatch(self, request, *args, **kwargs): self.status = kwargs.get('status') status_data = self.status_mapping[self.status] self.status_name = status_data['name'] self.statuses = status_data['statuses'] if self.status not in self.status_mapping: raise Http404(_("No statuses match the requested value")) - - return super().get(request, *args, **kwargs) + return super().dispatch(request, *args, **kwargs) def get_filterset_kwargs(self, filterset_class, **kwargs): return super().get_filterset_kwargs(filterset_class, limit_statuses=self.statuses, **kwargs) diff --git a/opentech/apply/funds/workflow.py b/opentech/apply/funds/workflow.py index 93b13acc8..58b017eae 100644 --- a/opentech/apply/funds/workflow.py +++ b/opentech/apply/funds/workflow.py @@ -735,7 +735,7 @@ def get_determination_transitions(): def get_action_mapping(workflow): # Maps action names to the phase they originate from - transitions = defaultdict(lambda: {'display': '', 'transitions': {}}) + transitions = defaultdict(lambda: {'display': '', 'transitions': []}) if workflow: phases = workflow.items() else: @@ -744,7 +744,7 @@ def get_action_mapping(workflow): for transition_name, transition in phase.transitions.items(): transition_display = transition['display'] transition_key = slugify(transition_display) - transitions[transition_key]['transitions'][transition_name] = phase + transitions[transition_key]['transitions'].append(transition_name) transitions[transition_key]['display'] = transition_display return transitions -- GitLab