mirror of
https://github.com/ansible/awx.git
synced 2026-05-07 01:17:37 -02:30
polishing of some remaining bugs
This commit is contained in:
@@ -503,7 +503,6 @@ class BaseFactSerializer(BaseSerializer):
|
|||||||
return ret
|
return ret
|
||||||
|
|
||||||
class UnifiedJobTemplateSerializer(BaseSerializer):
|
class UnifiedJobTemplateSerializer(BaseSerializer):
|
||||||
show_capabilities = ['start', 'delete']
|
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = UnifiedJobTemplate
|
model = UnifiedJobTemplate
|
||||||
@@ -545,6 +544,7 @@ class UnifiedJobTemplateSerializer(BaseSerializer):
|
|||||||
|
|
||||||
|
|
||||||
class UnifiedJobSerializer(BaseSerializer):
|
class UnifiedJobSerializer(BaseSerializer):
|
||||||
|
show_capabilities = ['start', 'delete']
|
||||||
|
|
||||||
result_stdout = serializers.SerializerMethodField()
|
result_stdout = serializers.SerializerMethodField()
|
||||||
|
|
||||||
@@ -1286,6 +1286,7 @@ class GroupVariableDataSerializer(BaseVariableDataSerializer):
|
|||||||
class CustomInventoryScriptSerializer(BaseSerializer):
|
class CustomInventoryScriptSerializer(BaseSerializer):
|
||||||
|
|
||||||
script = serializers.CharField(trim_whitespace=False)
|
script = serializers.CharField(trim_whitespace=False)
|
||||||
|
show_capabilities = ['edit', 'delete']
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = CustomInventoryScript
|
model = CustomInventoryScript
|
||||||
|
|||||||
@@ -234,6 +234,7 @@ class BaseAccess(object):
|
|||||||
continue
|
continue
|
||||||
|
|
||||||
# Aliases for going form UI language to API language
|
# Aliases for going form UI language to API language
|
||||||
|
# speedups in certain cases by deferring to earlier property
|
||||||
if display_method == 'edit':
|
if display_method == 'edit':
|
||||||
method = 'change'
|
method = 'change'
|
||||||
elif display_method == 'copy':
|
elif display_method == 'copy':
|
||||||
@@ -241,7 +242,7 @@ class BaseAccess(object):
|
|||||||
elif display_method == 'schedule' and 'edit' in user_capabilities:
|
elif display_method == 'schedule' and 'edit' in user_capabilities:
|
||||||
user_capabilities['schedule'] = user_capabilities['edit']
|
user_capabilities['schedule'] = user_capabilities['edit']
|
||||||
continue
|
continue
|
||||||
elif display_method == 'delete' and not isinstance(obj, User):
|
elif display_method == 'delete' and not isinstance(obj, (User, UnifiedJob)):
|
||||||
user_capabilities['delete'] = user_capabilities['edit']
|
user_capabilities['delete'] = user_capabilities['edit']
|
||||||
continue
|
continue
|
||||||
else:
|
else:
|
||||||
@@ -265,15 +266,12 @@ class BaseAccess(object):
|
|||||||
data = {'reference_obj': obj}
|
data = {'reference_obj': obj}
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
if method in ['change']: # 3 args
|
||||||
if method in ['change', 'start']: # 3 args
|
|
||||||
user_capabilities[display_method] = self.user.can_access(type(obj), method, obj, data)
|
user_capabilities[display_method] = self.user.can_access(type(obj), method, obj, data)
|
||||||
elif method in ['delete']: # 2 args
|
elif method in ['delete', 'start']: # 2 args
|
||||||
user_capabilities[display_method] = self.user.can_access(type(obj), method, obj)
|
user_capabilities[display_method] = self.user.can_access(type(obj), method, obj)
|
||||||
elif method in ['add']: # 2 args with data
|
elif method in ['add']: # 2 args with data
|
||||||
user_capabilities[display_method] = self.user.can_access(type(obj), method, data)
|
user_capabilities[display_method] = self.user.can_access(type(obj), method, data)
|
||||||
|
|
||||||
|
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
user_capabilities[display_method] = False
|
user_capabilities[display_method] = False
|
||||||
print(exc)
|
print(exc)
|
||||||
@@ -888,6 +886,12 @@ class ProjectUpdateAccess(BaseAccess):
|
|||||||
# Project updates cascade delete with project, admin role descends from org admin
|
# Project updates cascade delete with project, admin role descends from org admin
|
||||||
return self.user in obj.project.admin_role
|
return self.user in obj.project.admin_role
|
||||||
|
|
||||||
|
def can_start(self, obj):
|
||||||
|
# for relaunching
|
||||||
|
if obj and obj.project:
|
||||||
|
return self.user in obj.project.update_role
|
||||||
|
return False
|
||||||
|
|
||||||
@check_superuser
|
@check_superuser
|
||||||
def can_delete(self, obj):
|
def can_delete(self, obj):
|
||||||
return obj and self.user in obj.project.admin_role
|
return obj and self.user in obj.project.admin_role
|
||||||
|
|||||||
Reference in New Issue
Block a user