Merge pull request #4648 from rebeccahhh/non_admin_jt_copy

Allow user to copy job templates as permissions intended
This commit is contained in:
Ryan Petrello
2020-10-30 15:46:58 -04:00
committed by GitHub

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)