From ca338951570d170d7df4d65b58b74c2a31647a67 Mon Sep 17 00:00:00 2001 From: bartonip Date: Wed, 19 Aug 2020 09:44:41 +0000 Subject: [PATCH 1/4] Implement filter by ids --- tests/manager.py | 17 +++++++++++++++++ xero/basemanager.py | 5 +++++ 2 files changed, 22 insertions(+) diff --git a/tests/manager.py b/tests/manager.py index a9bd2de1..fd24a66e 100644 --- a/tests/manager.py +++ b/tests/manager.py @@ -249,6 +249,23 @@ def test_filter(self): self.assertEqual(params, {"where": 'AmountPaid=="0.0"'}) + def test_filter(self): + """The filter function should correctly handle various arguments""" + credentials = Mock(base_url="") + manager = Manager("contacts", credentials) + + uri, params, method, body, headers, singleobject = manager._filter( + IDs="1,2,3,4,5" + ) + + self.assertEqual(method, "get") + self.assertFalse(singleobject) + + expected_params = { + "IDs": "1,2,3,4,5" + } + self.assertEqual(params, expected_params) + def test_rawfilter(self): """The filter function should correctly handle various arguments""" credentials = Mock(base_url="") diff --git a/xero/basemanager.py b/xero/basemanager.py index fbe4843e..a3e8e78b 100644 --- a/xero/basemanager.py +++ b/xero/basemanager.py @@ -374,6 +374,11 @@ def _filter(self, **kwargs): headers = self.prepare_filtering_date(val) del kwargs["since"] + # Accept IDs parameter for Invoices and Contacts endpoints + if "IDs" in kwargs: + params["IDs"] = kwargs["IDs"] + del kwargs["IDs"] + def get_filter_params(key, value): last_key = key.split("_")[-1] if last_key.endswith("ID"): From b6e8a71fe2b4b2cf093e701e20c544dbeb89b442 Mon Sep 17 00:00:00 2001 From: bartonip Date: Wed, 19 Aug 2020 09:50:42 +0000 Subject: [PATCH 2/4] Fixed test name --- tests/manager.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/manager.py b/tests/manager.py index fd24a66e..43ede3ac 100644 --- a/tests/manager.py +++ b/tests/manager.py @@ -249,7 +249,7 @@ def test_filter(self): self.assertEqual(params, {"where": 'AmountPaid=="0.0"'}) - def test_filter(self): + def test_filter_ids(self): """The filter function should correctly handle various arguments""" credentials = Mock(base_url="") manager = Manager("contacts", credentials) From 9b7033137e86c5f1a2ade7e6915c1c0a5b8e8369 Mon Sep 17 00:00:00 2001 From: bartonip Date: Thu, 27 Aug 2020 08:50:35 +0000 Subject: [PATCH 3/4] Make IDs take a list of IDs --- tests/manager.py | 2 +- xero/basemanager.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/manager.py b/tests/manager.py index 43ede3ac..95974803 100644 --- a/tests/manager.py +++ b/tests/manager.py @@ -255,7 +255,7 @@ def test_filter_ids(self): manager = Manager("contacts", credentials) uri, params, method, body, headers, singleobject = manager._filter( - IDs="1,2,3,4,5" + IDs=["1","2","3","4","5"] ) self.assertEqual(method, "get") diff --git a/xero/basemanager.py b/xero/basemanager.py index a3e8e78b..91118baa 100644 --- a/xero/basemanager.py +++ b/xero/basemanager.py @@ -376,7 +376,7 @@ def _filter(self, **kwargs): # Accept IDs parameter for Invoices and Contacts endpoints if "IDs" in kwargs: - params["IDs"] = kwargs["IDs"] + params["IDs"] = ",".join(kwargs["IDs"]) del kwargs["IDs"] def get_filter_params(key, value): From c10239c45062889d79ca38061a19843909dbf07b Mon Sep 17 00:00:00 2001 From: bartonip Date: Thu, 27 Aug 2020 08:52:11 +0000 Subject: [PATCH 4/4] Code style fixes --- tests/manager.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/manager.py b/tests/manager.py index 95974803..8b6839ea 100644 --- a/tests/manager.py +++ b/tests/manager.py @@ -255,7 +255,7 @@ def test_filter_ids(self): manager = Manager("contacts", credentials) uri, params, method, body, headers, singleobject = manager._filter( - IDs=["1","2","3","4","5"] + IDs=["1", "2", "3", "4", "5"] ) self.assertEqual(method, "get")