Я не могу запустить функцию из сервисного слоя в 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()
Пожалуйста, помогите мне разобраться в этом вопросе.