полоса: перебрать все купоны - PullRequest
0 голосов
/ 25 августа 2018

Я использую полосу на моем сайте. Я пытаюсь проверить, соответствует ли введенный пользователем ввод купону, но я не могу понять, как выполнить итерацию по всем купонам (кажется, мне всегда нужно вводить предел, который может варьироваться от 1 до 100): https://stripe.com/docs/api/python#list_coupons

Вот что я пробовал до сих пор, который возвращает только 10 купонов, что по умолчанию:

coupons = stripe.Coupon.list(limit=None)

Ответы [ 2 ]

0 голосов
/ 25 августа 2018

Я никогда не использовал полосу, но в документах сказано, что вы можете использовать атрибут start_after, чтобы определить свое место в списке купонов. Я не знаю, как прочитать идентификаторы купонов из списка, который он возвращает, но вам это понадобится.

# Coupons 0 - 100
coupons_list_1 = stripe.Coupon.list(limit=100)
# Get last coupon in coupons_list_1 and get its ID
last_coupon_id = '$1OFF'
# Coupons 100 - 200
coupons_list_2  = stripe.Coupon.list(starting_after=last_coupon_id, limit=100)

# Check if user inputted coupon is in either list
userinput in coupons_list_1 + coupons_list_2 
0 голосов
/ 25 августа 2018

Читая документацию, похоже, вам нужно разбить результаты на страницы.

По сути, вы запрашиваете для первой страницы N купонов, и если есть еще, чтобы получить, вы запрашиваете следующие N купоны, начиная с последнего из вашего предыдущего запроса.

Глядя на документы, я придумал такой подход:

def get_all_coupons(page_size=100):
    last_coupon = None
    while True:
        response = stripe.Coupon.list(limit=page_size, starting_after=last_coupon)
        coupons = response['data']
        if coupons:
            for coupon in coupons:
                yield coupon
            last_coupon = coupons[-1]
        if not response['has_more']:
            break

get_all_coupons() возвращает генератор, который выдает все купоны, получая 100 за раз.


Примечание : я не проверял это.

...