def get(self, **kwargs): """ Args: website (list of int) campaign (list of int) search (str) reason (int) date_start (date) date_end (date) limit (int) offset (int) """ filtering = { 'filter_by': kwargs, 'available': { 'website': lambda x: Item.sanitize_integer_array(x, 'website', blank=True), 'campaign': lambda x: Item.sanitize_integer_array(x, 'campaign', blank=True), 'search': lambda x: Item.sanitize_string_value(x, 'search', blank=True), 'reason': lambda x: Item.sanitize_integer_value(x, 'reason', blank=True), 'date_start': lambda x: Item.sanitize_date(x, 'date_start', blank=True), 'date_end': lambda x: Item.sanitize_date(x, 'date_end', blank=True), } } return self.transport.get() \ .set_pagination(**kwargs) \ .set_filtering(filtering) \ .request(url=self.URL)
class CouponsBase(Item): ORDERING = ('name', 'date_start', 'date_end', 'rating',) FILTERING = { 'campaign': lambda x: Item.sanitize_integer_array(x, 'campaign', blank=True), 'campaign_category': lambda x: Item.sanitize_integer_array(x, 'campaign_category', blank=True), 'category': lambda x: Item.sanitize_integer_array(x, 'category', blank=True), 'type': lambda x: Item.sanitize_string_value(x, 'type', blank=True), }
def get(self, **kwargs): """ Args: campaign (list of int) language (str) order_by (str) limit (int) offset (int) """ ordering = { 'order_by': kwargs.get('order_by', None), 'available': self.ORDERING } filtering = { 'filter_by': kwargs, 'available': { 'campaign': lambda x: Item.sanitize_integer_array(x, 'campaign', True), 'language': lambda x: Item.sanitize_string_value(x, 'language', 2, 2, True), } } return self.transport.get() \ .set_pagination(**kwargs) \ .set_ordering(ordering) \ .set_filtering(filtering) \ .request(url=self.URL)
def get(self, **kwargs): """ Args: website (list of int) campaign (list of int) search (str) reason (int) date_start (date) date_end (date) limit (int) offset (int) """ filtering = { 'filter_by': kwargs, 'available': { 'website': lambda x: Item.sanitize_integer_array(x, 'website', blank=True ), 'campaign': lambda x: Item.sanitize_integer_array( x, 'campaign', blank=True), 'search': lambda x: Item.sanitize_string_value(x, 'search', blank=True), 'reason': lambda x: Item.sanitize_integer_value(x, 'reason', blank=True), 'date_start': lambda x: Item.sanitize_date(x, 'date_start', blank=True), 'date_end': lambda x: Item.sanitize_date(x, 'date_end', blank=True), } } return self.transport.get() \ .set_pagination(**kwargs) \ .set_filtering(filtering) \ .request(url=self.URL)
def resolve(self, broken_link_ids): """ Args: broken_links_ids (list of int) """ filtering = { 'filter_by': { 'link_id': broken_link_ids }, 'available': { 'link_id': lambda x: Item.sanitize_integer_array(x, 'link_id', blank=True) } } return self.transport.post() \ .set_filtering(filtering) \ .request(url=self.RESOLVE_URL)
def resolve(self, broken_link_ids): """ Args: broken_links_ids (list of int) """ filtering = { 'filter_by': { 'link_id': broken_link_ids }, 'available': { 'link_id': lambda x: Item.sanitize_integer_array(x, 'link_id', blank=True) } } return self.transport.post() \ .set_filtering(filtering) \ .request(url=self.RESOLVE_URL)
class WebsitesManage(Item): """ Manage websites """ SCOPE = 'manage_websites' CREATE_URL = Item.prepare_url('website/create') UPDATE_URL = Item.prepare_url('website/update/%(website_id)s') VERIFY_URL = Item.prepare_url('website/verify/%(website_id)s') DELETE_URL = Item.prepare_url('website/delete/%(website_id)s') CREATE_FIELDS = { 'name': lambda x: Item.sanitize_string_value( x, 'name', max_length=200), 'kind': lambda x: Item.sanitize_string_value( x, 'kind', max_length=20), 'language': lambda x: Item.sanitize_string_value( x, 'language', max_length=2), 'adservice': lambda x: Item.sanitize_integer_value( x, 'adservice', blank=True), 'site_url': lambda x: Item.sanitize_string_value( x, 'site_url', max_length=255), 'description': lambda x: Item.sanitize_string_value( x, 'description', max_length=20000, min_length=100), 'categories': lambda x: Item.sanitize_integer_array( x, 'categories'), 'regions': lambda x: Item.sanitize_string_array( x, 'regions', max_length=2), 'mailing_targeting': lambda x: Item.sanitize_bool_integer_value( x, 'mailing_targeting', blank=True) } UPDATE_FIELDS = { 'name': lambda x: Item.sanitize_string_value( x, 'name', max_length=200, blank=True), 'kind': lambda x: Item.sanitize_string_value( x, 'kind', max_length=20, blank=True), 'language': lambda x: Item.sanitize_string_value( x, 'language', max_length=2, blank=True), 'adservice': lambda x: Item.sanitize_integer_value( x, 'adservice', blank=True), 'site_url': lambda x: Item.sanitize_string_value( x, 'site_url', max_length=255, blank=True), 'description': lambda x: Item.sanitize_string_value( x, 'description', max_length=20000, min_length=100, blank=True), 'categories': lambda x: Item.sanitize_integer_array( x, 'categories', blank=True), 'regions': lambda x: Item.sanitize_string_array( x, 'regions', max_length=2, blank=True), 'mailing_targeting': lambda x: Item.sanitize_bool_integer_value( x, 'mailing_targeting', blank=True) } def create(self, **kwargs): """ Args: name (str) kind (str) language (str) adservice (int) site_url (str) description (str) categories (list of int) regions (list of str) mailing_targeting (bool) """ data = Item.sanitize_fields(self.CREATE_FIELDS, **kwargs) return self.transport.post().set_data(data).request(url=self.CREATE_URL) def update(self, _id, **kwargs): """ Args: _id (int) name (str) kind (str) language (str) adservice (int) site_url (str) description (str) categories (list of int) regions (list of str) mailing_targeting (bool) """ data = Item.sanitize_fields(self.UPDATE_FIELDS, **kwargs) request_data = { 'url': self.UPDATE_URL, 'website_id': Item.sanitize_id(_id) } return self.transport.post().set_data(data).request(**request_data) def verify(self, _id): """ Args: _id (int) """ request_data = { 'url': self.VERIFY_URL, 'website_id': Item.sanitize_id(_id) } return self.transport.post().request(**request_data) def delete(self, _id): """ Args: _id (int) """ request_data = { 'url': self.DELETE_URL, 'website_id': Item.sanitize_id(_id) } return self.transport.post().request(**request_data)
def test_sanitize_integer_array(self): self.assertEqual(Item.sanitize_integer_array(None, '', True), None) self.assertEqual(Item.sanitize_integer_array([], '', True), []) self.assertListEqual(Item.sanitize_integer_array([0, 1, '12'], '', False), [0, 1, '12']) self.assertListEqual(Item.sanitize_integer_array([5, None, '1', None], '', True), [5, None, '1', None]) self.assertListEqual(Item.sanitize_integer_array(5, ''), [5]) with self.assertRaises(ValueError): Item.sanitize_integer_array(None, '', False) Item.sanitize_integer_array([], '', False) Item.sanitize_integer_array([1, 2, 3, None, 5], '', False)