mirror of
https://github.com/ansible/awx.git
synced 2026-01-12 18:40:01 -03:30
wrap up some more implementation, and get caching seriously working
This commit is contained in:
parent
953b192ff8
commit
fa08c8d4bb
@ -2153,7 +2153,6 @@ class AdHocCommandRelaunchSerializer(AdHocCommandSerializer):
|
||||
|
||||
|
||||
class SystemJobTemplateSerializer(UnifiedJobTemplateSerializer):
|
||||
show_capabilities = ['start', 'schedule', 'edit']
|
||||
|
||||
class Meta:
|
||||
model = SystemJobTemplate
|
||||
|
||||
@ -1528,10 +1528,9 @@ class InventoryList(ListCreateAPIView):
|
||||
readable_ids = [obj.id for obj in page]
|
||||
editable_ids = Inventory.accessible_objects(request.user, 'admin_role').filter(pk__in=readable_ids).values_list('pk', flat=True)
|
||||
for obj in page:
|
||||
obj.capabilities_cache = {'edit': False, 'adhoc': False}
|
||||
if obj.pk in editable_ids:
|
||||
obj.can_edit = True
|
||||
else:
|
||||
obj.can_edit = False
|
||||
obj.capabilities_cache['edit'] = True
|
||||
if page is not None:
|
||||
serializer = self.get_serializer(page, many=True)
|
||||
return self.get_paginated_response(serializer.data)
|
||||
|
||||
@ -219,18 +219,18 @@ class BaseAccess(object):
|
||||
elif "features" not in validation_info:
|
||||
raise LicenseForbids("Features not found in active license.")
|
||||
|
||||
def get_user_capabilities(self, obj, method_list=['edit', 'delete']):
|
||||
def get_user_capabilities(self, obj, method_list):
|
||||
user_capabilities = {}
|
||||
|
||||
# TODO: pull data from the custom cache, which won't be exactly like this
|
||||
# if hasattr(obj, 'get_can_edit'):
|
||||
# user_capabilities['change'] = obj.get_can_edit(self.user)
|
||||
# elif hasattr(obj, 'can_edit'):
|
||||
# user_capabilities['change'] = obj.can_edit
|
||||
|
||||
for display_method in ['edit', 'delete', 'start', 'schedule', 'copy']:
|
||||
for display_method in ['edit', 'delete', 'start', 'schedule', 'copy', 'adhoc']:
|
||||
# Custom ordering of methods used so we can reuse earlier calcs
|
||||
if display_method not in method_list:
|
||||
print ' Programming error: declared unavailable method'
|
||||
continue
|
||||
|
||||
# Grab the answer from the cache, if available
|
||||
if hasattr(obj, 'capabilities_cache') and display_method in obj.capabilities_cache:
|
||||
user_capabilities[display_method] = obj.capabilities_cache[display_method]
|
||||
continue
|
||||
|
||||
# Aliases for going form UI language to API language
|
||||
@ -245,6 +245,8 @@ class BaseAccess(object):
|
||||
elif display_method == 'delete' and not isinstance(obj, (User, UnifiedJob)):
|
||||
user_capabilities['delete'] = user_capabilities['edit']
|
||||
continue
|
||||
elif display_method == 'adhoc':
|
||||
method = 'run_ad_hoc_commands'
|
||||
else:
|
||||
method = display_method
|
||||
|
||||
@ -268,7 +270,7 @@ class BaseAccess(object):
|
||||
try:
|
||||
if method in ['change']: # 3 args
|
||||
user_capabilities[display_method] = self.user.can_access(type(obj), method, obj, data)
|
||||
elif method in ['delete', 'start']: # 2 args
|
||||
elif method in ['delete', 'start', 'adhoc']: # 2 args
|
||||
user_capabilities[display_method] = self.user.can_access(type(obj), method, obj)
|
||||
elif method in ['add']: # 2 args with data
|
||||
user_capabilities[display_method] = self.user.can_access(type(obj), method, data)
|
||||
|
||||
@ -325,9 +325,6 @@ class Project(UnifiedJobTemplate, ProjectOptions, ResourceMixin):
|
||||
kwargs['scm_delete_on_update'] = True
|
||||
return kwargs
|
||||
|
||||
def get_can_edit(self, user):
|
||||
return user in self.admin_role
|
||||
|
||||
def create_project_update(self, **kwargs):
|
||||
return self.create_unified_job(**kwargs)
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user