Skip to content

Commit 8b5875f

Browse files
authored
Merge pull request #2 from admitad/develop
LostOrders appeal_id and appeal_status, bugs, tests
2 parents a3a321c + f0daf3d commit 8b5875f

File tree

5 files changed

+73
-9
lines changed

5 files changed

+73
-9
lines changed

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -470,7 +470,7 @@ res = client.ActionOptCodesManager.update(
470470

471471
```python
472472
res = client.LostOrders.get()
473-
res = client.LostOrders.get(limit=20, offset=0)
473+
res = client.LostOrders.get(limit=20, offset=0, appeal_status='processing')
474474
res = client.LostOrders.getOne(76)
475475
```
476476

@@ -483,6 +483,7 @@ res = client.LostOrdersManager.create(
483483
order_id='039NRUHFJEW', order_date='12.08.2016', order_price=345.77,
484484
comment='some comment'
485485
)
486+
res = client.LostOrdersManager.update(77, appeal_status='resolved')
486487
res = client.LostOrdersManager.delete(77)
487488
```
488489

admitad/items/lost_orders.py

Lines changed: 45 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,34 @@ class LostOrders(Item):
2020
def get(self, **kwargs):
2121
"""
2222
Args:
23+
campaign (id)
24+
website (id)
25+
status (string)
26+
start_date (date)
27+
end_date (date)
28+
appeal_id (string)
29+
appeal_status (string)
2330
limit (int)
2431
offset (int)
2532
2633
"""
27-
return self.transport.get().set_pagination(**kwargs).request(url=self.URL)
34+
filtering = {
35+
'filter_by': kwargs,
36+
'available': {
37+
'campaign': lambda x: Item.sanitize_integer_value(x, 'campaign', blank=True),
38+
'website': lambda x: Item.sanitize_integer_value(x, 'website', blank=True),
39+
'status': lambda x: Item.sanitize_string_value(x, 'status', blank=True),
40+
'start_date': lambda x: Item.sanitize_string_value(x, 'start_date', blank=True),
41+
'end_date': lambda x: Item.sanitize_string_value(x, 'end_date', blank=True),
42+
'appeal_id': lambda x: Item.sanitize_string_value(x, 'appeal_id', blank=True),
43+
'appeal_status': lambda x: Item.sanitize_string_value(x, 'appeal_status', blank=True),
44+
}
45+
}
46+
47+
return self.transport.get() \
48+
.set_filtering(filtering) \
49+
.set_pagination(**kwargs) \
50+
.request(url=self.URL)
2851

2952
def getOne(self, lost_order_id):
3053
"""
@@ -46,6 +69,7 @@ class LostOrdersManager(Item):
4669

4770
DELETE_URL = Item.prepare_url('lost_orders/%(lost_order_id)s/decline')
4871
CREATE_URL = Item.prepare_url('lost_orders/create')
72+
UPDATE_URL = Item.prepare_url('lost_orders/%(lost_order_id)s/update')
4973

5074
CREATE_FIELDS = {
5175
'campaign': lambda x: Item.sanitize_integer_value(x, 'campaign'),
@@ -54,6 +78,7 @@ class LostOrdersManager(Item):
5478
'order_date': lambda x: Item.sanitize_date(x, 'order_date'),
5579
'order_price': lambda x: Item.sanitize_float_value(x, 'order_price'),
5680
'comment': lambda x: Item.sanitize_string_value(x, 'comment'),
81+
'appeal_id': lambda x: Item.sanitize_string_value(x, 'appeal_id'),
5782
}
5883

5984
def delete(self, lost_order_id):
@@ -78,10 +103,29 @@ def create(self, attachments, **kwargs):
78103
order_id (str)
79104
order_date (date)
80105
order_price (float)
106+
appeal_id (str)
81107
comment (str)
82108
83109
"""
84110
data = Item.sanitize_fields(self.CREATE_FIELDS, **kwargs)
85111
files = [('attachment', open(item, 'rb')) for item in Item.sanitize_string_array(attachments, 'attachments')]
86112

87113
return self.transport.post().set_data(data).set_files(files).request(url=self.CREATE_URL)
114+
115+
def update(self, lost_order_id, appeal_status):
116+
"""
117+
Args:
118+
lost_order_id (int)
119+
appeal_status (str)
120+
121+
"""
122+
request_data = {
123+
'url': self.UPDATE_URL,
124+
'lost_order_id': Item.sanitize_id(lost_order_id),
125+
}
126+
127+
data = {
128+
'appeal_status': self.sanitize_string_value(appeal_status, 'appeal_status'),
129+
}
130+
131+
return self.transport.put().set_data(data).request(**request_data)

admitad/tests/test_lost_orders.py

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,17 @@ def test_get_lost_orders_request(self):
1616
resp.GET,
1717
self.prepare_url(LostOrders.URL, params={
1818
'limit': 20,
19-
'offset': 1
19+
'offset': 1,
20+
'appeal_status': 'resolved',
2021
}),
2122
match_querystring=True,
2223
json={'status': 'ok'},
2324
status=200,
2425
)
2526
result = self.client.LostOrders.get(
2627
limit=20,
27-
offset=1
28+
offset=1,
29+
appeal_status='resolved'
2830
)
2931

3032
self.assertIn('status', result)
@@ -61,7 +63,24 @@ def test_create_lost_order(self):
6163
order_id='asd3f3',
6264
order_date='01.01.2010',
6365
order_price=1200,
64-
comment='foo bar baz'
66+
comment='foo bar baz',
67+
appeal_id='foo'
68+
)
69+
70+
self.assertIn('status', result)
71+
72+
def test_update_lost_order(self):
73+
with responses.RequestsMock() as resp:
74+
resp.add(
75+
resp.PUT,
76+
self.prepare_url(LostOrdersManager.UPDATE_URL, lost_order_id=10),
77+
match_querystring=True,
78+
json={'status': 'ok'},
79+
status=200,
80+
)
81+
result = self.client.LostOrdersManager.update(
82+
lost_order_id=10,
83+
appeal_status='resolved'
6584
)
6685

6786
self.assertIn('status', result)

admitad/transport.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,9 +70,9 @@ def prepare_request_data(data=None, headers=None, method='GET',
7070

7171
prepared_data = prepare_data(data)
7272

73-
if method == 'POST':
73+
if method in ['POST', 'PUT']:
7474
kwargs['data'] = prepared_data
75-
if method == 'GET':
75+
if method in ['GET', 'DELETE']:
7676
kwargs['params'] = prepared_data
7777

7878
return kwargs

setup.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,13 @@
33
setup(
44
name="admitad",
55
packages=['admitad', 'admitad.items'],
6-
version='1.1.1',
6+
version='1.2.0',
77
author='Admitad Dev Bot',
88
author_email='[email protected]',
99
description='A Python wrapper around the Admitad API',
1010
license='MIT',
1111
url='https://github.com/admitad/admitad-python-api',
12-
download_url='https://github.com/admitad/admitad-python-api/tarball/1.1.1',
12+
download_url='https://github.com/admitad/admitad-python-api/tarball/1.2.0',
1313
keywords=['admitad'],
1414
install_requires=['requests>=2.0', 'future'],
1515
tests_require=['nose2', 'responses'],

0 commit comments

Comments
 (0)