コード例 #1
0
    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)
コード例 #2
0
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),
    }
コード例 #3
0
    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)
コード例 #4
0
    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)
コード例 #5
0
    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)
コード例 #6
0
    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)
コード例 #7
0
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)
コード例 #8
0
ファイル: test_base.py プロジェクト: zavod/admitad-python-api
    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)