From 840ea843241e8ee20d5884c2e192e30c93f1b314 Mon Sep 17 00:00:00 2001 From: Gary Reynolds Date: Thu, 20 Nov 2014 17:31:00 +1100 Subject: [PATCH 1/3] Ensure the `Calls.iter` method filters like the `Calls.list` method. --- twilio/rest/resources/calls.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/twilio/rest/resources/calls.py b/twilio/rest/resources/calls.py index 019f7aec7b..e2d060df7e 100644 --- a/twilio/rest/resources/calls.py +++ b/twilio/rest/resources/calls.py @@ -85,6 +85,25 @@ def list(self, from_=None, ended_after=None, kwargs["EndTime"] = parse_date(ended) return self.get_instances(kwargs) + @normalize_dates + def iter(self, from_=None, ended_after=None, + ended_before=None, ended=None, started_before=None, + started_after=None, started=None, **kwargs): + """ + Returns an iterator of :class:`Call` resources. + + :param date after: Only list calls started after this datetime + :param date before: Only list calls started before this datetime + """ + kwargs["from"] = from_ + kwargs["StartTime<"] = started_before + kwargs["StartTime>"] = started_after + kwargs["StartTime"] = parse_date(started) + kwargs["EndTime<"] = ended_before + kwargs["EndTime>"] = ended_after + kwargs["EndTime"] = parse_date(ended) + return super(Calls, self).iter(**kwargs) + def create(self, to, from_, url, status_method=None, **kwargs): """ Make a phone call to a number. From 44429e709c9ac047d7a311dac44dde57d9d2d403 Mon Sep 17 00:00:00 2001 From: Gary Reynolds Date: Fri, 21 Nov 2014 08:09:38 +1100 Subject: [PATCH 2/3] Add test case to ensure filtering is applied on `Calls.iter` method. --- tests/test_calls.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/tests/test_calls.py b/tests/test_calls.py index 04625d270e..e095dd2be6 100644 --- a/tests/test_calls.py +++ b/tests/test_calls.py @@ -43,6 +43,18 @@ def test_paging(mock): mock.assert_called_with("GET", uri, params=exp_params, auth=AUTH) +@patch("twilio.rest.resources.base.make_twilio_request") +def test_paging_iter(mock): + resp = create_mock_json("tests/resources/calls_list.json") + mock.return_value = resp + + uri = "%s/Calls" % (BASE_URI) + list_resource.iter(started_before=date(2010, 12, 5)).next() + exp_params = {'StartTime<': '2010-12-05'} + + mock.assert_called_with("GET", uri, params=exp_params, auth=AUTH) + + @patch("twilio.rest.resources.base.make_twilio_request") def test_get(mock): resp = create_mock_json("tests/resources/calls_instance.json") From e91eeddc1b0eb1a9946b0adc82053f8ee7acb12a Mon Sep 17 00:00:00 2001 From: Gary Reynolds Date: Fri, 21 Nov 2014 08:20:20 +1100 Subject: [PATCH 3/3] Python 3.x compatibility - use built-in. --- tests/test_calls.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_calls.py b/tests/test_calls.py index e095dd2be6..44a64e00df 100644 --- a/tests/test_calls.py +++ b/tests/test_calls.py @@ -49,7 +49,7 @@ def test_paging_iter(mock): mock.return_value = resp uri = "%s/Calls" % (BASE_URI) - list_resource.iter(started_before=date(2010, 12, 5)).next() + next(list_resource.iter(started_before=date(2010, 12, 5))) exp_params = {'StartTime<': '2010-12-05'} mock.assert_called_with("GET", uri, params=exp_params, auth=AUTH)