From a929e82060121371423ced061b10758c905d29cc Mon Sep 17 00:00:00 2001 From: Rebeccah Date: Mon, 19 Oct 2020 14:19:23 -0400 Subject: [PATCH] replacing capabilities prefetch definition with empty braces and removing the dunder. Explanation: Originally _capabilities_prefetch was populated with: ['admin', 'execute', {'copy': ['jobtemplate.project.use', 'jobtemplate.inventory.use', 'organization.workflow_admin']}] This was problematic because it was overwriting the original values that had been defined in the other serializers. Additionally, there are no other dunders for other capabilities prefetch this was likely added because UnifiedJobTemplateSerializer does not have it's own capabilities, but rather derives them from JTSerializer and WFJTSeralizer, but it worked better without the dunder once I removed the data that was overwriting the data from the WFJT and JT serializers. --- awx/api/serializers.py | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/awx/api/serializers.py b/awx/api/serializers.py index 2e70d2c8c9..c626a15e16 100644 --- a/awx/api/serializers.py +++ b/awx/api/serializers.py @@ -453,7 +453,7 @@ class BaseSerializer(serializers.ModelSerializer, metaclass=BaseSerializerMetacl if 'capability_map' not in self.context: if hasattr(self, 'polymorphic_base'): model = self.polymorphic_base.Meta.model - prefetch_list = self.polymorphic_base._capabilities_prefetch + prefetch_list = self.polymorphic_base.capabilities_prefetch else: model = self.Meta.model prefetch_list = self.capabilities_prefetch @@ -640,13 +640,9 @@ class EmptySerializer(serializers.Serializer): class UnifiedJobTemplateSerializer(BaseSerializer): - # As a base serializer, the capabilities prefetch is not used directly - _capabilities_prefetch = [ - 'admin', 'execute', - {'copy': ['jobtemplate.project.use', 'jobtemplate.inventory.use', - 'organization.workflow_admin']} - ] - + # As a base serializer, the capabilities prefetch is not used directly, + # instead they are derived from the Workflow Job Template Serializer and the Job Template Serializer, respectively. + capabilities_prefetch = [] class Meta: model = UnifiedJobTemplate fields = ('*', 'last_job_run', 'last_job_failed', @@ -695,7 +691,7 @@ class UnifiedJobTemplateSerializer(BaseSerializer): serializer.polymorphic_base = self # capabilities prefetch is only valid for these models if isinstance(obj, (JobTemplate, WorkflowJobTemplate)): - serializer.capabilities_prefetch = self._capabilities_prefetch + serializer.capabilities_prefetch = serializer_class.capabilities_prefetch else: serializer.capabilities_prefetch = None return serializer.to_representation(obj)