Refactor InventoryHostsList get_queryset to use getattrd

This commit is contained in:
Wayne Witzel III 2017-08-02 15:13:27 -04:00
parent 7f75ef9ad4
commit eb73248d37
2 changed files with 8 additions and 7 deletions

View File

@ -1961,10 +1961,7 @@ class InventoryHostsList(SubListCreateAttachDetachAPIView):
def get_queryset(self):
inventory = self.get_parent_object()
if inventory.kind == 'smart':
filter_qs = SmartFilter.query_from_string(inventory.host_filter)
return filter_qs.distinct()
return super(InventoryHostsList, self).get_queryset()
return getattrd(inventory, self.relationship).all()
class HostGroupsList(ControlledByScmMixin, SubListCreateAttachDetachAPIView):

View File

@ -17,6 +17,8 @@ from awx.main.models import (
Host,
)
from awx.main.managers import HostManager
@pytest.fixture
def mock_response_new(mocker):
@ -210,10 +212,12 @@ class TestHostInsights():
class TestInventoryHostsList(object):
def test_host_list_smart_inventory(self, mocker):
Inventory = namedtuple('Inventory', ['kind', 'host_filter'])
obj = Inventory(kind='smart', host_filter='localhost')
Inventory = namedtuple('Inventory', ['kind', 'host_filter', 'hosts'])
obj = Inventory(kind='smart', host_filter='localhost', hosts=HostManager())
obj.hosts.instance = obj
with mock.patch.object(InventoryHostsList, 'get_parent_object', return_value=obj):
with mock.patch('awx.api.views.SmartFilter.query_from_string') as mock_query:
with mock.patch('awx.main.utils.filters.SmartFilter.query_from_string') as mock_query:
view = InventoryHostsList()
view.get_queryset()
mock_query.assert_called_once_with('localhost')