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.
This commit is contained in:
Rebeccah
2020-10-19 14:19:23 -04:00
parent cd72bb6cb2
commit a929e82060

View File

@@ -453,7 +453,7 @@ class BaseSerializer(serializers.ModelSerializer, metaclass=BaseSerializerMetacl
if 'capability_map' not in self.context: if 'capability_map' not in self.context:
if hasattr(self, 'polymorphic_base'): if hasattr(self, 'polymorphic_base'):
model = self.polymorphic_base.Meta.model model = self.polymorphic_base.Meta.model
prefetch_list = self.polymorphic_base._capabilities_prefetch prefetch_list = self.polymorphic_base.capabilities_prefetch
else: else:
model = self.Meta.model model = self.Meta.model
prefetch_list = self.capabilities_prefetch prefetch_list = self.capabilities_prefetch
@@ -640,13 +640,9 @@ class EmptySerializer(serializers.Serializer):
class UnifiedJobTemplateSerializer(BaseSerializer): class UnifiedJobTemplateSerializer(BaseSerializer):
# As a base serializer, the capabilities prefetch is not used directly # As a base serializer, the capabilities prefetch is not used directly,
_capabilities_prefetch = [ # instead they are derived from the Workflow Job Template Serializer and the Job Template Serializer, respectively.
'admin', 'execute', capabilities_prefetch = []
{'copy': ['jobtemplate.project.use', 'jobtemplate.inventory.use',
'organization.workflow_admin']}
]
class Meta: class Meta:
model = UnifiedJobTemplate model = UnifiedJobTemplate
fields = ('*', 'last_job_run', 'last_job_failed', fields = ('*', 'last_job_run', 'last_job_failed',
@@ -695,7 +691,7 @@ class UnifiedJobTemplateSerializer(BaseSerializer):
serializer.polymorphic_base = self serializer.polymorphic_base = self
# capabilities prefetch is only valid for these models # capabilities prefetch is only valid for these models
if isinstance(obj, (JobTemplate, WorkflowJobTemplate)): if isinstance(obj, (JobTemplate, WorkflowJobTemplate)):
serializer.capabilities_prefetch = self._capabilities_prefetch serializer.capabilities_prefetch = serializer_class.capabilities_prefetch
else: else:
serializer.capabilities_prefetch = None serializer.capabilities_prefetch = None
return serializer.to_representation(obj) return serializer.to_representation(obj)