From 4a75edf5490944ad2ddc7a1ac70747021498e3a2 Mon Sep 17 00:00:00 2001 From: Ryan Petrello Date: Fri, 9 Aug 2019 15:34:16 -0400 Subject: [PATCH] fix a few nits w/ workflow approval activity stream records --- awx/api/serializers.py | 4 ++-- awx/main/access.py | 3 +-- awx/main/models/workflow.py | 16 ++++++++++++---- 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/awx/api/serializers.py b/awx/api/serializers.py index e38a770335..3e217783ea 100644 --- a/awx/api/serializers.py +++ b/awx/api/serializers.py @@ -4755,7 +4755,7 @@ class ActivityStreamSerializer(BaseSerializer): ('o_auth2_application', ('id', 'name', 'description')), ('credential_type', ('id', 'name', 'description', 'kind', 'managed_by_tower')), ('ad_hoc_command', ('id', 'name', 'status', 'limit')), - ('workflow_approval', ('id', 'unified_job_id')), + ('workflow_approval', ('id', 'name', 'unified_job_id')), ] return field_list @@ -4864,7 +4864,7 @@ class ActivityStreamSerializer(BaseSerializer): def _summarize_parent_ujt(self, obj, fk, summary_fields): summary_keys = {'job': 'job_template', 'workflow_job_template_node': 'workflow_job_template', - 'workflow_approval': 'workflow_approval_template', + 'workflow_approval': 'workflow_job_template', 'schedule': 'unified_job_template'} if fk not in summary_keys: return diff --git a/awx/main/access.py b/awx/main/access.py index 59dfbc1b29..270cb9b420 100644 --- a/awx/main/access.py +++ b/awx/main/access.py @@ -2807,8 +2807,7 @@ class WorkflowApprovalAccess(BaseAccess): def can_approve_or_deny(self, obj): if obj.status != 'pending': return False - wfjt = obj.unified_job_node.workflow_job.unified_job_template - if self.user in wfjt.approval_role or self.user.is_superuser: + if self.user in obj.workflow_job_template.approval_role or self.user.is_superuser: return True diff --git a/awx/main/models/workflow.py b/awx/main/models/workflow.py index bd5a2b2d21..65f03abe95 100644 --- a/awx/main/models/workflow.py +++ b/awx/main/models/workflow.py @@ -683,12 +683,14 @@ class WorkflowApproval(UnifiedJob): self.save() changes = model_to_dict(self, model_serializer_mapping()) changes['status']=['pending', 'successful'] - ActivityStream( + activity_entry = ActivityStream( operation='update', object1='workflow_approval', actor=request.user, changes=json.dumps(changes), - ).save() + ) + activity_entry.save() + getattr(activity_entry, 'workflow_approval').add(self.pk) schedule_task_manager() return reverse('api:workflow_approval_approve', kwargs={'pk': self.pk}, request=request) @@ -698,11 +700,17 @@ class WorkflowApproval(UnifiedJob): self.save() changes = model_to_dict(self, model_serializer_mapping()) changes['status']=['pending', 'failed'] - ActivityStream( + activity_entry = ActivityStream( operation='update', object1='workflow_approval', actor=request.user, changes=json.dumps(changes), - ).save() + ) + activity_entry.save() + getattr(activity_entry, 'workflow_approval').add(self.pk) schedule_task_manager() return reverse('api:workflow_approval_deny', kwargs={'pk': self.pk}, request=request) + + @property + def workflow_job_template(self): + return self.unified_job_node.workflow_job.unified_job_template