def test_sanitize_float_value(self): self.assertEqual(Item.sanitize_float_value(1, '', False), 1) self.assertEqual(Item.sanitize_float_value(0, '', False), 0) self.assertEqual(Item.sanitize_float_value('12', '', False), '12') self.assertEqual(Item.sanitize_float_value('3.14', '', False), '3.14') self.assertEqual(Item.sanitize_float_value(3.14, '', False), 3.14) self.assertEqual(Item.sanitize_float_value(None, '', True), None) with self.assertRaises(ValueError): Item.sanitize_float_value(None, '', False) Item.sanitize_float_value('foo', '', False)
class LostOrdersManager(Item): SCOPE = 'manage_lost_orders' 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'), 'website': lambda x: Item.sanitize_integer_value(x, 'website'), 'order_id': lambda x: Item.sanitize_string_value(x, 'order_id'), '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): """ Args: lost_order_id (int) """ request_data = { 'url': self.DELETE_URL, 'lost_order_id': Item.sanitize_id(lost_order_id), } return self.transport.delete().request(**request_data) def create(self, attachments, **kwargs): """ Args: attachments (list of str) campaign (int) website (int) order_id (str) order_date (date) order_price (float) appeal_id (str) comment (str) """ data = Item.sanitize_fields(self.CREATE_FIELDS, **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)