mirror of
https://github.com/ansible/awx.git
synced 2026-01-15 11:50:42 -03:30
Fix serializers of unified_jobs & ad_hoc_commands to avoid special exceptions
This commit is contained in:
parent
6f63c7ba38
commit
5a4451ddd4
@ -375,7 +375,10 @@ class BaseSerializer(serializers.ModelSerializer):
|
||||
isinstance(obj, Project)):
|
||||
continue
|
||||
|
||||
fkval = getattr(obj, fk, None)
|
||||
try:
|
||||
fkval = getattr(obj, fk, None)
|
||||
except ObjectDoesNotExist:
|
||||
continue
|
||||
if fkval is None:
|
||||
continue
|
||||
if fkval == obj:
|
||||
@ -3430,10 +3433,10 @@ class AdHocCommandSerializer(UnifiedJobSerializer):
|
||||
|
||||
def get_related(self, obj):
|
||||
res = super(AdHocCommandSerializer, self).get_related(obj)
|
||||
if obj.inventory:
|
||||
res['inventory'] = self.reverse('api:inventory_detail', kwargs={'pk': obj.inventory.pk})
|
||||
if obj.credential:
|
||||
res['credential'] = self.reverse('api:credential_detail', kwargs={'pk': obj.credential.pk})
|
||||
if obj.inventory_id:
|
||||
res['inventory'] = self.reverse('api:inventory_detail', kwargs={'pk': obj.inventory_id})
|
||||
if obj.credential_id:
|
||||
res['credential'] = self.reverse('api:credential_detail', kwargs={'pk': obj.credential_id})
|
||||
res.update(dict(
|
||||
events = self.reverse('api:ad_hoc_command_ad_hoc_command_events_list', kwargs={'pk': obj.pk}),
|
||||
activity_stream = self.reverse('api:ad_hoc_command_activity_stream_list', kwargs={'pk': obj.pk}),
|
||||
@ -3445,9 +3448,9 @@ class AdHocCommandSerializer(UnifiedJobSerializer):
|
||||
|
||||
def to_representation(self, obj):
|
||||
ret = super(AdHocCommandSerializer, self).to_representation(obj)
|
||||
if 'inventory' in ret and not obj.inventory:
|
||||
if 'inventory' in ret and not obj.inventory_id:
|
||||
ret['inventory'] = None
|
||||
if 'credential' in ret and not obj.credential:
|
||||
if 'credential' in ret and not obj.credential_id:
|
||||
ret['credential'] = None
|
||||
# For the UI, only module_name is returned for name, instead of the
|
||||
# longer module name + module_args format.
|
||||
|
||||
@ -391,21 +391,24 @@ class BaseAccess(object):
|
||||
return user_capabilities
|
||||
|
||||
def get_method_capability(self, method, obj, parent_obj):
|
||||
if method in ['change']: # 3 args
|
||||
return self.can_change(obj, {})
|
||||
elif method in ['delete', 'run_ad_hoc_commands', 'copy']:
|
||||
access_method = getattr(self, "can_%s" % method)
|
||||
return access_method(obj)
|
||||
elif method in ['start']:
|
||||
return self.can_start(obj, validate_license=False)
|
||||
elif method in ['attach', 'unattach']: # parent/sub-object call
|
||||
access_method = getattr(self, "can_%s" % method)
|
||||
if type(parent_obj) == Team:
|
||||
relationship = 'parents'
|
||||
parent_obj = parent_obj.member_role
|
||||
else:
|
||||
relationship = 'members'
|
||||
return access_method(obj, parent_obj, relationship, skip_sub_obj_read_check=True, data={})
|
||||
try:
|
||||
if method in ['change']: # 3 args
|
||||
return self.can_change(obj, {})
|
||||
elif method in ['delete', 'run_ad_hoc_commands', 'copy']:
|
||||
access_method = getattr(self, "can_%s" % method)
|
||||
return access_method(obj)
|
||||
elif method in ['start']:
|
||||
return self.can_start(obj, validate_license=False)
|
||||
elif method in ['attach', 'unattach']: # parent/sub-object call
|
||||
access_method = getattr(self, "can_%s" % method)
|
||||
if type(parent_obj) == Team:
|
||||
relationship = 'parents'
|
||||
parent_obj = parent_obj.member_role
|
||||
else:
|
||||
relationship = 'members'
|
||||
return access_method(obj, parent_obj, relationship, skip_sub_obj_read_check=True, data={})
|
||||
except (ParseError, ObjectDoesNotExist):
|
||||
return False
|
||||
return False
|
||||
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user