From f2846101a314601d542ace8846a7b32b235b47f7 Mon Sep 17 00:00:00 2001 From: AlanCoding Date: Sat, 5 Nov 2016 14:24:04 -0400 Subject: [PATCH] deal with a special null null case --- awx/main/access.py | 4 +--- awx/main/tests/unit/test_access.py | 8 ++++++++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/awx/main/access.py b/awx/main/access.py index 021ef309ab..8f77698791 100644 --- a/awx/main/access.py +++ b/awx/main/access.py @@ -207,7 +207,6 @@ class BaseAccess(object): ''' new = None changed = True - is_removal = False if data and 'reference_obj' in data: # Use reference object's related fields, if given new = getattr(data['reference_obj'], field) @@ -218,7 +217,6 @@ class BaseAccess(object): new = raw_value elif raw_value is None: new = None - is_removal = True else: try: new_pk = int(raw_value) @@ -238,7 +236,7 @@ class BaseAccess(object): if obj and (changed or mandatory): current = getattr(obj, field) - if obj and new == current and (not is_removal): + if obj and new == current: # Resource not changed, like a PUT request changed = False diff --git a/awx/main/tests/unit/test_access.py b/awx/main/tests/unit/test_access.py index d2b2412ca0..10b2328033 100644 --- a/awx/main/tests/unit/test_access.py +++ b/awx/main/tests/unit/test_access.py @@ -101,6 +101,14 @@ class TestRelatedFieldAccess: assert not access.check_related( 'related', mocker.MagicMock, data, obj=resource_bad) + def test_existing_not_null_null(self, access, bad_role, mocker): + resource = mocker.MagicMock(related=None) + data = {'related': None} + # Not changing anything by giving null when it is already-null + # important for PUT requests + assert access.check_related( + 'related', mocker.MagicMock, data, obj=resource, mandatory=True) + @pytest.fixture def job_template_with_ids(job_template_factory): # Create non-persisted objects with IDs to send to job_template_factory