From 1037556152eb1e810ca110cc40afc73929f67ddf Mon Sep 17 00:00:00 2001 From: Ilya Tumash Date: Mon, 5 Jun 2017 20:36:04 +0300 Subject: [PATCH 1/4] fix request data bug with PUT and DELETE --- admitad/transport.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/admitad/transport.py b/admitad/transport.py index 849ea09..bb3d1de 100644 --- a/admitad/transport.py +++ b/admitad/transport.py @@ -70,9 +70,9 @@ def prepare_request_data(data=None, headers=None, method='GET', prepared_data = prepare_data(data) - if method == 'POST': + if method in ['POST', 'PUT']: kwargs['data'] = prepared_data - if method == 'GET': + if method in ['GET', 'DELETE']: kwargs['params'] = prepared_data return kwargs From f84ba6664e985c2b7cf545ffc46a0fa6bc7b03aa Mon Sep 17 00:00:00 2001 From: Ilya Tumash Date: Mon, 5 Jun 2017 20:36:36 +0300 Subject: [PATCH 2/4] add LostOrders appeal_id and appeal_status --- admitad/items/lost_orders.py | 46 +++++++++++++++++++++++++++++++++++- 1 file changed, 45 insertions(+), 1 deletion(-) diff --git a/admitad/items/lost_orders.py b/admitad/items/lost_orders.py index f113c68..384d2b4 100644 --- a/admitad/items/lost_orders.py +++ b/admitad/items/lost_orders.py @@ -20,11 +20,34 @@ class LostOrders(Item): def get(self, **kwargs): """ Args: + campaign (id) + website (id) + status (string) + start_date (date) + end_date (date) + appeal_id (string) + appeal_status (string) limit (int) offset (int) """ - return self.transport.get().set_pagination(**kwargs).request(url=self.URL) + filtering = { + 'filter_by': kwargs, + 'available': { + 'campaign': lambda x: Item.sanitize_integer_value(x, 'campaign', blank=True), + 'website': lambda x: Item.sanitize_integer_value(x, 'website', blank=True), + 'status': lambda x: Item.sanitize_string_value(x, 'status', blank=True), + 'start_date': lambda x: Item.sanitize_string_value(x, 'start_date', blank=True), + 'end_date': lambda x: Item.sanitize_string_value(x, 'end_date', blank=True), + 'appeal_id': lambda x: Item.sanitize_string_value(x, 'appeal_id', blank=True), + 'appeal_status': lambda x: Item.sanitize_string_value(x, 'appeal_status', blank=True), + } + } + + return self.transport.get() \ + .set_filtering(filtering) \ + .set_pagination(**kwargs) \ + .request(url=self.URL) def getOne(self, lost_order_id): """ @@ -46,6 +69,7 @@ class LostOrdersManager(Item): DELETE_URL = Item.prepare_url('lost_orders/%(lost_order_id)s/decline') CREATE_URL = Item.prepare_url('lost_orders/create') + UPDATE_URL = Item.prepare_url('lost_orders/%(lost_order_id)s/update') CREATE_FIELDS = { 'campaign': lambda x: Item.sanitize_integer_value(x, 'campaign'), @@ -54,6 +78,7 @@ class LostOrdersManager(Item): 'order_date': lambda x: Item.sanitize_date(x, 'order_date'), 'order_price': lambda x: Item.sanitize_float_value(x, 'order_price'), 'comment': lambda x: Item.sanitize_string_value(x, 'comment'), + 'appeal_id': lambda x: Item.sanitize_string_value(x, 'appeal_id'), } def delete(self, lost_order_id): @@ -78,6 +103,7 @@ def create(self, attachments, **kwargs): order_id (str) order_date (date) order_price (float) + appeal_id (str) comment (str) """ @@ -85,3 +111,21 @@ def create(self, attachments, **kwargs): files = [('attachment', open(item, 'rb')) for item in Item.sanitize_string_array(attachments, 'attachments')] return self.transport.post().set_data(data).set_files(files).request(url=self.CREATE_URL) + + def update(self, lost_order_id, appeal_status): + """ + Args: + lost_order_id (int) + appeal_status (str) + + """ + request_data = { + 'url': self.UPDATE_URL, + 'lost_order_id': Item.sanitize_id(lost_order_id), + } + + data = { + 'appeal_status': self.sanitize_string_value(appeal_status, 'appeal_status'), + } + + return self.transport.put().set_data(data).request(**request_data) From ec7ba74f4fc89637439a37d87bc10d0650bbdf3b Mon Sep 17 00:00:00 2001 From: Ilya Tumash Date: Mon, 5 Jun 2017 20:36:50 +0300 Subject: [PATCH 3/4] add tests and examples --- README.md | 3 ++- admitad/tests/test_lost_orders.py | 25 ++++++++++++++++++++++--- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 1173efe..aa14f44 100644 --- a/README.md +++ b/README.md @@ -470,7 +470,7 @@ res = client.ActionOptCodesManager.update( ```python res = client.LostOrders.get() -res = client.LostOrders.get(limit=20, offset=0) +res = client.LostOrders.get(limit=20, offset=0, appeal_status='processing') res = client.LostOrders.getOne(76) ``` @@ -483,6 +483,7 @@ res = client.LostOrdersManager.create( order_id='039NRUHFJEW', order_date='12.08.2016', order_price=345.77, comment='some comment' ) +res = client.LostOrdersManager.update(77, appeal_status='resolved') res = client.LostOrdersManager.delete(77) ``` diff --git a/admitad/tests/test_lost_orders.py b/admitad/tests/test_lost_orders.py index 283d799..d7e3170 100644 --- a/admitad/tests/test_lost_orders.py +++ b/admitad/tests/test_lost_orders.py @@ -16,7 +16,8 @@ def test_get_lost_orders_request(self): resp.GET, self.prepare_url(LostOrders.URL, params={ 'limit': 20, - 'offset': 1 + 'offset': 1, + 'appeal_status': 'resolved', }), match_querystring=True, json={'status': 'ok'}, @@ -24,7 +25,8 @@ def test_get_lost_orders_request(self): ) result = self.client.LostOrders.get( limit=20, - offset=1 + offset=1, + appeal_status='resolved' ) self.assertIn('status', result) @@ -61,7 +63,24 @@ def test_create_lost_order(self): order_id='asd3f3', order_date='01.01.2010', order_price=1200, - comment='foo bar baz' + comment='foo bar baz', + appeal_id='foo' + ) + + self.assertIn('status', result) + + def test_update_lost_order(self): + with responses.RequestsMock() as resp: + resp.add( + resp.PUT, + self.prepare_url(LostOrdersManager.UPDATE_URL, lost_order_id=10), + match_querystring=True, + json={'status': 'ok'}, + status=200, + ) + result = self.client.LostOrdersManager.update( + lost_order_id=10, + appeal_status='resolved' ) self.assertIn('status', result) From f0daf3d1740871156e4ba2e5c7d8bac2d7030f46 Mon Sep 17 00:00:00 2001 From: Ilya Tumash Date: Mon, 5 Jun 2017 20:37:04 +0300 Subject: [PATCH 4/4] v1.2.0 --- setup.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/setup.py b/setup.py index 7b1ede8..5c1e859 100644 --- a/setup.py +++ b/setup.py @@ -3,13 +3,13 @@ setup( name="admitad", packages=['admitad', 'admitad.items'], - version='1.1.1', + version='1.2.0', author='Admitad Dev Bot', author_email='dev@admitad.com', description='A Python wrapper around the Admitad API', license='MIT', url='https://github.com/admitad/admitad-python-api', - download_url='https://github.com/admitad/admitad-python-api/tarball/1.1.1', + download_url='https://github.com/admitad/admitad-python-api/tarball/1.2.0', keywords=['admitad'], install_requires=['requests>=2.0', 'future'], tests_require=['nose2', 'responses'],