Я не могу запустить функцию из сервисного слоя в Django

Я начинающий программист. Я пытаюсь интегрировать PayPal IPN в свой проект, реализовать повторяющиеся платежи по подписке.

Я написал функцию, которая прекрасно работает в консоли, НО Я НЕ ЗНАЮ, КАК ЗАПУСТИТЬ ЭТУ ФУНКЦИЮ, ЧТОБЫ ОНА РАБОТАЛА АВТОМАТИЧЕСКИ. Идеальным вариантом для меня было бы, если бы при появлении нужных мне данных в таблице PayPal функция IPN автоматически запускалась и выполняла нужные мне действия.

Например, когда в таблице появляются такие условия:

ipn_12 = PayPalIPN.objects.filter(payment_status='Completed', txn_type='subscr_payment', txn_id__gt=0, mc_currency='USD', payment_gross__gt=0, signal_1=False, pometka_1=False).order_by("-pk")[:20]

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

Я пробовал такие методы:

def Proverka_1():
if ipn_12.exists():
    return Podpiska()

def Proverka_2():
if ipn_12.count() > 0:
    return Podpiska()

def Proverka_3():
if len(ipn_12) > 0:
    return Podpiska()

Из консоли функция Podpiska() запускается и работает, как ожидалось. Но когда я пишу это в документе python, ничего не работает. Я не знаю, как все это запустить.

Я даже не знаю, как запустить эту функцию из класса на листе views.py

Вот как я пытался запустить функцию Podpiska() из листа views.py :

    class Uspex_otvet(ListView):
        model = Odin.Sutki.AUD_USD_sutki
        template_name = "platezi/podpiska/otveti/uspex_platez.html"
        context_object_name = 'uspex_otvet'
        login_url = reverse_lazy('avtorizazija')

       ipn_12 = PayPalIPN.objects.filter(payment_status='Completed', txn_type='subscr_payment', txn_id__gt=0,
                                              mc_currency='USD', payment_gross__gt=0, signal_1=False,
                                              pometka_1=False).order_by("-pk")[:20]

        if len(ipn_12) > 0:
            Podpiska_2()

В результате функция работает только при перезапуске сервера. При вызове той же страницы "platezi/podpiska/otveti/uspex_platez.html " функция не вызывается и не выполняется.

Вот сама функция:

def plus_days(count):
_date = date.today()
return _date + timedelta(days=count)

def txn_ipn_2(z):
try:
    txn_2 = PayPalIPN.objects.get(txn_id=z.txn_id)
except PayPalIPN.DoesNotExist:
    return False

def Podpiska():
ipn_12 = PayPalIPN.objects.filter(payment_status='Completed', txn_type='subscr_payment', txn_id__gt=0, mc_currency='USD', payment_gross__gt=0, signal_1=False, pometka_1=False).order_by("-pk")[:20]
for z in ipn_12:
    z.pometka_1 = True
    z.save()
    user_z = User.objects.get(id=(int(z.custom)))
    if txn_ipn_2(z) != False:
        if z.payment_gross == 25:
            user_z.paid_until = plus_days(count=31)
            user_z.paypal_subscription_id = 'monthly subscription'
            user_z.save()
        elif z.payment_gross == 72:
            user_z.paid_until = plus_days(count=92)
            user_z.paypal_subscription_id = 'three-month subscription'
            user_z.save()
        elif z.payment_gross == 140:
            user_z.paid_until = plus_days(count=183)
            user_z.paypal_subscription_id = 'semi-annual subscription'
            user_z.save()
        elif z.payment_gross == 250:
            user_z.paid_until = plus_days(count=365)
            user_z.paypal_subscription_id = 'annual subscription'
            user_z.save()
        else:
            print('')
        z.signal_1 = True
        z.save()

Пожалуйста, помогите мне разобраться в этом вопросе.

Вернуться на верх