Django 1.8: функция не вызывается в Signal

Я нахожу код, который должен посылать сигнал каждый раз, когда пользователь входит в систему. Однако этого не происходит. Функция get_create_stripe() не вызывается, когда пользователь входит в систему. Кто-нибудь может сказать, что не так? Я работаю в Django 1.8, и весь код здесь.

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

Это потому, что этой функции нет в models.py? Это записано в файл «signals.py», и я не совсем уверен, как Django должен понимать вызов get_create_stripe() из вызова сигнала в этом файле. Это так?

import stripe
from django.conf import settings
from django.contrib.auth.signals import user_logged_in
from .models import UserStripe

stripe.api_key = settings.STRIPE_SECRET_KEY


def get_create_stripe(sender, user, *args, **kwargs):
    new_user_stripe, created = UserStripe.objects.get_or_create(user=user)
    print "hello"
    if created:
        customer = stripe.Customer.create(
            email = str(user.email)
        )
        print customer
        new_user_stripe.stripe_id = customer.id
        new_user_stripe.save()

user_logged_in(get_create_stripe)

person user248884    schedule 01.07.2015    source источник


Ответы (1)


Вам нужно подключить свой сигнальный метод к сигналу.

Что-то типа

from django.dispatch import receiver
from django.contrib.auth.signals import user_logged_in

@receiver(user_logged_in, sender=UserStripe)
def get_create_stripe(sender, user, *args, **kwargs):

РЕДАКТИРОВАТЬ: Кроме того, что это: user_logged_in(get_create_stripe)

Сигналы работают не так. Либо делайте то, что я написал выше, либо делайте так:

user_logged_in.connect(get_create_stripe)
person bad_keypoints    schedule 01.07.2015
comment
Я сделал последний, но он все еще не работает. Что еще я мог попробовать? - person user248884; 01.07.2015
comment
Как ваш пользователь входит в систему? - person bad_keypoints; 01.07.2015
comment
Захожу и выхожу через суперпользователя в админке. У меня есть только один пользователь, который является администратором. - person user248884; 01.07.2015
comment
Вы импортировали свой signals.py файл в __init__.py модуля, в котором он находится? Потому что код, который не загружен, не будет выполняться. - person bad_keypoints; 01.07.2015
comment
@ user248884, пожалуйста, выберите ответ как выбранный ответ, если ваша проблема была решена. - person bad_keypoints; 01.07.2015
comment
Спасибо! Вот что было мисс. :D - person user248884; 01.07.2015
comment
@ user248884 не редактируйте другие ответы, пишите свои. - person Nick Volynkin; 01.07.2015