mirror of
https://github.com/ansible/awx.git
synced 2024-11-01 16:51:11 +03:00
fix bugs with UJT optimizations
This commit is contained in:
parent
0db584e23e
commit
5170fb80dc
@ -428,7 +428,7 @@ class BaseSerializer(serializers.ModelSerializer):
|
|||||||
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
|
||||||
@ -629,7 +629,8 @@ class BaseFactSerializer(BaseSerializer):
|
|||||||
|
|
||||||
|
|
||||||
class UnifiedJobTemplateSerializer(BaseSerializer):
|
class UnifiedJobTemplateSerializer(BaseSerializer):
|
||||||
capabilities_prefetch = [
|
# As a base serializer, the capabilities prefetch is not used directly
|
||||||
|
_capabilities_prefetch = [
|
||||||
'admin', 'execute',
|
'admin', 'execute',
|
||||||
{'copy': ['jobtemplate.project.use', 'jobtemplate.inventory.use',
|
{'copy': ['jobtemplate.project.use', 'jobtemplate.inventory.use',
|
||||||
'workflowjobtemplate.organization.workflow_admin']}
|
'workflowjobtemplate.organization.workflow_admin']}
|
||||||
@ -676,7 +677,9 @@ class UnifiedJobTemplateSerializer(BaseSerializer):
|
|||||||
serializer.parent = self.parent
|
serializer.parent = self.parent
|
||||||
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 not isinstance(obj, (JobTemplate, WorkflowJobTemplate)):
|
if isinstance(obj, (JobTemplate, WorkflowJobTemplate)):
|
||||||
|
serializer.capabilities_prefetch = self._capabilities_prefetch
|
||||||
|
else:
|
||||||
serializer.capabilities_prefetch = None
|
serializer.capabilities_prefetch = None
|
||||||
return serializer.to_representation(obj)
|
return serializer.to_representation(obj)
|
||||||
else:
|
else:
|
||||||
@ -1989,6 +1992,10 @@ class InventorySourceSerializer(UnifiedJobTemplateSerializer, InventorySourceOpt
|
|||||||
last_update_failed = serializers.BooleanField(read_only=True)
|
last_update_failed = serializers.BooleanField(read_only=True)
|
||||||
last_updated = serializers.DateTimeField(read_only=True)
|
last_updated = serializers.DateTimeField(read_only=True)
|
||||||
show_capabilities = ['start', 'schedule', 'edit', 'delete']
|
show_capabilities = ['start', 'schedule', 'edit', 'delete']
|
||||||
|
capabilities_prefetch = [
|
||||||
|
{'admin': 'inventory.admin'},
|
||||||
|
{'start': 'inventory.update'}
|
||||||
|
]
|
||||||
group = serializers.SerializerMethodField(
|
group = serializers.SerializerMethodField(
|
||||||
help_text=_('Automatic group relationship, will be removed in 3.3'))
|
help_text=_('Automatic group relationship, will be removed in 3.3'))
|
||||||
|
|
||||||
|
@ -910,7 +910,8 @@ class InventorySourceAccess(BaseAccess):
|
|||||||
|
|
||||||
model = InventorySource
|
model = InventorySource
|
||||||
select_related = ('created_by', 'modified_by', 'inventory')
|
select_related = ('created_by', 'modified_by', 'inventory')
|
||||||
prefetch_related = ('credentials',)
|
prefetch_related = ('credentials__credential_type', 'last_job',
|
||||||
|
'source_script', 'source_project')
|
||||||
|
|
||||||
def filtered_queryset(self):
|
def filtered_queryset(self):
|
||||||
return self.model.objects.filter(inventory__in=Inventory.accessible_pk_qs(self.user, 'read_role'))
|
return self.model.objects.filter(inventory__in=Inventory.accessible_pk_qs(self.user, 'read_role'))
|
||||||
|
Loading…
Reference in New Issue
Block a user