From d734145c38d8129c2864c311db0e01e263ab6007 Mon Sep 17 00:00:00 2001 From: AlanCoding Date: Mon, 3 Oct 2016 11:41:42 -0400 Subject: [PATCH] start capability to return False for manual projects --- awx/main/access.py | 4 ++++ awx/main/tests/functional/api/test_rbac_displays.py | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/awx/main/access.py b/awx/main/access.py index 2be67f0849..4b67473205 100644 --- a/awx/main/access.py +++ b/awx/main/access.py @@ -264,6 +264,10 @@ class BaseAccess(object): elif display_method == 'copy' and isinstance(obj, (Group, Host)): user_capabilities['copy'] = user_capabilities['edit'] continue + elif display_method == 'start' and isinstance(obj, (Project)) and obj.scm_type == '': + # Special case to return False for a manual project + user_capabilities['start'] = False + continue # Preprocessing before the access method is called data = {} diff --git a/awx/main/tests/functional/api/test_rbac_displays.py b/awx/main/tests/functional/api/test_rbac_displays.py index 45b4a8f832..30ad16fe5f 100644 --- a/awx/main/tests/functional/api/test_rbac_displays.py +++ b/awx/main/tests/functional/api/test_rbac_displays.py @@ -309,6 +309,11 @@ def test_prefetch_jt_copy_capability(job_template, project, inventory, machine_c ]}], JobTemplate, rando) assert qs[0].capabilities_cache == {'copy': True} +@pytest.mark.django_db +def test_manual_projects_no_update(project, get, admin_user): + response = get(reverse('api:project_detail', args=[project.pk]), admin_user, expect=200) + assert not response.data['summary_fields']['user_capabilities']['start'] + @pytest.mark.django_db def test_group_update_capabilities_possible(group, inventory_source, admin_user): group.inventory_source = inventory_source